1 /* 2 * Compare two 64-bit values. Puts 0, 1, or -1 into the destination 3 * register based on the results of the comparison. 4 */ 5 /* cmp-long vAA, vBB, vCC */ 6 movzbl 2(rPC), %eax # eax <- BB 7 movzbl 3(rPC), %ecx # ecx <- CC 8 GET_VREG_HIGH %eax, %eax # eax <- v[BB+1], BB is clobbered 9 cmpl VREG_HIGH_ADDRESS(%ecx), %eax 10 jl .L${opcode}_smaller 11 jg .L${opcode}_bigger 12 movzbl 2(rPC), %eax # eax <- BB, restore BB 13 GET_VREG %eax, %eax # eax <- v[BB] 14 sub VREG_ADDRESS(%ecx), %eax 15 ja .L${opcode}_bigger 16 jb .L${opcode}_smaller 17 .L${opcode}_finish: 18 SET_VREG %eax, rINST 19 ADVANCE_PC_FETCH_AND_GOTO_NEXT 2 20 21 .L${opcode}_bigger: 22 movl $$1, %eax 23 jmp .L${opcode}_finish 24 25 .L${opcode}_smaller: 26 movl $$-1, %eax 27 jmp .L${opcode}_finish 28