Revision 8d625cf1

b/tcg/README
213 213

  
214 214
* eqv_i32/i64 t0, t1, t2
215 215

  
216
t0=~(t1^t2)
216
t0=~(t1^t2), or equivalently, t0=t1^~t2
217 217

  
218 218
* nand_i32/i64 t0, t1, t2
219 219

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

  
71 72
#define TCG_TARGET_HAS_GUEST_BASE
72 73

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

  
61 62
#define TCG_TARGET_HAS_GUEST_BASE
62 63

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

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

  
93 94
#define TCG_AREG0 TCG_REG_R27
94 95

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

  
84 85
#define TCG_TARGET_HAS_div_i64
85 86
/* #define TCG_TARGET_HAS_rot_i64 */
......
96 97
#define TCG_TARGET_HAS_neg_i64
97 98
/* #define TCG_TARGET_HAS_andc_i64 */
98 99
/* #define TCG_TARGET_HAS_orc_i64 */
100
/* #define TCG_TARGET_HAS_eqv_i64 */
99 101

  
100 102
#define TCG_AREG0 TCG_REG_R27
101 103

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

  
63 64
// #define TCG_TARGET_HAS_div_i64
64 65
// #define TCG_TARGET_HAS_rot_i64
......
75 76
// #define TCG_TARGET_HAS_neg_i64
76 77
// #define TCG_TARGET_HAS_andc_i64
77 78
// #define TCG_TARGET_HAS_orc_i64
79
// #define TCG_TARGET_HAS_eqv_i64
78 80

  
79 81
/* used for function call generation */
80 82
#define TCG_REG_CALL_STACK		TCG_REG_R15
b/tcg/sparc/tcg-target.h
100 100
#define TCG_TARGET_HAS_not_i32
101 101
#define TCG_TARGET_HAS_andc_i32
102 102
#define TCG_TARGET_HAS_orc_i32
103
// #define TCG_TARGET_HAS_eqv_i32
103 104

  
104 105
#if TCG_TARGET_REG_BITS == 64
105 106
#define TCG_TARGET_HAS_div_i64
......
117 118
#define TCG_TARGET_HAS_not_i64
118 119
#define TCG_TARGET_HAS_andc_i64
119 120
#define TCG_TARGET_HAS_orc_i64
121
// #define TCG_TARGET_HAS_eqv_i64
120 122
#endif
121 123

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

  
1741 1741
static inline void tcg_gen_eqv_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2)
1742 1742
{
1743
#ifdef TCG_TARGET_HAS_eqv_i32
1744
    tcg_gen_op3_i32(INDEX_op_eqv_i32, ret, arg1, arg2);
1745
#else
1743 1746
    tcg_gen_xor_i32(ret, arg1, arg2);
1744 1747
    tcg_gen_not_i32(ret, ret);
1748
#endif
1745 1749
}
1746 1750

  
1747 1751
static inline void tcg_gen_eqv_i64(TCGv_i64 ret, TCGv_i64 arg1, TCGv_i64 arg2)
1748 1752
{
1753
#ifdef TCG_TARGET_HAS_eqv_i64
1754
    tcg_gen_op3_i64(INDEX_op_eqv_i64, ret, arg1, arg2);
1755
#elif defined(TCG_TARGET_HAS_eqv_i32) && TCG_TARGET_REG_BITS == 32
1756
    tcg_gen_eqv_i32(TCGV_LOW(ret), TCGV_LOW(arg1), TCGV_LOW(arg2));
1757
    tcg_gen_eqv_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2));
1758
#else
1749 1759
    tcg_gen_xor_i64(ret, arg1, arg2);
1750 1760
    tcg_gen_not_i64(ret, ret);
1761
#endif
1751 1762
}
1752 1763

  
1753 1764
static inline void tcg_gen_nand_i32(TCGv_i32 ret, TCGv_i32 arg1, TCGv_i32 arg2)
b/tcg/tcg-opc.h
116 116
#ifdef TCG_TARGET_HAS_orc_i32
117 117
DEF2(orc_i32, 1, 2, 0, 0)
118 118
#endif
119
#ifdef TCG_TARGET_HAS_eqv_i32
120
DEF2(eqv_i32, 1, 2, 0, 0)
121
#endif
119 122

  
120 123
#if TCG_TARGET_REG_BITS == 64
121 124
DEF2(mov_i64, 1, 1, 0, 0)
......
199 202
#ifdef TCG_TARGET_HAS_orc_i64
200 203
DEF2(orc_i64, 1, 2, 0, 0)
201 204
#endif
205
#ifdef TCG_TARGET_HAS_eqv_i64
206
DEF2(eqv_i64, 1, 2, 0, 0)
207
#endif
202 208
#endif
203 209

  
204 210
/* QEMU specific */
b/tcg/x86_64/tcg-target.h
84 84
// #define TCG_TARGET_HAS_andc_i64
85 85
// #define TCG_TARGET_HAS_orc_i32
86 86
// #define TCG_TARGET_HAS_orc_i64
87
// #define TCG_TARGET_HAS_eqv_i32
88
// #define TCG_TARGET_HAS_eqv_i64
87 89

  
88 90
#define TCG_TARGET_HAS_GUEST_BASE
89 91

  

Also available in: Unified diff