Home | History | Annotate | Download | only in x86
      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