11452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee    /*
21d011d9306fd4ff57d72411775d415a86f5ed398Bill Buzbee     * Generic two-operand compare-and-branch operation.  Provide a "condition"
31d011d9306fd4ff57d72411775d415a86f5ed398Bill Buzbee     * fragment that specifies the comparison to perform.
41452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee     *
51452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee     * For: if-eq, if-ne, if-lt, if-ge, if-gt, if-le
61452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee     */
71452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee    /* if-cmp vA, vB, +CCCC */
81452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee    mov     r1, rINST, lsr #12          @ r1<- B
91452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee    ubfx    r0, rINST, #8, #4           @ r0<- A
101452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee    GET_VREG r3, r1                     @ r3<- vB
111d011d9306fd4ff57d72411775d415a86f5ed398Bill Buzbee    GET_VREG r0, r0                     @ r0<- vA
12fd522f9039befff986701ff05054ffdd1be1dd33Bill Buzbee    FETCH_S rINST, 1                    @ rINST<- branch offset, in code units
131d011d9306fd4ff57d72411775d415a86f5ed398Bill Buzbee    cmp     r0, r3                      @ compare (vA, vB)
141d011d9306fd4ff57d72411775d415a86f5ed398Bill Buzbee    b${condition} MterpCommonTakenBranchNoFlags
151d011d9306fd4ff57d72411775d415a86f5ed398Bill Buzbee    cmp     rPROFILE, #JIT_CHECK_OSR    @ possible OSR re-entry?
161d011d9306fd4ff57d72411775d415a86f5ed398Bill Buzbee    beq     .L_check_not_taken_osr
171d011d9306fd4ff57d72411775d415a86f5ed398Bill Buzbee    FETCH_ADVANCE_INST 2
18fd522f9039befff986701ff05054ffdd1be1dd33Bill Buzbee    GET_INST_OPCODE ip                  @ extract opcode from rINST
19fd522f9039befff986701ff05054ffdd1be1dd33Bill Buzbee    GOTO_OPCODE ip                      @ jump to next instruction
20