Revision 3b6dac34 tcg/ppc/tcg-target.c
b/tcg/ppc/tcg-target.c | ||
---|---|---|
437 | 437 |
[TCG_COND_GTU] = BC | BI (7, CR_GT) | BO_COND_TRUE, |
438 | 438 |
}; |
439 | 439 |
|
440 |
static void tcg_out_mov(TCGContext *s, int ret, int arg) |
|
440 |
static void tcg_out_mov(TCGContext *s, TCGType type, int ret, int arg)
|
|
441 | 441 |
{ |
442 | 442 |
tcg_out32 (s, OR | SAB (arg, ret, arg)); |
443 | 443 |
} |
... | ... | |
591 | 591 |
|
592 | 592 |
/* slow path */ |
593 | 593 |
#if TARGET_LONG_BITS == 32 |
594 |
tcg_out_mov (s, 3, addr_reg); |
|
594 |
tcg_out_mov (s, TCG_TYPE_I32, 3, addr_reg);
|
|
595 | 595 |
tcg_out_movi (s, TCG_TYPE_I32, 4, mem_index); |
596 | 596 |
#else |
597 |
tcg_out_mov (s, 3, addr_reg2); |
|
598 |
tcg_out_mov (s, 4, addr_reg); |
|
597 |
tcg_out_mov (s, TCG_TYPE_I32, 3, addr_reg2);
|
|
598 |
tcg_out_mov (s, TCG_TYPE_I32, 4, addr_reg);
|
|
599 | 599 |
tcg_out_movi (s, TCG_TYPE_I32, 5, mem_index); |
600 | 600 |
#endif |
601 | 601 |
|
... | ... | |
611 | 611 |
case 1: |
612 | 612 |
case 2: |
613 | 613 |
if (data_reg != 3) |
614 |
tcg_out_mov (s, data_reg, 3); |
|
614 |
tcg_out_mov (s, TCG_TYPE_I32, data_reg, 3);
|
|
615 | 615 |
break; |
616 | 616 |
case 3: |
617 | 617 |
if (data_reg == 3) { |
618 | 618 |
if (data_reg2 == 4) { |
619 |
tcg_out_mov (s, 0, 4); |
|
620 |
tcg_out_mov (s, 4, 3); |
|
621 |
tcg_out_mov (s, 3, 0); |
|
619 |
tcg_out_mov (s, TCG_TYPE_I32, 0, 4);
|
|
620 |
tcg_out_mov (s, TCG_TYPE_I32, 4, 3);
|
|
621 |
tcg_out_mov (s, TCG_TYPE_I32, 3, 0);
|
|
622 | 622 |
} |
623 | 623 |
else { |
624 |
tcg_out_mov (s, data_reg2, 3); |
|
625 |
tcg_out_mov (s, 3, 4); |
|
624 |
tcg_out_mov (s, TCG_TYPE_I32, data_reg2, 3);
|
|
625 |
tcg_out_mov (s, TCG_TYPE_I32, 3, 4);
|
|
626 | 626 |
} |
627 | 627 |
} |
628 | 628 |
else { |
629 |
if (data_reg != 4) tcg_out_mov (s, data_reg, 4); |
|
630 |
if (data_reg2 != 3) tcg_out_mov (s, data_reg2, 3); |
|
629 |
if (data_reg != 4) tcg_out_mov (s, TCG_TYPE_I32, data_reg, 4);
|
|
630 |
if (data_reg2 != 3) tcg_out_mov (s, TCG_TYPE_I32, data_reg2, 3);
|
|
631 | 631 |
} |
632 | 632 |
break; |
633 | 633 |
} |
... | ... | |
705 | 705 |
if (r0 == data_reg2) { |
706 | 706 |
tcg_out32 (s, LWZ | RT (0) | RA (r0)); |
707 | 707 |
tcg_out32 (s, LWZ | RT (data_reg) | RA (r0) | 4); |
708 |
tcg_out_mov (s, data_reg2, 0); |
|
708 |
tcg_out_mov (s, TCG_TYPE_I32, data_reg2, 0);
|
|
709 | 709 |
} |
710 | 710 |
else { |
711 | 711 |
tcg_out32 (s, LWZ | RT (data_reg2) | RA (r0)); |
... | ... | |
787 | 787 |
|
788 | 788 |
/* slow path */ |
789 | 789 |
#if TARGET_LONG_BITS == 32 |
790 |
tcg_out_mov (s, 3, addr_reg); |
|
790 |
tcg_out_mov (s, TCG_TYPE_I32, 3, addr_reg);
|
|
791 | 791 |
ir = 4; |
792 | 792 |
#else |
793 |
tcg_out_mov (s, 3, addr_reg2); |
|
794 |
tcg_out_mov (s, 4, addr_reg); |
|
793 |
tcg_out_mov (s, TCG_TYPE_I32, 3, addr_reg2);
|
|
794 |
tcg_out_mov (s, TCG_TYPE_I32, 4, addr_reg);
|
|
795 | 795 |
#ifdef TCG_TARGET_CALL_ALIGN_ARGS |
796 | 796 |
ir = 5; |
797 | 797 |
#else |
... | ... | |
817 | 817 |
| ME (31))); |
818 | 818 |
break; |
819 | 819 |
case 2: |
820 |
tcg_out_mov (s, ir, data_reg); |
|
820 |
tcg_out_mov (s, TCG_TYPE_I32, ir, data_reg);
|
|
821 | 821 |
break; |
822 | 822 |
case 3: |
823 | 823 |
#ifdef TCG_TARGET_CALL_ALIGN_ARGS |
824 | 824 |
ir = 5; |
825 | 825 |
#endif |
826 |
tcg_out_mov (s, ir++, data_reg2); |
|
827 |
tcg_out_mov (s, ir, data_reg); |
|
826 |
tcg_out_mov (s, TCG_TYPE_I32, ir++, data_reg2);
|
|
827 |
tcg_out_mov (s, TCG_TYPE_I32, ir, data_reg);
|
|
828 | 828 |
break; |
829 | 829 |
} |
830 | 830 |
ir++; |
... | ... | |
1526 | 1526 |
if (args[0] == args[2] || args[0] == args[3]) { |
1527 | 1527 |
tcg_out32 (s, MULLW | TAB (0, args[2], args[3])); |
1528 | 1528 |
tcg_out32 (s, MULHWU | TAB (args[1], args[2], args[3])); |
1529 |
tcg_out_mov (s, args[0], 0); |
|
1529 |
tcg_out_mov (s, TCG_TYPE_I32, args[0], 0);
|
|
1530 | 1530 |
} |
1531 | 1531 |
else { |
1532 | 1532 |
tcg_out32 (s, MULLW | TAB (args[0], args[2], args[3])); |
... | ... | |
1584 | 1584 |
case INDEX_op_rotr_i32: |
1585 | 1585 |
if (const_args[2]) { |
1586 | 1586 |
if (!args[2]) { |
1587 |
tcg_out_mov (s, args[0], args[1]); |
|
1587 |
tcg_out_mov (s, TCG_TYPE_I32, args[0], args[1]);
|
|
1588 | 1588 |
} |
1589 | 1589 |
else { |
1590 | 1590 |
tcg_out32 (s, RLWINM |
... | ... | |
1612 | 1612 |
if (args[0] == args[3] || args[0] == args[5]) { |
1613 | 1613 |
tcg_out32 (s, ADDC | TAB (0, args[2], args[4])); |
1614 | 1614 |
tcg_out32 (s, ADDE | TAB (args[1], args[3], args[5])); |
1615 |
tcg_out_mov (s, args[0], 0); |
|
1615 |
tcg_out_mov (s, TCG_TYPE_I32, args[0], 0);
|
|
1616 | 1616 |
} |
1617 | 1617 |
else { |
1618 | 1618 |
tcg_out32 (s, ADDC | TAB (args[0], args[2], args[4])); |
... | ... | |
1623 | 1623 |
if (args[0] == args[3] || args[0] == args[5]) { |
1624 | 1624 |
tcg_out32 (s, SUBFC | TAB (0, args[4], args[2])); |
1625 | 1625 |
tcg_out32 (s, SUBFE | TAB (args[1], args[5], args[3])); |
1626 |
tcg_out_mov (s, args[0], 0); |
|
1626 |
tcg_out_mov (s, TCG_TYPE_I32, args[0], 0);
|
|
1627 | 1627 |
} |
1628 | 1628 |
else { |
1629 | 1629 |
tcg_out32 (s, SUBFC | TAB (args[0], args[4], args[2])); |
... | ... | |
1782 | 1782 |
); |
1783 | 1783 |
|
1784 | 1784 |
if (!a0) { |
1785 |
tcg_out_mov (s, args[0], a0); |
|
1785 |
tcg_out_mov (s, TCG_TYPE_I32, args[0], a0);
|
|
1786 | 1786 |
} |
1787 | 1787 |
} |
1788 | 1788 |
break; |
Also available in: Unified diff