Revision 9940a96b

b/tcg/arm/tcg-target.h
68 68
#define TCG_TARGET_HAS_andc_i32
69 69
// #define TCG_TARGET_HAS_orc_i32
70 70
// #define TCG_TARGET_HAS_eqv_i32
71
// #define TCG_TARGET_HAS_nand_i32
71 72

  
72 73
#define TCG_TARGET_HAS_GUEST_BASE
73 74

  
b/tcg/i386/tcg-target.h
58 58
// #define TCG_TARGET_HAS_andc_i32
59 59
// #define TCG_TARGET_HAS_orc_i32
60 60
// #define TCG_TARGET_HAS_eqv_i32
61
// #define TCG_TARGET_HAS_nand_i32
61 62

  
62 63
#define TCG_TARGET_HAS_GUEST_BASE
63 64

  
b/tcg/mips/tcg-target.h
88 88
#undef TCG_TARGET_HAS_andc_i32
89 89
#undef TCG_TARGET_HAS_orc_i32
90 90
#undef TCG_TARGET_HAS_eqv_i32
91
#undef TCG_TARGET_HAS_nand_i32
91 92

  
92 93
/* optional instructions automatically implemented */
93 94
#undef TCG_TARGET_HAS_neg_i32      /* sub  rd, zero, rt   */
b/tcg/ppc/tcg-target.h
90 90
#define TCG_TARGET_HAS_andc_i32
91 91
#define TCG_TARGET_HAS_orc_i32
92 92
/* #define TCG_TARGET_HAS_eqv_i32 */
93
/* #define TCG_TARGET_HAS_nand_i32 */
93 94

  
94 95
#define TCG_AREG0 TCG_REG_R27
95 96

  
b/tcg/ppc64/tcg-target.h
81 81
/* #define TCG_TARGET_HAS_andc_i32 */
82 82
/* #define TCG_TARGET_HAS_orc_i32 */
83 83
/* #define TCG_TARGET_HAS_eqv_i32 */
84
/* #define TCG_TARGET_HAS_nand_i32 */
84 85

  
85 86
#define TCG_TARGET_HAS_div_i64
86 87
/* #define TCG_TARGET_HAS_rot_i64 */
......
98 99
/* #define TCG_TARGET_HAS_andc_i64 */
99 100
/* #define TCG_TARGET_HAS_orc_i64 */
100 101
/* #define TCG_TARGET_HAS_eqv_i64 */
102
/* #define TCG_TARGET_HAS_nand_i64 */
101 103

  
102 104
#define TCG_AREG0 TCG_REG_R27
103 105

  
b/tcg/s390/tcg-target.h
60 60
// #define TCG_TARGET_HAS_andc_i32
61 61
// #define TCG_TARGET_HAS_orc_i32
62 62
// #define TCG_TARGET_HAS_eqv_i32
63
// #define TCG_TARGET_HAS_nand_i32
63 64

  
64 65
// #define TCG_TARGET_HAS_div_i64
65 66
// #define TCG_TARGET_HAS_rot_i64
......
77 78
// #define TCG_TARGET_HAS_andc_i64
78 79
// #define TCG_TARGET_HAS_orc_i64
79 80
// #define TCG_TARGET_HAS_eqv_i64
81
// #define TCG_TARGET_HAS_nand_i64
80 82

  
81 83
/* used for function call generation */
82 84
#define TCG_REG_CALL_STACK		TCG_REG_R15
b/tcg/sparc/tcg-target.h
101 101
#define TCG_TARGET_HAS_andc_i32
102 102
#define TCG_TARGET_HAS_orc_i32
103 103
// #define TCG_TARGET_HAS_eqv_i32
104
// #define TCG_TARGET_HAS_nand_i32
104 105

  
105 106
#if TCG_TARGET_REG_BITS == 64
106 107
#define TCG_TARGET_HAS_div_i64
......
119 120
#define TCG_TARGET_HAS_andc_i64
120 121
#define TCG_TARGET_HAS_orc_i64
121 122
// #define TCG_TARGET_HAS_eqv_i64
123
// #define TCG_TARGET_HAS_nand_i64
122 124
#endif
123 125

  
124 126
/* Note: must be synced with dyngen-exec.h */
b/tcg/tcg-op.h
1763 1763

  
1764 1764
static inline void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2)
1765 1765
{
1766
#ifdef TCG_TARGET_HAS_nand_i32
1767
    tcg_gen_op3_i32(INDEX_op_nand_i32, ret, arg1, arg2);
1768
#else
1766 1769
    tcg_gen_and_i32(ret, arg1, arg2);
1767 1770
    tcg_gen_not_i32(ret, ret);
1771
#endif
1768 1772
}
1769 1773

  
1770 1774
static inline void tcg_gen_nand_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2)
1771 1775
{
1776
#ifdef TCG_TARGET_HAS_nand_i64
1777
    tcg_gen_op3_i64(INDEX_op_nand_i64, ret, arg1, arg2);
1778
#elif defined(TCG_TARGET_HAS_nand_i32) && TCG_TARGET_REG_BITS == 32
1779
    tcg_gen_nand_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2));
1780
    tcg_gen_nand_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2));
1781
#else
1772 1782
    tcg_gen_and_i64(ret, arg1, arg2);
1773 1783
    tcg_gen_not_i64(ret, ret);
1784
#endif
1774 1785
}
1775 1786

  
1776 1787
static inline void tcg_gen_nor_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2)
b/tcg/tcg-opc.h
119 119
#ifdef TCG_TARGET_HAS_eqv_i32
120 120
DEF2(eqv_i32, 1, 2, 0, 0)
121 121
#endif
122
#ifdef TCG_TARGET_HAS_nand_i32
123
DEF2(nand_i32, 1, 2, 0, 0)
124
#endif
122 125

  
123 126
#if TCG_TARGET_REG_BITS == 64
124 127
DEF2(mov_i64, 1, 1, 0, 0)
......
205 208
#ifdef TCG_TARGET_HAS_eqv_i64
206 209
DEF2(eqv_i64, 1, 2, 0, 0)
207 210
#endif
211
#ifdef TCG_TARGET_HAS_nand_i64
212
DEF2(nand_i64, 1, 2, 0, 0)
213
#endif
208 214
#endif
209 215

  
210 216
/* QEMU specific */
b/tcg/x86_64/tcg-target.h
86 86
// #define TCG_TARGET_HAS_orc_i64
87 87
// #define TCG_TARGET_HAS_eqv_i32
88 88
// #define TCG_TARGET_HAS_eqv_i64
89
// #define TCG_TARGET_HAS_nand_i32
90
// #define TCG_TARGET_HAS_nand_i64
89 91

  
90 92
#define TCG_TARGET_HAS_GUEST_BASE
91 93

  

Also available in: Unified diff