< prev index next >

src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp

Print this page

        

@@ -2664,12 +2664,20 @@
       __ cmpptr(xlo, opr2->as_register_lo());
 #else
       // cpu register - cpu register
       Register ylo = opr2->as_register_lo();
       Register yhi = opr2->as_register_hi();
+      Register tmp1_lo = op->tmp1_opr()->as_register_lo();
+      Register tmp1_hi = op->tmp1_opr()->as_register_hi();
+
+      move_regs(xlo, tmp1_lo);
+      move_regs(xhi, tmp1_hi);
       __ subl(xlo, ylo);
       __ sbbl(xhi, yhi);
+      move_regs(tmp1_lo, xlo);
+      move_regs(tmp1_hi, xhi);
+
       if (condition == lir_cond_equal || condition == lir_cond_notEqual) {
         __ orl(xhi, xlo);
       }
 #endif // _LP64
     } else if (opr2->is_constant()) {
< prev index next >