+ M_BNE(0);
+ codegen_addreference(cd, iptr->dst.block);
+ break;
+
+ case ICMD_IF_LCMPLT: /* ..., value, value ==> ... */
+ /* op1 = target JavaVM pc */
+
+ /* high compare: x=0(ifLT) ; x=1(ifEQ) ; x=2(ifGT) */
+ s1 = emit_load_s1_high(jd, iptr, REG_ITMP1);
+ s2 = emit_load_s2_high(jd, iptr, REG_ITMP2);
+ M_CMP(s1, s2);
+ M_EOR(REG_ITMP3, REG_ITMP3, REG_ITMP3);
+ M_MOVGT_IMM(2, REG_ITMP3);
+ M_MOVEQ_IMM(1, REG_ITMP3);
+
+ /* low compare: x=x-1(ifLO) */
+ s1 = emit_load_s1_low(jd, iptr, REG_ITMP1);
+ s2 = emit_load_s2_low(jd, iptr, REG_ITMP2);
+ M_CMP(s1, s2);
+ M_SUBLO_IMM(REG_ITMP3, REG_ITMP3, 1);
+
+ /* branch if (x LT 1) */
+ M_CMP_IMM(REG_ITMP3, 1);
+ M_BLT(0);
+ codegen_addreference(cd, iptr->dst.block);
+ break;
+
+ case ICMD_IF_LCMPLE: /* ..., value, value ==> ... */
+ /* op1 = target JavaVM pc */
+
+ /* high compare: x=0(ifLT) ; x=1(ifEQ) ; x=2(ifGT) */
+ s1 = emit_load_s1_high(jd, iptr, REG_ITMP1);
+ s2 = emit_load_s2_high(jd, iptr, REG_ITMP2);
+ M_CMP(s1, s2);
+ M_EOR(REG_ITMP3, REG_ITMP3, REG_ITMP3);
+ M_MOVGT_IMM(2, REG_ITMP3);
+ M_MOVEQ_IMM(1, REG_ITMP3);
+
+ /* low compare: x=x-1(ifLO) */
+ s1 = emit_load_s1_low(jd, iptr, REG_ITMP1);
+ s2 = emit_load_s2_low(jd, iptr, REG_ITMP2);
+ M_CMP(s1, s2);
+ M_ADDHI_IMM(REG_ITMP3, REG_ITMP3, 1);
+
+ /* branch if (x LE 1) */
+ M_CMP_IMM(REG_ITMP3, 1);
+ M_BLE(0);
+ codegen_addreference(cd, iptr->dst.block);
+ break;
+
+ case ICMD_IF_LCMPGT: /* ..., value, value ==> ... */
+ /* op1 = target JavaVM pc */
+
+ /* high compare: x=0(ifLT) ; x=1(ifEQ) ; x=2(ifGT) */
+ s1 = emit_load_s1_high(jd, iptr, REG_ITMP1);
+ s2 = emit_load_s2_high(jd, iptr, REG_ITMP2);
+ M_CMP(s1, s2);
+ M_EOR(REG_ITMP3, REG_ITMP3, REG_ITMP3);
+ M_MOVGT_IMM(2, REG_ITMP3);
+ M_MOVEQ_IMM(1, REG_ITMP3);
+
+ /* low compare: x=x-1(ifLO) */
+ s1 = emit_load_s1_low(jd, iptr, REG_ITMP1);
+ s2 = emit_load_s2_low(jd, iptr, REG_ITMP2);
+ M_CMP(s1, s2);
+ M_ADDHI_IMM(REG_ITMP3, REG_ITMP3, 1);
+
+ /* branch if (x GT 1) */
+ M_CMP_IMM(REG_ITMP3, 1);
+ M_BGT(0);
+ codegen_addreference(cd, iptr->dst.block);
+ break;
+
+ case ICMD_IF_LCMPGE: /* ..., value, value ==> ... */
+ /* op1 = target JavaVM pc */
+
+ /* high compare: x=0(ifLT) ; x=1(ifEQ) ; x=2(ifGT) */
+ s1 = emit_load_s1_high(jd, iptr, REG_ITMP1);
+ s2 = emit_load_s2_high(jd, iptr, REG_ITMP2);
+ M_CMP(s1, s2);
+ M_EOR(REG_ITMP3, REG_ITMP3, REG_ITMP3);
+ M_MOVGT_IMM(2, REG_ITMP3);
+ M_MOVEQ_IMM(1, REG_ITMP3);
+
+ /* low compare: x=x-1(ifLO) */
+ s1 = emit_load_s1_low(jd, iptr, REG_ITMP1);
+ s2 = emit_load_s2_low(jd, iptr, REG_ITMP2);
+ M_CMP(s1, s2);
+ M_SUBLO_IMM(REG_ITMP3, REG_ITMP3, 1);
+
+ /* branch if (x GE 1) */
+ M_CMP_IMM(REG_ITMP3, 1);
+ M_BGE(0);