src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
Print this page
@@ -2688,23 +2688,18 @@
op->fpu_pop_count() > 0, op->fpu_pop_count() > 1);
}
} else {
assert(code == lir_cmp_l2i, "check");
#ifdef _LP64
+ Label done;
Register dest = dst->as_register();
- __ xorptr(dest, dest);
- Label high, done;
__ cmpptr(left->as_register_lo(), right->as_register_lo());
- __ jcc(Assembler::equal, done);
- __ jcc(Assembler::greater, high);
- __ decrement(dest);
- __ jmp(done);
- __ bind(high);
- __ increment(dest);
-
+ __ movl(dest, -1);
+ __ jccb(Assembler::less, done);
+ __ set_byte_if_not_zero(dest);
+ __ movzbl(dest, dest);
__ bind(done);
-
#else
__ lcmp2int(left->as_register_hi(),
left->as_register_lo(),
right->as_register_hi(),
right->as_register_lo());