xref: /openbmc/qemu/include/tcg/tcg-op.h (revision a95260486aa7e78d7c7194eba65cf03311ad94ad)
1ad3d0e4dSRichard Henderson /* SPDX-License-Identifier: MIT */
2d3582cfdSPhilippe Mathieu-Daudé /*
3ad3d0e4dSRichard Henderson  * Target dependent opcode generation functions.
4d3582cfdSPhilippe Mathieu-Daudé  *
5d3582cfdSPhilippe Mathieu-Daudé  * Copyright (c) 2008 Fabrice Bellard
6d3582cfdSPhilippe Mathieu-Daudé  */
7d3582cfdSPhilippe Mathieu-Daudé 
8d3582cfdSPhilippe Mathieu-Daudé #ifndef TCG_TCG_OP_H
9d3582cfdSPhilippe Mathieu-Daudé #define TCG_TCG_OP_H
10d3582cfdSPhilippe Mathieu-Daudé 
11ad3d0e4dSRichard Henderson #include "tcg/tcg-op-common.h"
12d3582cfdSPhilippe Mathieu-Daudé 
13d3582cfdSPhilippe Mathieu-Daudé #ifndef TARGET_LONG_BITS
14d3582cfdSPhilippe Mathieu-Daudé #error must include QEMU headers
15d3582cfdSPhilippe Mathieu-Daudé #endif
16d3582cfdSPhilippe Mathieu-Daudé 
17ff0c61bfSRichard Henderson #if TARGET_LONG_BITS == 32
18ff0c61bfSRichard Henderson # define TCG_TYPE_TL  TCG_TYPE_I32
19ff0c61bfSRichard Henderson #elif TARGET_LONG_BITS == 64
20ff0c61bfSRichard Henderson # define TCG_TYPE_TL  TCG_TYPE_I64
21ff0c61bfSRichard Henderson #else
22ff0c61bfSRichard Henderson # error
23ff0c61bfSRichard Henderson #endif
24ff0c61bfSRichard Henderson 
25747bd69dSRichard Henderson #ifndef TARGET_INSN_START_EXTRA_WORDS
tcg_gen_insn_start(target_ulong pc)26d3582cfdSPhilippe Mathieu-Daudé static inline void tcg_gen_insn_start(target_ulong pc)
27d3582cfdSPhilippe Mathieu-Daudé {
28c9ad8d27SRichard Henderson     TCGOp *op = tcg_emit_op(INDEX_op_insn_start, 64 / TCG_TARGET_REG_BITS);
29c9ad8d27SRichard Henderson     tcg_set_insn_start_param(op, 0, pc);
30d3582cfdSPhilippe Mathieu-Daudé }
31747bd69dSRichard Henderson #elif TARGET_INSN_START_EXTRA_WORDS == 1
tcg_gen_insn_start(target_ulong pc,target_ulong a1)32d3582cfdSPhilippe Mathieu-Daudé static inline void tcg_gen_insn_start(target_ulong pc, target_ulong a1)
33d3582cfdSPhilippe Mathieu-Daudé {
34c9ad8d27SRichard Henderson     TCGOp *op = tcg_emit_op(INDEX_op_insn_start, 2 * 64 / TCG_TARGET_REG_BITS);
35c9ad8d27SRichard Henderson     tcg_set_insn_start_param(op, 0, pc);
36c9ad8d27SRichard Henderson     tcg_set_insn_start_param(op, 1, a1);
37d3582cfdSPhilippe Mathieu-Daudé }
38747bd69dSRichard Henderson #elif TARGET_INSN_START_EXTRA_WORDS == 2
tcg_gen_insn_start(target_ulong pc,target_ulong a1,target_ulong a2)39d3582cfdSPhilippe Mathieu-Daudé static inline void tcg_gen_insn_start(target_ulong pc, target_ulong a1,
40d3582cfdSPhilippe Mathieu-Daudé                                       target_ulong a2)
41d3582cfdSPhilippe Mathieu-Daudé {
42c9ad8d27SRichard Henderson     TCGOp *op = tcg_emit_op(INDEX_op_insn_start, 3 * 64 / TCG_TARGET_REG_BITS);
43c9ad8d27SRichard Henderson     tcg_set_insn_start_param(op, 0, pc);
44c9ad8d27SRichard Henderson     tcg_set_insn_start_param(op, 1, a1);
45c9ad8d27SRichard Henderson     tcg_set_insn_start_param(op, 2, a2);
46d3582cfdSPhilippe Mathieu-Daudé }
47d3582cfdSPhilippe Mathieu-Daudé #else
48747bd69dSRichard Henderson #error Unhandled TARGET_INSN_START_EXTRA_WORDS value
49d3582cfdSPhilippe Mathieu-Daudé #endif
50d3582cfdSPhilippe Mathieu-Daudé 
51d3582cfdSPhilippe Mathieu-Daudé #if TARGET_LONG_BITS == 32
52f15f8935SRichard Henderson typedef TCGv_i32 TCGv;
53d3582cfdSPhilippe Mathieu-Daudé #define tcg_temp_new() tcg_temp_new_i32()
54d3582cfdSPhilippe Mathieu-Daudé #define tcg_global_mem_new tcg_global_mem_new_i32
55d5920b72SRichard Henderson #define tcgv_tl_temp tcgv_i32_temp
56d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_qemu_ld_tl tcg_gen_qemu_ld_i32
57d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_qemu_st_tl tcg_gen_qemu_st_i32
58f15f8935SRichard Henderson #elif TARGET_LONG_BITS == 64
59f15f8935SRichard Henderson typedef TCGv_i64 TCGv;
60d3582cfdSPhilippe Mathieu-Daudé #define tcg_temp_new() tcg_temp_new_i64()
61d3582cfdSPhilippe Mathieu-Daudé #define tcg_global_mem_new tcg_global_mem_new_i64
62d5920b72SRichard Henderson #define tcgv_tl_temp tcgv_i64_temp
63d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_qemu_ld_tl tcg_gen_qemu_ld_i64
64d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_qemu_st_tl tcg_gen_qemu_st_i64
65f15f8935SRichard Henderson #else
66f15f8935SRichard Henderson #error Unhandled TARGET_LONG_BITS value
67d3582cfdSPhilippe Mathieu-Daudé #endif
68d3582cfdSPhilippe Mathieu-Daudé 
69d5920b72SRichard Henderson static inline void
tcg_gen_qemu_ld_i32(TCGv_i32 v,TCGv a,TCGArg i,MemOp m)70d5920b72SRichard Henderson tcg_gen_qemu_ld_i32(TCGv_i32 v, TCGv a, TCGArg i, MemOp m)
71d5920b72SRichard Henderson {
72d5920b72SRichard Henderson     tcg_gen_qemu_ld_i32_chk(v, tcgv_tl_temp(a), i, m, TCG_TYPE_TL);
73d5920b72SRichard Henderson }
74d5920b72SRichard Henderson 
75d5920b72SRichard Henderson static inline void
tcg_gen_qemu_st_i32(TCGv_i32 v,TCGv a,TCGArg i,MemOp m)76d5920b72SRichard Henderson tcg_gen_qemu_st_i32(TCGv_i32 v, TCGv a, TCGArg i, MemOp m)
77d5920b72SRichard Henderson {
78d5920b72SRichard Henderson     tcg_gen_qemu_st_i32_chk(v, tcgv_tl_temp(a), i, m, TCG_TYPE_TL);
79d5920b72SRichard Henderson }
80d5920b72SRichard Henderson 
81d5920b72SRichard Henderson static inline void
tcg_gen_qemu_ld_i64(TCGv_i64 v,TCGv a,TCGArg i,MemOp m)82d5920b72SRichard Henderson tcg_gen_qemu_ld_i64(TCGv_i64 v, TCGv a, TCGArg i, MemOp m)
83d5920b72SRichard Henderson {
84d5920b72SRichard Henderson     tcg_gen_qemu_ld_i64_chk(v, tcgv_tl_temp(a), i, m, TCG_TYPE_TL);
85d5920b72SRichard Henderson }
86d5920b72SRichard Henderson 
87d5920b72SRichard Henderson static inline void
tcg_gen_qemu_st_i64(TCGv_i64 v,TCGv a,TCGArg i,MemOp m)88d5920b72SRichard Henderson tcg_gen_qemu_st_i64(TCGv_i64 v, TCGv a, TCGArg i, MemOp m)
89d5920b72SRichard Henderson {
90d5920b72SRichard Henderson     tcg_gen_qemu_st_i64_chk(v, tcgv_tl_temp(a), i, m, TCG_TYPE_TL);
91d5920b72SRichard Henderson }
92d5920b72SRichard Henderson 
93d5920b72SRichard Henderson static inline void
tcg_gen_qemu_ld_i128(TCGv_i128 v,TCGv a,TCGArg i,MemOp m)94d5920b72SRichard Henderson tcg_gen_qemu_ld_i128(TCGv_i128 v, TCGv a, TCGArg i, MemOp m)
95d5920b72SRichard Henderson {
96d5920b72SRichard Henderson     tcg_gen_qemu_ld_i128_chk(v, tcgv_tl_temp(a), i, m, TCG_TYPE_TL);
97d5920b72SRichard Henderson }
98d5920b72SRichard Henderson 
99d5920b72SRichard Henderson static inline void
tcg_gen_qemu_st_i128(TCGv_i128 v,TCGv a,TCGArg i,MemOp m)100d5920b72SRichard Henderson tcg_gen_qemu_st_i128(TCGv_i128 v, TCGv a, TCGArg i, MemOp m)
101d5920b72SRichard Henderson {
102d5920b72SRichard Henderson     tcg_gen_qemu_st_i128_chk(v, tcgv_tl_temp(a), i, m, TCG_TYPE_TL);
103d5920b72SRichard Henderson }
104d3582cfdSPhilippe Mathieu-Daudé 
1050700ceb3SRichard Henderson #define DEF_ATOMIC2(N, S)                                               \
1060700ceb3SRichard Henderson     static inline void N##_##S(TCGv_##S r, TCGv a, TCGv_##S v,          \
1070700ceb3SRichard Henderson                                TCGArg i, MemOp m)                       \
1080700ceb3SRichard Henderson     { N##_##S##_chk(r, tcgv_tl_temp(a), v, i, m, TCG_TYPE_TL); }
1090700ceb3SRichard Henderson 
1100700ceb3SRichard Henderson #define DEF_ATOMIC3(N, S)                                               \
1110700ceb3SRichard Henderson     static inline void N##_##S(TCGv_##S r, TCGv a, TCGv_##S o,          \
1120700ceb3SRichard Henderson                                TCGv_##S n, TCGArg i, MemOp m)           \
1130700ceb3SRichard Henderson     { N##_##S##_chk(r, tcgv_tl_temp(a), o, n, i, m, TCG_TYPE_TL); }
1140700ceb3SRichard Henderson 
1150700ceb3SRichard Henderson DEF_ATOMIC3(tcg_gen_atomic_cmpxchg, i32)
1160700ceb3SRichard Henderson DEF_ATOMIC3(tcg_gen_atomic_cmpxchg, i64)
1170700ceb3SRichard Henderson DEF_ATOMIC3(tcg_gen_atomic_cmpxchg, i128)
1180700ceb3SRichard Henderson 
1190700ceb3SRichard Henderson DEF_ATOMIC3(tcg_gen_nonatomic_cmpxchg, i32)
1200700ceb3SRichard Henderson DEF_ATOMIC3(tcg_gen_nonatomic_cmpxchg, i64)
1210700ceb3SRichard Henderson DEF_ATOMIC3(tcg_gen_nonatomic_cmpxchg, i128)
1220700ceb3SRichard Henderson 
1230700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_xchg, i32)
1240700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_xchg, i64)
1250700ceb3SRichard Henderson 
1260700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_add, i32)
1270700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_add, i64)
1280700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_and, i32)
1290700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_and, i64)
1300700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_or, i32)
1310700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_or, i64)
1320700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_xor, i32)
1330700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_xor, i64)
1340700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_smin, i32)
1350700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_smin, i64)
1360700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_umin, i32)
1370700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_umin, i64)
1380700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_smax, i32)
1390700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_smax, i64)
1400700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_umax, i32)
1410700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_fetch_umax, i64)
1420700ceb3SRichard Henderson 
1430700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_add_fetch, i32)
1440700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_add_fetch, i64)
1450700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_and_fetch, i32)
1460700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_and_fetch, i64)
1470700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_or_fetch, i32)
1480700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_or_fetch, i64)
1490700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_xor_fetch, i32)
1500700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_xor_fetch, i64)
1510700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_smin_fetch, i32)
1520700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_smin_fetch, i64)
1530700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_umin_fetch, i32)
1540700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_umin_fetch, i64)
1550700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_smax_fetch, i32)
1560700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_smax_fetch, i64)
1570700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_umax_fetch, i32)
1580700ceb3SRichard Henderson DEF_ATOMIC2(tcg_gen_atomic_umax_fetch, i64)
1590700ceb3SRichard Henderson 
1600700ceb3SRichard Henderson #undef DEF_ATOMIC2
1610700ceb3SRichard Henderson #undef DEF_ATOMIC3
162d3582cfdSPhilippe Mathieu-Daudé 
163d3582cfdSPhilippe Mathieu-Daudé #if TARGET_LONG_BITS == 64
164d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_movi_tl tcg_gen_movi_i64
165d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_mov_tl tcg_gen_mov_i64
166d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld8u_tl tcg_gen_ld8u_i64
167d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld8s_tl tcg_gen_ld8s_i64
168d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld16u_tl tcg_gen_ld16u_i64
169d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld16s_tl tcg_gen_ld16s_i64
170d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld32u_tl tcg_gen_ld32u_i64
171d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld32s_tl tcg_gen_ld32s_i64
172d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld_tl tcg_gen_ld_i64
173d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_st8_tl tcg_gen_st8_i64
174d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_st16_tl tcg_gen_st16_i64
175d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_st32_tl tcg_gen_st32_i64
176d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_st_tl tcg_gen_st_i64
177d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_add_tl tcg_gen_add_i64
178d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_addi_tl tcg_gen_addi_i64
179d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sub_tl tcg_gen_sub_i64
180d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_neg_tl tcg_gen_neg_i64
181d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_abs_tl tcg_gen_abs_i64
182d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_subfi_tl tcg_gen_subfi_i64
183d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_subi_tl tcg_gen_subi_i64
184d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_and_tl tcg_gen_and_i64
185d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_andi_tl tcg_gen_andi_i64
186d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_or_tl tcg_gen_or_i64
187d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ori_tl tcg_gen_ori_i64
188d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_xor_tl tcg_gen_xor_i64
189d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_xori_tl tcg_gen_xori_i64
190d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_not_tl tcg_gen_not_i64
191d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_shl_tl tcg_gen_shl_i64
192d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_shli_tl tcg_gen_shli_i64
193d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_shr_tl tcg_gen_shr_i64
194d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_shri_tl tcg_gen_shri_i64
195d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sar_tl tcg_gen_sar_i64
196d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sari_tl tcg_gen_sari_i64
197d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_brcond_tl tcg_gen_brcond_i64
198d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_brcondi_tl tcg_gen_brcondi_i64
199d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_setcond_tl tcg_gen_setcond_i64
200d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_setcondi_tl tcg_gen_setcondi_i64
2013635502dSRichard Henderson #define tcg_gen_negsetcond_tl tcg_gen_negsetcond_i64
20293c86ecdSPaolo Bonzini #define tcg_gen_negsetcondi_tl tcg_gen_negsetcondi_i64
203d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_mul_tl tcg_gen_mul_i64
204d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_muli_tl tcg_gen_muli_i64
205d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_div_tl tcg_gen_div_i64
206d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rem_tl tcg_gen_rem_i64
207d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_divu_tl tcg_gen_divu_i64
208d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_remu_tl tcg_gen_remu_i64
209d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_discard_tl tcg_gen_discard_i64
210d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_trunc_tl_i32 tcg_gen_extrl_i64_i32
211d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_trunc_i64_tl tcg_gen_mov_i64
212d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extu_i32_tl tcg_gen_extu_i32_i64
213d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext_i32_tl tcg_gen_ext_i32_i64
214d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extu_tl_i64 tcg_gen_mov_i64
215d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext_tl_i64 tcg_gen_mov_i64
216d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext8u_tl tcg_gen_ext8u_i64
217d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext8s_tl tcg_gen_ext8s_i64
218d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext16u_tl tcg_gen_ext16u_i64
219d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext16s_tl tcg_gen_ext16s_i64
220d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext32u_tl tcg_gen_ext32u_i64
221d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext32s_tl tcg_gen_ext32s_i64
222*f1c29532SRichard Henderson #define tcg_gen_ext_tl tcg_gen_ext_i64
223d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_bswap16_tl tcg_gen_bswap16_i64
224d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_bswap32_tl tcg_gen_bswap32_i64
225d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_bswap64_tl tcg_gen_bswap64_i64
226a66424baSRichard Henderson #define tcg_gen_bswap_tl tcg_gen_bswap64_i64
22746be8425SRichard Henderson #define tcg_gen_hswap_tl tcg_gen_hswap_i64
22846be8425SRichard Henderson #define tcg_gen_wswap_tl tcg_gen_wswap_i64
229d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_concat_tl_i64 tcg_gen_concat32_i64
230d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extr_i64_tl tcg_gen_extr32_i64
231d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_andc_tl tcg_gen_andc_i64
232d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_eqv_tl tcg_gen_eqv_i64
233d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_nand_tl tcg_gen_nand_i64
234d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_nor_tl tcg_gen_nor_i64
235d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_orc_tl tcg_gen_orc_i64
236d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_clz_tl tcg_gen_clz_i64
237d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ctz_tl tcg_gen_ctz_i64
238d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_clzi_tl tcg_gen_clzi_i64
239d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ctzi_tl tcg_gen_ctzi_i64
240d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_clrsb_tl tcg_gen_clrsb_i64
241d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ctpop_tl tcg_gen_ctpop_i64
242d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rotl_tl tcg_gen_rotl_i64
243d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rotli_tl tcg_gen_rotli_i64
244d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rotr_tl tcg_gen_rotr_i64
245d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rotri_tl tcg_gen_rotri_i64
246d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_deposit_tl tcg_gen_deposit_i64
247d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_deposit_z_tl tcg_gen_deposit_z_i64
248d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extract_tl tcg_gen_extract_i64
249d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sextract_tl tcg_gen_sextract_i64
250d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extract2_tl tcg_gen_extract2_i64
2514d87fcddSMatheus Ferst #define tcg_constant_tl tcg_constant_i64
252d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_movcond_tl tcg_gen_movcond_i64
253d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_add2_tl tcg_gen_add2_i64
254d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sub2_tl tcg_gen_sub2_i64
255d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_mulu2_tl tcg_gen_mulu2_i64
256d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_muls2_tl tcg_gen_muls2_i64
257d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_mulsu2_tl tcg_gen_mulsu2_i64
258d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_smin_tl tcg_gen_smin_i64
259d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_umin_tl tcg_gen_umin_i64
260d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_smax_tl tcg_gen_smax_i64
261d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_umax_tl tcg_gen_umax_i64
262d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_cmpxchg_tl tcg_gen_atomic_cmpxchg_i64
263d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_xchg_tl tcg_gen_atomic_xchg_i64
264d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_add_tl tcg_gen_atomic_fetch_add_i64
265d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_and_tl tcg_gen_atomic_fetch_and_i64
266d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_or_tl tcg_gen_atomic_fetch_or_i64
267d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_xor_tl tcg_gen_atomic_fetch_xor_i64
268d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_smin_tl tcg_gen_atomic_fetch_smin_i64
269d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_umin_tl tcg_gen_atomic_fetch_umin_i64
270d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_smax_tl tcg_gen_atomic_fetch_smax_i64
271d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_umax_tl tcg_gen_atomic_fetch_umax_i64
272d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_add_fetch_tl tcg_gen_atomic_add_fetch_i64
273d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_and_fetch_tl tcg_gen_atomic_and_fetch_i64
274d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_or_fetch_tl tcg_gen_atomic_or_fetch_i64
275d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_xor_fetch_tl tcg_gen_atomic_xor_fetch_i64
276d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_smin_fetch_tl tcg_gen_atomic_smin_fetch_i64
277d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_umin_fetch_tl tcg_gen_atomic_umin_fetch_i64
278d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_smax_fetch_tl tcg_gen_atomic_smax_fetch_i64
279d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_umax_fetch_tl tcg_gen_atomic_umax_fetch_i64
280d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_dup_tl_vec  tcg_gen_dup_i64_vec
281614dd4f3SPeter Maydell #define tcg_gen_dup_tl tcg_gen_dup_i64
282f15f8935SRichard Henderson #define dup_const_tl dup_const
283d3582cfdSPhilippe Mathieu-Daudé #else
284d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_movi_tl tcg_gen_movi_i32
285d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_mov_tl tcg_gen_mov_i32
286d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld8u_tl tcg_gen_ld8u_i32
287d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld8s_tl tcg_gen_ld8s_i32
288d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld16u_tl tcg_gen_ld16u_i32
289d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld16s_tl tcg_gen_ld16s_i32
290d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld32u_tl tcg_gen_ld_i32
291d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld32s_tl tcg_gen_ld_i32
292d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ld_tl tcg_gen_ld_i32
293d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_st8_tl tcg_gen_st8_i32
294d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_st16_tl tcg_gen_st16_i32
295d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_st32_tl tcg_gen_st_i32
296d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_st_tl tcg_gen_st_i32
297d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_add_tl tcg_gen_add_i32
298d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_addi_tl tcg_gen_addi_i32
299d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sub_tl tcg_gen_sub_i32
300d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_neg_tl tcg_gen_neg_i32
301d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_abs_tl tcg_gen_abs_i32
302d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_subfi_tl tcg_gen_subfi_i32
303d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_subi_tl tcg_gen_subi_i32
304d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_and_tl tcg_gen_and_i32
305d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_andi_tl tcg_gen_andi_i32
306d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_or_tl tcg_gen_or_i32
307d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ori_tl tcg_gen_ori_i32
308d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_xor_tl tcg_gen_xor_i32
309d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_xori_tl tcg_gen_xori_i32
310d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_not_tl tcg_gen_not_i32
311d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_shl_tl tcg_gen_shl_i32
312d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_shli_tl tcg_gen_shli_i32
313d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_shr_tl tcg_gen_shr_i32
314d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_shri_tl tcg_gen_shri_i32
315d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sar_tl tcg_gen_sar_i32
316d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sari_tl tcg_gen_sari_i32
317d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_brcond_tl tcg_gen_brcond_i32
318d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_brcondi_tl tcg_gen_brcondi_i32
319d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_setcond_tl tcg_gen_setcond_i32
320d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_setcondi_tl tcg_gen_setcondi_i32
3213635502dSRichard Henderson #define tcg_gen_negsetcond_tl tcg_gen_negsetcond_i32
32293c86ecdSPaolo Bonzini #define tcg_gen_negsetcondi_tl tcg_gen_negsetcondi_i32
323d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_mul_tl tcg_gen_mul_i32
324d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_muli_tl tcg_gen_muli_i32
325d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_div_tl tcg_gen_div_i32
326d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rem_tl tcg_gen_rem_i32
327d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_divu_tl tcg_gen_divu_i32
328d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_remu_tl tcg_gen_remu_i32
329d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_discard_tl tcg_gen_discard_i32
330d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_trunc_tl_i32 tcg_gen_mov_i32
331d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_trunc_i64_tl tcg_gen_extrl_i64_i32
332d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extu_i32_tl tcg_gen_mov_i32
333d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext_i32_tl tcg_gen_mov_i32
334d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extu_tl_i64 tcg_gen_extu_i32_i64
335d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext_tl_i64 tcg_gen_ext_i32_i64
336d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext8u_tl tcg_gen_ext8u_i32
337d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext8s_tl tcg_gen_ext8s_i32
338d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext16u_tl tcg_gen_ext16u_i32
339d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext16s_tl tcg_gen_ext16s_i32
340d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext32u_tl tcg_gen_mov_i32
341d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ext32s_tl tcg_gen_mov_i32
342*f1c29532SRichard Henderson #define tcg_gen_ext_tl tcg_gen_ext_i32
343d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_bswap16_tl tcg_gen_bswap16_i32
3442b836c2aSRichard Henderson #define tcg_gen_bswap32_tl(D, S, F) tcg_gen_bswap32_i32(D, S)
345a66424baSRichard Henderson #define tcg_gen_bswap_tl tcg_gen_bswap32_i32
34646be8425SRichard Henderson #define tcg_gen_hswap_tl tcg_gen_hswap_i32
347d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_concat_tl_i64 tcg_gen_concat_i32_i64
348d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extr_i64_tl tcg_gen_extr_i64_i32
349d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_andc_tl tcg_gen_andc_i32
350d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_eqv_tl tcg_gen_eqv_i32
351d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_nand_tl tcg_gen_nand_i32
352d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_nor_tl tcg_gen_nor_i32
353d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_orc_tl tcg_gen_orc_i32
354d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_clz_tl tcg_gen_clz_i32
355d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ctz_tl tcg_gen_ctz_i32
356d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_clzi_tl tcg_gen_clzi_i32
357d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ctzi_tl tcg_gen_ctzi_i32
358d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_clrsb_tl tcg_gen_clrsb_i32
359d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_ctpop_tl tcg_gen_ctpop_i32
360d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rotl_tl tcg_gen_rotl_i32
361d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rotli_tl tcg_gen_rotli_i32
362d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rotr_tl tcg_gen_rotr_i32
363d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_rotri_tl tcg_gen_rotri_i32
364d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_deposit_tl tcg_gen_deposit_i32
365d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_deposit_z_tl tcg_gen_deposit_z_i32
366d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extract_tl tcg_gen_extract_i32
367d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sextract_tl tcg_gen_sextract_i32
368d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_extract2_tl tcg_gen_extract2_i32
3694d87fcddSMatheus Ferst #define tcg_constant_tl tcg_constant_i32
370d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_movcond_tl tcg_gen_movcond_i32
371d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_add2_tl tcg_gen_add2_i32
372d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_sub2_tl tcg_gen_sub2_i32
373d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_mulu2_tl tcg_gen_mulu2_i32
374d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_muls2_tl tcg_gen_muls2_i32
375d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_mulsu2_tl tcg_gen_mulsu2_i32
376d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_smin_tl tcg_gen_smin_i32
377d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_umin_tl tcg_gen_umin_i32
378d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_smax_tl tcg_gen_smax_i32
379d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_umax_tl tcg_gen_umax_i32
380d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_cmpxchg_tl tcg_gen_atomic_cmpxchg_i32
381d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_xchg_tl tcg_gen_atomic_xchg_i32
382d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_add_tl tcg_gen_atomic_fetch_add_i32
383d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_and_tl tcg_gen_atomic_fetch_and_i32
384d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_or_tl tcg_gen_atomic_fetch_or_i32
385d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_xor_tl tcg_gen_atomic_fetch_xor_i32
386d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_smin_tl tcg_gen_atomic_fetch_smin_i32
387d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_umin_tl tcg_gen_atomic_fetch_umin_i32
388d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_smax_tl tcg_gen_atomic_fetch_smax_i32
389d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_fetch_umax_tl tcg_gen_atomic_fetch_umax_i32
390d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_add_fetch_tl tcg_gen_atomic_add_fetch_i32
391d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_and_fetch_tl tcg_gen_atomic_and_fetch_i32
392d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_or_fetch_tl tcg_gen_atomic_or_fetch_i32
393d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_xor_fetch_tl tcg_gen_atomic_xor_fetch_i32
394d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_smin_fetch_tl tcg_gen_atomic_smin_fetch_i32
395d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_umin_fetch_tl tcg_gen_atomic_umin_fetch_i32
396d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_smax_fetch_tl tcg_gen_atomic_smax_fetch_i32
397d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_atomic_umax_fetch_tl tcg_gen_atomic_umax_fetch_i32
398d3582cfdSPhilippe Mathieu-Daudé #define tcg_gen_dup_tl_vec  tcg_gen_dup_i32_vec
399614dd4f3SPeter Maydell #define tcg_gen_dup_tl tcg_gen_dup_i32
400f15f8935SRichard Henderson 
401f15f8935SRichard Henderson #define dup_const_tl(VECE, C)                                      \
402f15f8935SRichard Henderson     (__builtin_constant_p(VECE)                                    \
403f15f8935SRichard Henderson      ? (  (VECE) == MO_8  ? 0x01010101ul * (uint8_t)(C)            \
404f15f8935SRichard Henderson         : (VECE) == MO_16 ? 0x00010001ul * (uint16_t)(C)           \
405f15f8935SRichard Henderson         : (VECE) == MO_32 ? 0x00000001ul * (uint32_t)(C)           \
406f15f8935SRichard Henderson         : (qemu_build_not_reached_always(), 0))                    \
407f15f8935SRichard Henderson      :  (target_long)dup_const(VECE, C))
408d3582cfdSPhilippe Mathieu-Daudé 
409ad3d0e4dSRichard Henderson #endif /* TARGET_LONG_BITS == 64 */
410d3582cfdSPhilippe Mathieu-Daudé #endif /* TCG_TCG_OP_H */
411