Mercurial > hg > graal-jvmci-8
comparison src/cpu/x86/vm/c1_LIRAssembler_x86.cpp @ 1369:0a43776437b6
6942223: c1 64 bit fixes
Summary: This fixes lir_cmp_l2i on x64 and sparc 64bit, and the debug info generation.
Reviewed-by: never
author | iveresov |
---|---|
date | Thu, 08 Apr 2010 12:13:07 -0700 |
parents | fc2c71045ada |
children | 9f5b60a14736 |
comparison
equal
deleted
inserted
replaced
1368:93767e6a2dfd | 1369:0a43776437b6 |
---|---|
2688 op->fpu_pop_count() > 0, op->fpu_pop_count() > 1); | 2688 op->fpu_pop_count() > 0, op->fpu_pop_count() > 1); |
2689 } | 2689 } |
2690 } else { | 2690 } else { |
2691 assert(code == lir_cmp_l2i, "check"); | 2691 assert(code == lir_cmp_l2i, "check"); |
2692 #ifdef _LP64 | 2692 #ifdef _LP64 |
2693 Register dest = dst->as_register(); | 2693 Label done; |
2694 __ xorptr(dest, dest); | 2694 Register dest = dst->as_register(); |
2695 Label high, done; | 2695 __ cmpptr(left->as_register_lo(), right->as_register_lo()); |
2696 __ cmpptr(left->as_register_lo(), right->as_register_lo()); | 2696 __ movl(dest, -1); |
2697 __ jcc(Assembler::equal, done); | 2697 __ jccb(Assembler::less, done); |
2698 __ jcc(Assembler::greater, high); | 2698 __ set_byte_if_not_zero(dest); |
2699 __ decrement(dest); | 2699 __ movzbl(dest, dest); |
2700 __ jmp(done); | 2700 __ bind(done); |
2701 __ bind(high); | |
2702 __ increment(dest); | |
2703 | |
2704 __ bind(done); | |
2705 | |
2706 #else | 2701 #else |
2707 __ lcmp2int(left->as_register_hi(), | 2702 __ lcmp2int(left->as_register_hi(), |
2708 left->as_register_lo(), | 2703 left->as_register_lo(), |
2709 right->as_register_hi(), | 2704 right->as_register_hi(), |
2710 right->as_register_lo()); | 2705 right->as_register_lo()); |