Merge "ART: Ensure X86 OpRegCopyWide preserves src"
diff --git a/compiler/dex/quick/x86/int_x86.cc b/compiler/dex/quick/x86/int_x86.cc
index b71a2ce..315d580 100644
--- a/compiler/dex/quick/x86/int_x86.cc
+++ b/compiler/dex/quick/x86/int_x86.cc
@@ -142,8 +142,10 @@
     } else {
       if (src_fp) {
         NewLIR2(kX86MovdrxRR, r_dest.GetLowReg(), r_src.GetReg());
-        NewLIR2(kX86PsrlqRI, r_src.GetReg(), 32);
-        NewLIR2(kX86MovdrxRR, r_dest.GetHighReg(), r_src.GetReg());
+        RegStorage temp_reg = AllocTempDouble();
+        NewLIR2(kX86MovsdRR, temp_reg.GetReg(), r_src.GetReg());
+        NewLIR2(kX86PsrlqRI, temp_reg.GetReg(), 32);
+        NewLIR2(kX86MovdrxRR, r_dest.GetHighReg(), temp_reg.GetReg());
       } else {
         DCHECK(r_dest.IsPair());
         DCHECK(r_src.IsPair());