Revision 023e77f8 tcg/arm/tcg-target.c

b/tcg/arm/tcg-target.c
1512 1512
        break;
1513 1513

  
1514 1514
    case INDEX_op_brcond_i32:
1515
        tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0,
1516
                        args[0], args[1], SHIFT_IMM_LSL(0));
1515
        if (const_args[1]) {
1516
            int rot;
1517
            rot = encode_imm(args[1]);
1518
            tcg_out_dat_imm(s, COND_AL, ARITH_CMP,
1519
                            0, args[0], rotl(args[1], rot) | (rot << 7));
1520
        } else {
1521
            tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0,
1522
                            args[0], args[1], SHIFT_IMM_LSL(0));
1523
        }
1517 1524
        tcg_out_goto_label(s, tcg_cond_to_arm_cond[args[2]], args[3]);
1518 1525
        break;
1519 1526
    case INDEX_op_brcond2_i32:
......
1532 1539
        tcg_out_goto_label(s, tcg_cond_to_arm_cond[args[4]], args[5]);
1533 1540
        break;
1534 1541
    case INDEX_op_setcond_i32:
1535
        tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0,
1536
                        args[1], args[2], SHIFT_IMM_LSL(0));
1542
        if (const_args[2]) {
1543
            int rot;
1544
            rot = encode_imm(args[2]);
1545
            tcg_out_dat_imm(s, COND_AL, ARITH_CMP,
1546
                            0, args[1], rotl(args[2], rot) | (rot << 7));
1547
        } else {
1548
            tcg_out_dat_reg(s, COND_AL, ARITH_CMP, 0,
1549
                            args[1], args[2], SHIFT_IMM_LSL(0));
1550
        }
1537 1551
        tcg_out_dat_imm(s, tcg_cond_to_arm_cond[args[3]],
1538 1552
                        ARITH_MOV, args[0], 0, 1);
1539 1553
        tcg_out_dat_imm(s, tcg_cond_to_arm_cond[tcg_invert_cond(args[3])],
......
1647 1661
    { INDEX_op_shr_i32, { "r", "r", "ri" } },
1648 1662
    { INDEX_op_sar_i32, { "r", "r", "ri" } },
1649 1663

  
1650
    { INDEX_op_brcond_i32, { "r", "r" } },
1651
    { INDEX_op_setcond_i32, { "r", "r", "r" } },
1664
    { INDEX_op_brcond_i32, { "r", "rI" } },
1665
    { INDEX_op_setcond_i32, { "r", "r", "rI" } },
1652 1666

  
1653 1667
    /* TODO: "r", "r", "r", "r", "ri", "ri" */
1654 1668
    { INDEX_op_add2_i32, { "r", "r", "r", "r", "r", "r" } },

Also available in: Unified diff