Revision 023e77f8
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