Revision 148bdd23
b/tcg/ppc64/tcg-target.c | ||
---|---|---|
329 | 329 |
#define MULLI OPCD( 7) |
330 | 330 |
#define CMPLI OPCD( 10) |
331 | 331 |
#define CMPI OPCD( 11) |
332 |
#define SUBFIC OPCD( 8) |
|
332 | 333 |
|
333 | 334 |
#define LWZU OPCD( 33) |
334 | 335 |
#define STWU OPCD( 37) |
... | ... | |
1314 | 1315 |
break; |
1315 | 1316 |
case INDEX_op_sub_i32: |
1316 | 1317 |
a0 = args[0], a1 = args[1], a2 = args[2]; |
1317 |
if (const_args[2]) { |
|
1318 |
if (const_args[1]) { |
|
1319 |
if (const_args[2]) { |
|
1320 |
tcg_out_movi(s, TCG_TYPE_I32, a0, a1 - a2); |
|
1321 |
} else { |
|
1322 |
tcg_out32(s, SUBFIC | TAI(a0, a2, a1)); |
|
1323 |
} |
|
1324 |
} else if (const_args[2]) { |
|
1318 | 1325 |
a2 = -a2; |
1319 | 1326 |
goto do_addi_32; |
1320 | 1327 |
} else { |
... | ... | |
1483 | 1490 |
break; |
1484 | 1491 |
case INDEX_op_sub_i64: |
1485 | 1492 |
a0 = args[0], a1 = args[1], a2 = args[2]; |
1486 |
if (const_args[2]) { |
|
1493 |
if (const_args[1]) { |
|
1494 |
if (const_args[2]) { |
|
1495 |
tcg_out_movi(s, TCG_TYPE_I64, a0, a1 - a2); |
|
1496 |
} else { |
|
1497 |
tcg_out32(s, SUBFIC | TAI(a0, a2, a1)); |
|
1498 |
} |
|
1499 |
} else if (const_args[2]) { |
|
1487 | 1500 |
a2 = -a2; |
1488 | 1501 |
goto do_addi_64; |
1489 | 1502 |
} else { |
... | ... | |
1639 | 1652 |
{ INDEX_op_divu_i32, { "r", "r", "r" } }, |
1640 | 1653 |
{ INDEX_op_rem_i32, { "r", "r", "r" } }, |
1641 | 1654 |
{ INDEX_op_remu_i32, { "r", "r", "r" } }, |
1642 |
{ INDEX_op_sub_i32, { "r", "r", "ri" } }, |
|
1655 |
{ INDEX_op_sub_i32, { "r", "rI", "ri" } },
|
|
1643 | 1656 |
{ INDEX_op_and_i32, { "r", "r", "ri" } }, |
1644 | 1657 |
{ INDEX_op_or_i32, { "r", "r", "ri" } }, |
1645 | 1658 |
{ INDEX_op_xor_i32, { "r", "r", "ri" } }, |
... | ... | |
1655 | 1668 |
{ INDEX_op_not_i32, { "r", "r" } }, |
1656 | 1669 |
|
1657 | 1670 |
{ INDEX_op_add_i64, { "r", "r", "rT" } }, |
1658 |
{ INDEX_op_sub_i64, { "r", "r", "rT" } }, |
|
1671 |
{ INDEX_op_sub_i64, { "r", "rI", "rT" } },
|
|
1659 | 1672 |
{ INDEX_op_and_i64, { "r", "r", "rU" } }, |
1660 | 1673 |
{ INDEX_op_or_i64, { "r", "r", "rU" } }, |
1661 | 1674 |
{ INDEX_op_xor_i64, { "r", "r", "rU" } }, |
Also available in: Unified diff