1/*
2 * Generic two-operand compare-and-branch operation.  Provide a "revcmp"
3 * fragment that specifies the *reverse* comparison to perform, e.g.
4 * for "if-le" you would use "gt".
5 *
6 * For: if-eq, if-ne, if-lt, if-ge, if-gt, if-le
7 */
8    /* if-cmp vA, vB, +CCCC */
9    movzx   rINSTbl, %ecx                   # ecx <- A+
10    andb    $$0xf, %cl                      # ecx <- A
11    GET_VREG %eax, %ecx                     # eax <- vA
12    sarl    $$4, rINST                      # rINST <- B
13    cmpl    VREG_ADDRESS(rINST), %eax       # compare (vA, vB)
14    j${revcmp}   1f
15    movswl  2(rPC), rINST                   # Get signed branch offset
16    testl   rINST, rINST
17    jmp     MterpCommonTakenBranch
181:
19    cmpw    $$JIT_CHECK_OSR, rPROFILE
20    je      .L_check_not_taken_osr
21    ADVANCE_PC_FETCH_AND_GOTO_NEXT 2
22