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());