Revision d2604285
b/tcg/tcg-op.h | ||
---|---|---|
1425 | 1425 |
|
1426 | 1426 |
static inline void tcg_gen_not_i32(TCGv_i32 ret, TCGv_i32 arg) |
1427 | 1427 |
{ |
1428 |
#ifdef TCG_TARGET_HAS_not_i32 |
|
1429 |
tcg_gen_op2_i32(INDEX_op_not_i32, ret, arg); |
|
1430 |
#else |
|
1428 | 1431 |
tcg_gen_xori_i32(ret, arg, -1); |
1432 |
#endif |
|
1429 | 1433 |
} |
1430 | 1434 |
|
1431 | 1435 |
static inline void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg) |
1432 | 1436 |
{ |
1437 |
#ifdef TCG_TARGET_HAS_not_i64 |
|
1438 |
tcg_gen_op2_i32(INDEX_op_not_i64, ret, arg); |
|
1439 |
#else |
|
1433 | 1440 |
tcg_gen_xori_i64(ret, arg, -1); |
1441 |
#endif |
|
1434 | 1442 |
} |
1435 | 1443 |
|
1436 | 1444 |
static inline void tcg_gen_discard_i32(TCGv_i32 arg) |
b/tcg/tcg-opc.h | ||
---|---|---|
147 | 147 |
DEF2(bswap_i64, 1, 1, 0, 0) |
148 | 148 |
#endif |
149 | 149 |
#endif |
150 |
#ifdef TCG_TARGET_HAS_not_i32 |
|
151 |
DEF2(not_i32, 1, 1, 0, 0) |
|
152 |
#endif |
|
153 |
#ifdef TCG_TARGET_HAS_not_i64 |
|
154 |
DEF2(not_i64, 1, 1, 0, 0) |
|
155 |
#endif |
|
150 | 156 |
#ifdef TCG_TARGET_HAS_neg_i32 |
151 | 157 |
DEF2(neg_i32, 1, 1, 0, 0) |
152 | 158 |
#endif |
b/tcg/x86_64/tcg-target.c | ||
---|---|---|
1108 | 1108 |
tcg_out_modrm(s, 0xf7 | P_REXW, 3, args[0]); |
1109 | 1109 |
break; |
1110 | 1110 |
|
1111 |
case INDEX_op_not_i32: |
|
1112 |
tcg_out_modrm(s, 0xf7, 2, args[0]); |
|
1113 |
break; |
|
1114 |
case INDEX_op_not_i64: |
|
1115 |
tcg_out_modrm(s, 0xf7 | P_REXW, 2, args[0]); |
|
1116 |
break; |
|
1117 |
|
|
1111 | 1118 |
case INDEX_op_ext8s_i32: |
1112 | 1119 |
tcg_out_modrm(s, 0xbe | P_EXT | P_REXB, args[0], args[1]); |
1113 | 1120 |
break; |
... | ... | |
1286 | 1293 |
{ INDEX_op_neg_i32, { "r", "0" } }, |
1287 | 1294 |
{ INDEX_op_neg_i64, { "r", "0" } }, |
1288 | 1295 |
|
1296 |
{ INDEX_op_not_i32, { "r", "0" } }, |
|
1297 |
{ INDEX_op_not_i64, { "r", "0" } }, |
|
1298 |
|
|
1289 | 1299 |
{ INDEX_op_ext8s_i32, { "r", "r"} }, |
1290 | 1300 |
{ INDEX_op_ext16s_i32, { "r", "r"} }, |
1291 | 1301 |
{ INDEX_op_ext8s_i64, { "r", "r"} }, |
b/tcg/x86_64/tcg-target.h | ||
---|---|---|
60 | 60 |
#define TCG_TARGET_HAS_bswap_i64 |
61 | 61 |
#define TCG_TARGET_HAS_neg_i32 |
62 | 62 |
#define TCG_TARGET_HAS_neg_i64 |
63 |
#define TCG_TARGET_HAS_not_i32 |
|
64 |
#define TCG_TARGET_HAS_not_i64 |
|
63 | 65 |
#define TCG_TARGET_HAS_ext8s_i32 |
64 | 66 |
#define TCG_TARGET_HAS_ext16s_i32 |
65 | 67 |
#define TCG_TARGET_HAS_ext8s_i64 |
Also available in: Unified diff