/* * Compare two 64-bit values. Puts 0, 1, or -1 into the destination * register based on the results of the comparison. */ /* cmp-long vAA, vBB, vCC */ movzbl 2(rPC), %eax # eax <- BB movzbl 3(rPC), %ecx # ecx <- CC GET_VREG_HIGH %eax, %eax # eax <- v[BB+1], BB is clobbered cmpl VREG_HIGH_ADDRESS(%ecx), %eax jl .L${opcode}_smaller jg .L${opcode}_bigger movzbl 2(rPC), %eax # eax <- BB, restore BB GET_VREG %eax, %eax # eax <- v[BB] sub VREG_ADDRESS(%ecx), %eax ja .L${opcode}_bigger jb .L${opcode}_smaller .L${opcode}_finish: SET_VREG %eax, rINST ADVANCE_PC_FETCH_AND_GOTO_NEXT 2 .L${opcode}_bigger: movl $$1, %eax jmp .L${opcode}_finish .L${opcode}_smaller: movl $$-1, %eax jmp .L${opcode}_finish