Commit ac56dd48120521b530e48f641b65b1f15c061899

Authored by pbrook
1 parent 724db118

Add TCG variable opaque type.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3961 c046a42c-6fe2-441c-8c8c-71466251a162
target-i386/translate.c
@@ -122,9 +122,9 @@ @@ -122,9 +122,9 @@
122 #endif 122 #endif
123 123
124 /* global register indexes */ 124 /* global register indexes */
125 -static int cpu_env, cpu_T[2], cpu_A0; 125 +static TCGv cpu_env, cpu_T[2], cpu_A0;
126 /* local register indexes (only used inside old micro ops) */ 126 /* local register indexes (only used inside old micro ops) */
127 -static int cpu_tmp0; 127 +static TCGv cpu_tmp0;
128 128
129 #ifdef TARGET_X86_64 129 #ifdef TARGET_X86_64
130 static int x86_64_hregs; 130 static int x86_64_hregs;
@@ -5592,7 +5592,7 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start) @@ -5592,7 +5592,7 @@ static target_ulong disas_insn(DisasContext *s, target_ulong pc_start)
5592 gen_op_mov_reg_T0(OT_QUAD, reg); 5592 gen_op_mov_reg_T0(OT_QUAD, reg);
5593 } else 5593 } else
5594 { 5594 {
5595 - int tmp0; 5595 + TCGv tmp0;
5596 gen_op_mov_TN_reg(OT_LONG, 0, reg); 5596 gen_op_mov_TN_reg(OT_LONG, 0, reg);
5597 5597
5598 tmp0 = tcg_temp_new(TCG_TYPE_I32); 5598 tmp0 = tcg_temp_new(TCG_TYPE_I32);
tcg/tcg-op.h
@@ -28,75 +28,141 @@ @@ -28,75 +28,141 @@
28 28
29 int gen_new_label(void); 29 int gen_new_label(void);
30 30
31 -static inline void tcg_gen_op1(int opc, TCGArg arg1) 31 +static inline void tcg_gen_op1(int opc, TCGv arg1)
32 { 32 {
33 *gen_opc_ptr++ = opc; 33 *gen_opc_ptr++ = opc;
34 - *gen_opparam_ptr++ = arg1; 34 + *gen_opparam_ptr++ = GET_TCGV(arg1);
35 } 35 }
36 36
37 -static inline void tcg_gen_op2(int opc, TCGArg arg1, TCGArg arg2) 37 +static inline void tcg_gen_op1i(int opc, TCGArg arg1)
38 { 38 {
39 *gen_opc_ptr++ = opc; 39 *gen_opc_ptr++ = opc;
40 *gen_opparam_ptr++ = arg1; 40 *gen_opparam_ptr++ = arg1;
41 - *gen_opparam_ptr++ = arg2;  
42 } 41 }
43 42
44 -static inline void tcg_gen_op3(int opc, TCGArg arg1, TCGArg arg2, TCGArg arg3) 43 +static inline void tcg_gen_op2(int opc, TCGv arg1, TCGv arg2)
45 { 44 {
46 *gen_opc_ptr++ = opc; 45 *gen_opc_ptr++ = opc;
47 - *gen_opparam_ptr++ = arg1;  
48 - *gen_opparam_ptr++ = arg2;  
49 - *gen_opparam_ptr++ = arg3; 46 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  47 + *gen_opparam_ptr++ = GET_TCGV(arg2);
50 } 48 }
51 49
52 -static inline void tcg_gen_op4(int opc, TCGArg arg1, TCGArg arg2, TCGArg arg3,  
53 - TCGArg arg4) 50 +static inline void tcg_gen_op2i(int opc, TCGv arg1, TCGArg arg2)
54 { 51 {
55 *gen_opc_ptr++ = opc; 52 *gen_opc_ptr++ = opc;
56 - *gen_opparam_ptr++ = arg1; 53 + *gen_opparam_ptr++ = GET_TCGV(arg1);
57 *gen_opparam_ptr++ = arg2; 54 *gen_opparam_ptr++ = arg2;
  55 +}
  56 +
  57 +static inline void tcg_gen_op3(int opc, TCGv arg1, TCGv arg2, TCGv arg3)
  58 +{
  59 + *gen_opc_ptr++ = opc;
  60 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  61 + *gen_opparam_ptr++ = GET_TCGV(arg2);
  62 + *gen_opparam_ptr++ = GET_TCGV(arg3);
  63 +}
  64 +
  65 +static inline void tcg_gen_op3i(int opc, TCGv arg1, TCGv arg2, TCGArg arg3)
  66 +{
  67 + *gen_opc_ptr++ = opc;
  68 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  69 + *gen_opparam_ptr++ = GET_TCGV(arg2);
58 *gen_opparam_ptr++ = arg3; 70 *gen_opparam_ptr++ = arg3;
  71 +}
  72 +
  73 +static inline void tcg_gen_op4(int opc, TCGv arg1, TCGv arg2, TCGv arg3,
  74 + TCGv arg4)
  75 +{
  76 + *gen_opc_ptr++ = opc;
  77 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  78 + *gen_opparam_ptr++ = GET_TCGV(arg2);
  79 + *gen_opparam_ptr++ = GET_TCGV(arg3);
  80 + *gen_opparam_ptr++ = GET_TCGV(arg4);
  81 +}
  82 +
  83 +static inline void tcg_gen_op4i(int opc, TCGv arg1, TCGv arg2, TCGv arg3,
  84 + TCGArg arg4)
  85 +{
  86 + *gen_opc_ptr++ = opc;
  87 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  88 + *gen_opparam_ptr++ = GET_TCGV(arg2);
  89 + *gen_opparam_ptr++ = GET_TCGV(arg3);
59 *gen_opparam_ptr++ = arg4; 90 *gen_opparam_ptr++ = arg4;
60 } 91 }
61 92
62 -static inline void tcg_gen_op5(int opc, TCGArg arg1, TCGArg arg2,  
63 - TCGArg arg3, TCGArg arg4,  
64 - TCGArg arg5) 93 +static inline void tcg_gen_op4ii(int opc, TCGv arg1, TCGv arg2, TCGArg arg3,
  94 + TCGArg arg4)
65 { 95 {
66 *gen_opc_ptr++ = opc; 96 *gen_opc_ptr++ = opc;
67 - *gen_opparam_ptr++ = arg1;  
68 - *gen_opparam_ptr++ = arg2; 97 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  98 + *gen_opparam_ptr++ = GET_TCGV(arg2);
69 *gen_opparam_ptr++ = arg3; 99 *gen_opparam_ptr++ = arg3;
70 *gen_opparam_ptr++ = arg4; 100 *gen_opparam_ptr++ = arg4;
  101 +}
  102 +
  103 +static inline void tcg_gen_op5(int opc, TCGv arg1, TCGv arg2,
  104 + TCGv arg3, TCGv arg4,
  105 + TCGv arg5)
  106 +{
  107 + *gen_opc_ptr++ = opc;
  108 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  109 + *gen_opparam_ptr++ = GET_TCGV(arg2);
  110 + *gen_opparam_ptr++ = GET_TCGV(arg3);
  111 + *gen_opparam_ptr++ = GET_TCGV(arg4);
  112 + *gen_opparam_ptr++ = GET_TCGV(arg5);
  113 +}
  114 +
  115 +static inline void tcg_gen_op5i(int opc, TCGv arg1, TCGv arg2,
  116 + TCGv arg3, TCGv arg4,
  117 + TCGArg arg5)
  118 +{
  119 + *gen_opc_ptr++ = opc;
  120 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  121 + *gen_opparam_ptr++ = GET_TCGV(arg2);
  122 + *gen_opparam_ptr++ = GET_TCGV(arg3);
  123 + *gen_opparam_ptr++ = GET_TCGV(arg4);
71 *gen_opparam_ptr++ = arg5; 124 *gen_opparam_ptr++ = arg5;
72 } 125 }
73 126
74 -static inline void tcg_gen_op6(int opc, TCGArg arg1, TCGArg arg2,  
75 - TCGArg arg3, TCGArg arg4,  
76 - TCGArg arg5, TCGArg arg6) 127 +static inline void tcg_gen_op6(int opc, TCGv arg1, TCGv arg2,
  128 + TCGv arg3, TCGv arg4,
  129 + TCGv arg5, TCGv arg6)
77 { 130 {
78 *gen_opc_ptr++ = opc; 131 *gen_opc_ptr++ = opc;
79 - *gen_opparam_ptr++ = arg1;  
80 - *gen_opparam_ptr++ = arg2;  
81 - *gen_opparam_ptr++ = arg3;  
82 - *gen_opparam_ptr++ = arg4; 132 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  133 + *gen_opparam_ptr++ = GET_TCGV(arg2);
  134 + *gen_opparam_ptr++ = GET_TCGV(arg3);
  135 + *gen_opparam_ptr++ = GET_TCGV(arg4);
  136 + *gen_opparam_ptr++ = GET_TCGV(arg5);
  137 + *gen_opparam_ptr++ = GET_TCGV(arg6);
  138 +}
  139 +
  140 +static inline void tcg_gen_op6ii(int opc, TCGv arg1, TCGv arg2,
  141 + TCGv arg3, TCGv arg4,
  142 + TCGArg arg5, TCGArg arg6)
  143 +{
  144 + *gen_opc_ptr++ = opc;
  145 + *gen_opparam_ptr++ = GET_TCGV(arg1);
  146 + *gen_opparam_ptr++ = GET_TCGV(arg2);
  147 + *gen_opparam_ptr++ = GET_TCGV(arg3);
  148 + *gen_opparam_ptr++ = GET_TCGV(arg4);
83 *gen_opparam_ptr++ = arg5; 149 *gen_opparam_ptr++ = arg5;
84 *gen_opparam_ptr++ = arg6; 150 *gen_opparam_ptr++ = arg6;
85 } 151 }
86 152
87 static inline void gen_set_label(int n) 153 static inline void gen_set_label(int n)
88 { 154 {
89 - tcg_gen_op1(INDEX_op_set_label, n); 155 + tcg_gen_op1i(INDEX_op_set_label, n);
90 } 156 }
91 157
92 -static inline void tcg_gen_mov_i32(int ret, int arg) 158 +static inline void tcg_gen_mov_i32(TCGv ret, TCGv arg)
93 { 159 {
94 tcg_gen_op2(INDEX_op_mov_i32, ret, arg); 160 tcg_gen_op2(INDEX_op_mov_i32, ret, arg);
95 } 161 }
96 162
97 -static inline void tcg_gen_movi_i32(int ret, int32_t arg) 163 +static inline void tcg_gen_movi_i32(TCGv ret, int32_t arg)
98 { 164 {
99 - tcg_gen_op2(INDEX_op_movi_i32, ret, arg); 165 + tcg_gen_op2i(INDEX_op_movi_i32, ret, arg);
100 } 166 }
101 167
102 /* helper calls */ 168 /* helper calls */
@@ -109,16 +175,16 @@ static inline void tcg_gen_helper_0_0(void *func) @@ -109,16 +175,16 @@ static inline void tcg_gen_helper_0_0(void *func)
109 0, NULL, 0, NULL); 175 0, NULL, 0, NULL);
110 } 176 }
111 177
112 -static inline void tcg_gen_helper_0_1(void *func, TCGArg arg) 178 +static inline void tcg_gen_helper_0_1(void *func, TCGv arg)
113 { 179 {
114 tcg_gen_call(&tcg_ctx, 180 tcg_gen_call(&tcg_ctx,
115 tcg_const_ptr((tcg_target_long)func), TCG_HELPER_CALL_FLAGS, 181 tcg_const_ptr((tcg_target_long)func), TCG_HELPER_CALL_FLAGS,
116 0, NULL, 1, &arg); 182 0, NULL, 1, &arg);
117 } 183 }
118 184
119 -static inline void tcg_gen_helper_0_2(void *func, TCGArg arg1, TCGArg arg2) 185 +static inline void tcg_gen_helper_0_2(void *func, TCGv arg1, TCGv arg2)
120 { 186 {
121 - TCGArg args[2]; 187 + TCGv args[2];
122 args[0] = arg1; 188 args[0] = arg1;
123 args[1] = arg2; 189 args[1] = arg2;
124 tcg_gen_call(&tcg_ctx, 190 tcg_gen_call(&tcg_ctx,
@@ -126,10 +192,10 @@ static inline void tcg_gen_helper_0_2(void *func, TCGArg arg1, TCGArg arg2) @@ -126,10 +192,10 @@ static inline void tcg_gen_helper_0_2(void *func, TCGArg arg1, TCGArg arg2)
126 0, NULL, 2, args); 192 0, NULL, 2, args);
127 } 193 }
128 194
129 -static inline void tcg_gen_helper_1_2(void *func, TCGArg ret,  
130 - TCGArg arg1, TCGArg arg2) 195 +static inline void tcg_gen_helper_1_2(void *func, TCGv ret,
  196 + TCGv arg1, TCGv arg2)
131 { 197 {
132 - TCGArg args[2]; 198 + TCGv args[2];
133 args[0] = arg1; 199 args[0] = arg1;
134 args[1] = arg2; 200 args[1] = arg2;
135 tcg_gen_call(&tcg_ctx, 201 tcg_gen_call(&tcg_ctx,
@@ -139,72 +205,72 @@ static inline void tcg_gen_helper_1_2(void *func, TCGArg ret, @@ -139,72 +205,72 @@ static inline void tcg_gen_helper_1_2(void *func, TCGArg ret,
139 205
140 /* 32 bit ops */ 206 /* 32 bit ops */
141 207
142 -static inline void tcg_gen_ld8u_i32(int ret, int arg2, tcg_target_long offset) 208 +static inline void tcg_gen_ld8u_i32(TCGv ret, TCGv arg2, tcg_target_long offset)
143 { 209 {
144 - tcg_gen_op3(INDEX_op_ld8u_i32, ret, arg2, offset); 210 + tcg_gen_op3i(INDEX_op_ld8u_i32, ret, arg2, offset);
145 } 211 }
146 212
147 -static inline void tcg_gen_ld8s_i32(int ret, int arg2, tcg_target_long offset) 213 +static inline void tcg_gen_ld8s_i32(TCGv ret, TCGv arg2, tcg_target_long offset)
148 { 214 {
149 - tcg_gen_op3(INDEX_op_ld8s_i32, ret, arg2, offset); 215 + tcg_gen_op3i(INDEX_op_ld8s_i32, ret, arg2, offset);
150 } 216 }
151 217
152 -static inline void tcg_gen_ld16u_i32(int ret, int arg2, tcg_target_long offset) 218 +static inline void tcg_gen_ld16u_i32(TCGv ret, TCGv arg2, tcg_target_long offset)
153 { 219 {
154 - tcg_gen_op3(INDEX_op_ld16u_i32, ret, arg2, offset); 220 + tcg_gen_op3i(INDEX_op_ld16u_i32, ret, arg2, offset);
155 } 221 }
156 222
157 -static inline void tcg_gen_ld16s_i32(int ret, int arg2, tcg_target_long offset) 223 +static inline void tcg_gen_ld16s_i32(TCGv ret, TCGv arg2, tcg_target_long offset)
158 { 224 {
159 - tcg_gen_op3(INDEX_op_ld16s_i32, ret, arg2, offset); 225 + tcg_gen_op3i(INDEX_op_ld16s_i32, ret, arg2, offset);
160 } 226 }
161 227
162 -static inline void tcg_gen_ld_i32(int ret, int arg2, tcg_target_long offset) 228 +static inline void tcg_gen_ld_i32(TCGv ret, TCGv arg2, tcg_target_long offset)
163 { 229 {
164 - tcg_gen_op3(INDEX_op_ld_i32, ret, arg2, offset); 230 + tcg_gen_op3i(INDEX_op_ld_i32, ret, arg2, offset);
165 } 231 }
166 232
167 -static inline void tcg_gen_st8_i32(int arg1, int arg2, tcg_target_long offset) 233 +static inline void tcg_gen_st8_i32(TCGv arg1, TCGv arg2, tcg_target_long offset)
168 { 234 {
169 - tcg_gen_op3(INDEX_op_st8_i32, arg1, arg2, offset); 235 + tcg_gen_op3i(INDEX_op_st8_i32, arg1, arg2, offset);
170 } 236 }
171 237
172 -static inline void tcg_gen_st16_i32(int arg1, int arg2, tcg_target_long offset) 238 +static inline void tcg_gen_st16_i32(TCGv arg1, TCGv arg2, tcg_target_long offset)
173 { 239 {
174 - tcg_gen_op3(INDEX_op_st16_i32, arg1, arg2, offset); 240 + tcg_gen_op3i(INDEX_op_st16_i32, arg1, arg2, offset);
175 } 241 }
176 242
177 -static inline void tcg_gen_st_i32(int arg1, int arg2, tcg_target_long offset) 243 +static inline void tcg_gen_st_i32(TCGv arg1, TCGv arg2, tcg_target_long offset)
178 { 244 {
179 - tcg_gen_op3(INDEX_op_st_i32, arg1, arg2, offset); 245 + tcg_gen_op3i(INDEX_op_st_i32, arg1, arg2, offset);
180 } 246 }
181 247
182 -static inline void tcg_gen_add_i32(int ret, int arg1, int arg2) 248 +static inline void tcg_gen_add_i32(TCGv ret, TCGv arg1, TCGv arg2)
183 { 249 {
184 tcg_gen_op3(INDEX_op_add_i32, ret, arg1, arg2); 250 tcg_gen_op3(INDEX_op_add_i32, ret, arg1, arg2);
185 } 251 }
186 252
187 -static inline void tcg_gen_addi_i32(int ret, int arg1, int32_t arg2) 253 +static inline void tcg_gen_addi_i32(TCGv ret, TCGv arg1, int32_t arg2)
188 { 254 {
189 tcg_gen_add_i32(ret, arg1, tcg_const_i32(arg2)); 255 tcg_gen_add_i32(ret, arg1, tcg_const_i32(arg2));
190 } 256 }
191 257
192 -static inline void tcg_gen_sub_i32(int ret, int arg1, int arg2) 258 +static inline void tcg_gen_sub_i32(TCGv ret, TCGv arg1, TCGv arg2)
193 { 259 {
194 tcg_gen_op3(INDEX_op_sub_i32, ret, arg1, arg2); 260 tcg_gen_op3(INDEX_op_sub_i32, ret, arg1, arg2);
195 } 261 }
196 262
197 -static inline void tcg_gen_subi_i32(int ret, int arg1, int32_t arg2) 263 +static inline void tcg_gen_subi_i32(TCGv ret, TCGv arg1, int32_t arg2)
198 { 264 {
199 tcg_gen_sub_i32(ret, arg1, tcg_const_i32(arg2)); 265 tcg_gen_sub_i32(ret, arg1, tcg_const_i32(arg2));
200 } 266 }
201 267
202 -static inline void tcg_gen_and_i32(int ret, int arg1, int arg2) 268 +static inline void tcg_gen_and_i32(TCGv ret, TCGv arg1, TCGv arg2)
203 { 269 {
204 tcg_gen_op3(INDEX_op_and_i32, ret, arg1, arg2); 270 tcg_gen_op3(INDEX_op_and_i32, ret, arg1, arg2);
205 } 271 }
206 272
207 -static inline void tcg_gen_andi_i32(int ret, int arg1, int32_t arg2) 273 +static inline void tcg_gen_andi_i32(TCGv ret, TCGv arg1, int32_t arg2)
208 { 274 {
209 /* some cases can be optimized here */ 275 /* some cases can be optimized here */
210 if (arg2 == 0) { 276 if (arg2 == 0) {
@@ -216,12 +282,12 @@ static inline void tcg_gen_andi_i32(int ret, int arg1, int32_t arg2) @@ -216,12 +282,12 @@ static inline void tcg_gen_andi_i32(int ret, int arg1, int32_t arg2)
216 } 282 }
217 } 283 }
218 284
219 -static inline void tcg_gen_or_i32(int ret, int arg1, int arg2) 285 +static inline void tcg_gen_or_i32(TCGv ret, TCGv arg1, TCGv arg2)
220 { 286 {
221 tcg_gen_op3(INDEX_op_or_i32, ret, arg1, arg2); 287 tcg_gen_op3(INDEX_op_or_i32, ret, arg1, arg2);
222 } 288 }
223 289
224 -static inline void tcg_gen_ori_i32(int ret, int arg1, int32_t arg2) 290 +static inline void tcg_gen_ori_i32(TCGv ret, TCGv arg1, int32_t arg2)
225 { 291 {
226 /* some cases can be optimized here */ 292 /* some cases can be optimized here */
227 if (arg2 == 0xffffffff) { 293 if (arg2 == 0xffffffff) {
@@ -233,12 +299,12 @@ static inline void tcg_gen_ori_i32(int ret, int arg1, int32_t arg2) @@ -233,12 +299,12 @@ static inline void tcg_gen_ori_i32(int ret, int arg1, int32_t arg2)
233 } 299 }
234 } 300 }
235 301
236 -static inline void tcg_gen_xor_i32(int ret, int arg1, int arg2) 302 +static inline void tcg_gen_xor_i32(TCGv ret, TCGv arg1, TCGv arg2)
237 { 303 {
238 tcg_gen_op3(INDEX_op_xor_i32, ret, arg1, arg2); 304 tcg_gen_op3(INDEX_op_xor_i32, ret, arg1, arg2);
239 } 305 }
240 306
241 -static inline void tcg_gen_xori_i32(int ret, int arg1, int32_t arg2) 307 +static inline void tcg_gen_xori_i32(TCGv ret, TCGv arg1, int32_t arg2)
242 { 308 {
243 /* some cases can be optimized here */ 309 /* some cases can be optimized here */
244 if (arg2 == 0) { 310 if (arg2 == 0) {
@@ -248,95 +314,95 @@ static inline void tcg_gen_xori_i32(int ret, int arg1, int32_t arg2) @@ -248,95 +314,95 @@ static inline void tcg_gen_xori_i32(int ret, int arg1, int32_t arg2)
248 } 314 }
249 } 315 }
250 316
251 -static inline void tcg_gen_shl_i32(int ret, int arg1, int arg2) 317 +static inline void tcg_gen_shl_i32(TCGv ret, TCGv arg1, TCGv arg2)
252 { 318 {
253 tcg_gen_op3(INDEX_op_shl_i32, ret, arg1, arg2); 319 tcg_gen_op3(INDEX_op_shl_i32, ret, arg1, arg2);
254 } 320 }
255 321
256 -static inline void tcg_gen_shli_i32(int ret, int arg1, int32_t arg2) 322 +static inline void tcg_gen_shli_i32(TCGv ret, TCGv arg1, int32_t arg2)
257 { 323 {
258 tcg_gen_shl_i32(ret, arg1, tcg_const_i32(arg2)); 324 tcg_gen_shl_i32(ret, arg1, tcg_const_i32(arg2));
259 } 325 }
260 326
261 -static inline void tcg_gen_shr_i32(int ret, int arg1, int arg2) 327 +static inline void tcg_gen_shr_i32(TCGv ret, TCGv arg1, TCGv arg2)
262 { 328 {
263 tcg_gen_op3(INDEX_op_shr_i32, ret, arg1, arg2); 329 tcg_gen_op3(INDEX_op_shr_i32, ret, arg1, arg2);
264 } 330 }
265 331
266 -static inline void tcg_gen_shri_i32(int ret, int arg1, int32_t arg2) 332 +static inline void tcg_gen_shri_i32(TCGv ret, TCGv arg1, int32_t arg2)
267 { 333 {
268 tcg_gen_shr_i32(ret, arg1, tcg_const_i32(arg2)); 334 tcg_gen_shr_i32(ret, arg1, tcg_const_i32(arg2));
269 } 335 }
270 336
271 -static inline void tcg_gen_sar_i32(int ret, int arg1, int arg2) 337 +static inline void tcg_gen_sar_i32(TCGv ret, TCGv arg1, TCGv arg2)
272 { 338 {
273 tcg_gen_op3(INDEX_op_sar_i32, ret, arg1, arg2); 339 tcg_gen_op3(INDEX_op_sar_i32, ret, arg1, arg2);
274 } 340 }
275 341
276 -static inline void tcg_gen_sari_i32(int ret, int arg1, int32_t arg2) 342 +static inline void tcg_gen_sari_i32(TCGv ret, TCGv arg1, int32_t arg2)
277 { 343 {
278 tcg_gen_sar_i32(ret, arg1, tcg_const_i32(arg2)); 344 tcg_gen_sar_i32(ret, arg1, tcg_const_i32(arg2));
279 } 345 }
280 346
281 -static inline void tcg_gen_brcond_i32(int cond, TCGArg arg1, TCGArg arg2, 347 +static inline void tcg_gen_brcond_i32(int cond, TCGv arg1, TCGv arg2,
282 int label_index) 348 int label_index)
283 { 349 {
284 - tcg_gen_op4(INDEX_op_brcond_i32, arg1, arg2, cond, label_index); 350 + tcg_gen_op4ii(INDEX_op_brcond_i32, arg1, arg2, cond, label_index);
285 } 351 }
286 352
287 -static inline void tcg_gen_mul_i32(int ret, int arg1, int arg2) 353 +static inline void tcg_gen_mul_i32(TCGv ret, TCGv arg1, TCGv arg2)
288 { 354 {
289 tcg_gen_op3(INDEX_op_mul_i32, ret, arg1, arg2); 355 tcg_gen_op3(INDEX_op_mul_i32, ret, arg1, arg2);
290 } 356 }
291 357
292 #ifdef TCG_TARGET_HAS_div_i32 358 #ifdef TCG_TARGET_HAS_div_i32
293 -static inline void tcg_gen_div_i32(int ret, int arg1, int arg2) 359 +static inline void tcg_gen_div_i32(TCGv ret, TCGv arg1, TCGv arg2)
294 { 360 {
295 tcg_gen_op3(INDEX_op_div_i32, ret, arg1, arg2); 361 tcg_gen_op3(INDEX_op_div_i32, ret, arg1, arg2);
296 } 362 }
297 363
298 -static inline void tcg_gen_rem_i32(int ret, int arg1, int arg2) 364 +static inline void tcg_gen_rem_i32(TCGv ret, TCGv arg1, TCGv arg2)
299 { 365 {
300 tcg_gen_op3(INDEX_op_rem_i32, ret, arg1, arg2); 366 tcg_gen_op3(INDEX_op_rem_i32, ret, arg1, arg2);
301 } 367 }
302 368
303 -static inline void tcg_gen_divu_i32(int ret, int arg1, int arg2) 369 +static inline void tcg_gen_divu_i32(TCGv ret, TCGv arg1, TCGv arg2)
304 { 370 {
305 tcg_gen_op3(INDEX_op_divu_i32, ret, arg1, arg2); 371 tcg_gen_op3(INDEX_op_divu_i32, ret, arg1, arg2);
306 } 372 }
307 373
308 -static inline void tcg_gen_remu_i32(int ret, int arg1, int arg2) 374 +static inline void tcg_gen_remu_i32(TCGv ret, TCGv arg1, TCGv arg2)
309 { 375 {
310 tcg_gen_op3(INDEX_op_remu_i32, ret, arg1, arg2); 376 tcg_gen_op3(INDEX_op_remu_i32, ret, arg1, arg2);
311 } 377 }
312 #else 378 #else
313 -static inline void tcg_gen_div_i32(int ret, int arg1, int arg2) 379 +static inline void tcg_gen_div_i32(TCGv ret, TCGv arg1, TCGv arg2)
314 { 380 {
315 - int t0; 381 + TCGv t0;
316 t0 = tcg_temp_new(TCG_TYPE_I32); 382 t0 = tcg_temp_new(TCG_TYPE_I32);
317 tcg_gen_sari_i32(t0, arg1, 31); 383 tcg_gen_sari_i32(t0, arg1, 31);
318 tcg_gen_op5(INDEX_op_div2_i32, ret, t0, arg1, t0, arg2); 384 tcg_gen_op5(INDEX_op_div2_i32, ret, t0, arg1, t0, arg2);
319 } 385 }
320 386
321 -static inline void tcg_gen_rem_i32(int ret, int arg1, int arg2) 387 +static inline void tcg_gen_rem_i32(TCGv ret, TCGv arg1, TCGv arg2)
322 { 388 {
323 - int t0; 389 + TCGv t0;
324 t0 = tcg_temp_new(TCG_TYPE_I32); 390 t0 = tcg_temp_new(TCG_TYPE_I32);
325 tcg_gen_sari_i32(t0, arg1, 31); 391 tcg_gen_sari_i32(t0, arg1, 31);
326 tcg_gen_op5(INDEX_op_div2_i32, t0, ret, arg1, t0, arg2); 392 tcg_gen_op5(INDEX_op_div2_i32, t0, ret, arg1, t0, arg2);
327 } 393 }
328 394
329 -static inline void tcg_gen_divu_i32(int ret, int arg1, int arg2) 395 +static inline void tcg_gen_divu_i32(TCGv ret, TCGv arg1, TCGv arg2)
330 { 396 {
331 - int t0; 397 + TCGv t0;
332 t0 = tcg_temp_new(TCG_TYPE_I32); 398 t0 = tcg_temp_new(TCG_TYPE_I32);
333 tcg_gen_movi_i32(t0, 0); 399 tcg_gen_movi_i32(t0, 0);
334 tcg_gen_op5(INDEX_op_divu2_i32, ret, t0, arg1, t0, arg2); 400 tcg_gen_op5(INDEX_op_divu2_i32, ret, t0, arg1, t0, arg2);
335 } 401 }
336 402
337 -static inline void tcg_gen_remu_i32(int ret, int arg1, int arg2) 403 +static inline void tcg_gen_remu_i32(TCGv ret, TCGv arg1, TCGv arg2)
338 { 404 {
339 - int t0; 405 + TCGv t0;
340 t0 = tcg_temp_new(TCG_TYPE_I32); 406 t0 = tcg_temp_new(TCG_TYPE_I32);
341 tcg_gen_movi_i32(t0, 0); 407 tcg_gen_movi_i32(t0, 0);
342 tcg_gen_op5(INDEX_op_divu2_i32, t0, ret, arg1, t0, arg2); 408 tcg_gen_op5(INDEX_op_divu2_i32, t0, ret, arg1, t0, arg2);
@@ -345,433 +411,443 @@ static inline void tcg_gen_remu_i32(int ret, int arg1, int arg2) @@ -345,433 +411,443 @@ static inline void tcg_gen_remu_i32(int ret, int arg1, int arg2)
345 411
346 #if TCG_TARGET_REG_BITS == 32 412 #if TCG_TARGET_REG_BITS == 32
347 413
348 -static inline void tcg_gen_mov_i64(int ret, int arg) 414 +static inline void tcg_gen_mov_i64(TCGv ret, TCGv arg)
349 { 415 {
350 tcg_gen_mov_i32(ret, arg); 416 tcg_gen_mov_i32(ret, arg);
351 - tcg_gen_mov_i32(ret + 1, arg + 1); 417 + tcg_gen_mov_i32(TCGV_HIGH(ret), TCGV_HIGH(arg));
352 } 418 }
353 419
354 -static inline void tcg_gen_movi_i64(int ret, int64_t arg) 420 +static inline void tcg_gen_movi_i64(TCGv ret, int64_t arg)
355 { 421 {
356 tcg_gen_movi_i32(ret, arg); 422 tcg_gen_movi_i32(ret, arg);
357 - tcg_gen_movi_i32(ret + 1, arg >> 32); 423 + tcg_gen_movi_i32(TCGV_HIGH(ret), arg >> 32);
358 } 424 }
359 425
360 -static inline void tcg_gen_ld8u_i64(int ret, int arg2, tcg_target_long offset) 426 +static inline void tcg_gen_ld8u_i64(TCGv ret, TCGv arg2, tcg_target_long offset)
361 { 427 {
362 tcg_gen_ld8u_i32(ret, arg2, offset); 428 tcg_gen_ld8u_i32(ret, arg2, offset);
363 - tcg_gen_movi_i32(ret + 1, 0); 429 + tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
364 } 430 }
365 431
366 -static inline void tcg_gen_ld8s_i64(int ret, int arg2, tcg_target_long offset) 432 +static inline void tcg_gen_ld8s_i64(TCGv ret, TCGv arg2, tcg_target_long offset)
367 { 433 {
368 tcg_gen_ld8s_i32(ret, arg2, offset); 434 tcg_gen_ld8s_i32(ret, arg2, offset);
369 - tcg_gen_sari_i32(ret + 1, ret, 31); 435 + tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31);
370 } 436 }
371 437
372 -static inline void tcg_gen_ld16u_i64(int ret, int arg2, tcg_target_long offset) 438 +static inline void tcg_gen_ld16u_i64(TCGv ret, TCGv arg2, tcg_target_long offset)
373 { 439 {
374 tcg_gen_ld16u_i32(ret, arg2, offset); 440 tcg_gen_ld16u_i32(ret, arg2, offset);
375 - tcg_gen_movi_i32(ret + 1, 0); 441 + tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
376 } 442 }
377 443
378 -static inline void tcg_gen_ld16s_i64(int ret, int arg2, tcg_target_long offset) 444 +static inline void tcg_gen_ld16s_i64(TCGv ret, TCGv arg2, tcg_target_long offset)
379 { 445 {
380 tcg_gen_ld16s_i32(ret, arg2, offset); 446 tcg_gen_ld16s_i32(ret, arg2, offset);
381 - tcg_gen_sari_i32(ret + 1, ret, 31); 447 + tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31);
382 } 448 }
383 449
384 -static inline void tcg_gen_ld32u_i64(int ret, int arg2, tcg_target_long offset) 450 +static inline void tcg_gen_ld32u_i64(TCGv ret, TCGv arg2, tcg_target_long offset)
385 { 451 {
386 tcg_gen_ld_i32(ret, arg2, offset); 452 tcg_gen_ld_i32(ret, arg2, offset);
387 - tcg_gen_movi_i32(ret + 1, 0); 453 + tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
388 } 454 }
389 455
390 -static inline void tcg_gen_ld32s_i64(int ret, int arg2, tcg_target_long offset) 456 +static inline void tcg_gen_ld32s_i64(TCGv ret, TCGv arg2, tcg_target_long offset)
391 { 457 {
392 tcg_gen_ld_i32(ret, arg2, offset); 458 tcg_gen_ld_i32(ret, arg2, offset);
393 - tcg_gen_sari_i32(ret + 1, ret, 31); 459 + tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31);
394 } 460 }
395 461
396 -static inline void tcg_gen_ld_i64(int ret, int arg2, tcg_target_long offset) 462 +static inline void tcg_gen_ld_i64(TCGv ret, TCGv arg2, tcg_target_long offset)
397 { 463 {
398 /* since arg2 and ret have different types, they cannot be the 464 /* since arg2 and ret have different types, they cannot be the
399 same temporary */ 465 same temporary */
400 #ifdef TCG_TARGET_WORDS_BIGENDIAN 466 #ifdef TCG_TARGET_WORDS_BIGENDIAN
401 - tcg_gen_ld_i32(ret + 1, arg2, offset); 467 + tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset);
402 tcg_gen_ld_i32(ret, arg2, offset + 4); 468 tcg_gen_ld_i32(ret, arg2, offset + 4);
403 #else 469 #else
404 tcg_gen_ld_i32(ret, arg2, offset); 470 tcg_gen_ld_i32(ret, arg2, offset);
405 - tcg_gen_ld_i32(ret + 1, arg2, offset + 4); 471 + tcg_gen_ld_i32(TCGV_HIGH(ret), arg2, offset + 4);
406 #endif 472 #endif
407 } 473 }
408 474
409 -static inline void tcg_gen_st8_i64(int arg1, int arg2, tcg_target_long offset) 475 +static inline void tcg_gen_st8_i64(TCGv arg1, TCGv arg2, tcg_target_long offset)
410 { 476 {
411 tcg_gen_st8_i32(arg1, arg2, offset); 477 tcg_gen_st8_i32(arg1, arg2, offset);
412 } 478 }
413 479
414 -static inline void tcg_gen_st16_i64(int arg1, int arg2, tcg_target_long offset) 480 +static inline void tcg_gen_st16_i64(TCGv arg1, TCGv arg2, tcg_target_long offset)
415 { 481 {
416 tcg_gen_st16_i32(arg1, arg2, offset); 482 tcg_gen_st16_i32(arg1, arg2, offset);
417 } 483 }
418 484
419 -static inline void tcg_gen_st32_i64(int arg1, int arg2, tcg_target_long offset) 485 +static inline void tcg_gen_st32_i64(TCGv arg1, TCGv arg2, tcg_target_long offset)
420 { 486 {
421 tcg_gen_st_i32(arg1, arg2, offset); 487 tcg_gen_st_i32(arg1, arg2, offset);
422 } 488 }
423 489
424 -static inline void tcg_gen_st_i64(int arg1, int arg2, tcg_target_long offset) 490 +static inline void tcg_gen_st_i64(TCGv arg1, TCGv arg2, tcg_target_long offset)
425 { 491 {
426 #ifdef TCG_TARGET_WORDS_BIGENDIAN 492 #ifdef TCG_TARGET_WORDS_BIGENDIAN
427 - tcg_gen_st_i32(arg1 + 1, arg2, offset); 493 + tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset);
428 tcg_gen_st_i32(arg1, arg2, offset + 4); 494 tcg_gen_st_i32(arg1, arg2, offset + 4);
429 #else 495 #else
430 tcg_gen_st_i32(arg1, arg2, offset); 496 tcg_gen_st_i32(arg1, arg2, offset);
431 - tcg_gen_st_i32(arg1 + 1, arg2, offset + 4); 497 + tcg_gen_st_i32(TCGV_HIGH(arg1), arg2, offset + 4);
432 #endif 498 #endif
433 } 499 }
434 500
435 -static inline void tcg_gen_add_i64(int ret, int arg1, int arg2) 501 +static inline void tcg_gen_add_i64(TCGv ret, TCGv arg1, TCGv arg2)
436 { 502 {
437 - tcg_gen_op6(INDEX_op_add2_i32, ret, ret + 1,  
438 - arg1, arg1 + 1, arg2, arg2 + 1); 503 + tcg_gen_op6(INDEX_op_add2_i32, ret, TCGV_HIGH(ret),
  504 + arg1, TCGV_HIGH(arg1), arg2, TCGV_HIGH(arg2));
439 } 505 }
440 506
441 -static inline void tcg_gen_addi_i64(int ret, int arg1, int64_t arg2) 507 +static inline void tcg_gen_addi_i64(TCGv ret, TCGv arg1, int64_t arg2)
442 { 508 {
443 tcg_gen_add_i64(ret, arg1, tcg_const_i64(arg2)); 509 tcg_gen_add_i64(ret, arg1, tcg_const_i64(arg2));
444 } 510 }
445 511
446 -static inline void tcg_gen_sub_i64(int ret, int arg1, int arg2) 512 +static inline void tcg_gen_sub_i64(TCGv ret, TCGv arg1, TCGv arg2)
447 { 513 {
448 - tcg_gen_op6(INDEX_op_sub2_i32, ret, ret + 1,  
449 - arg1, arg1 + 1, arg2, arg2 + 1); 514 + tcg_gen_op6(INDEX_op_sub2_i32, ret, TCGV_HIGH(ret),
  515 + arg1, TCGV_HIGH(arg1), arg2, TCGV_HIGH(arg2));
450 } 516 }
451 517
452 -static inline void tcg_gen_subi_i64(int ret, int arg1, int64_t arg2) 518 +static inline void tcg_gen_subi_i64(TCGv ret, TCGv arg1, int64_t arg2)
453 { 519 {
454 tcg_gen_sub_i64(ret, arg1, tcg_const_i64(arg2)); 520 tcg_gen_sub_i64(ret, arg1, tcg_const_i64(arg2));
455 } 521 }
456 522
457 -static inline void tcg_gen_and_i64(int ret, int arg1, int arg2) 523 +static inline void tcg_gen_and_i64(TCGv ret, TCGv arg1, TCGv arg2)
458 { 524 {
459 tcg_gen_and_i32(ret, arg1, arg2); 525 tcg_gen_and_i32(ret, arg1, arg2);
460 - tcg_gen_and_i32(ret + 1, arg1 + 1, arg2 + 1); 526 + tcg_gen_and_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2));
461 } 527 }
462 528
463 -static inline void tcg_gen_andi_i64(int ret, int arg1, int64_t arg2) 529 +static inline void tcg_gen_andi_i64(TCGv ret, TCGv arg1, int64_t arg2)
464 { 530 {
465 tcg_gen_andi_i32(ret, arg1, arg2); 531 tcg_gen_andi_i32(ret, arg1, arg2);
466 - tcg_gen_andi_i32(ret + 1, arg1 + 1, arg2 >> 32); 532 + tcg_gen_andi_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32);
467 } 533 }
468 534
469 -static inline void tcg_gen_or_i64(int ret, int arg1, int arg2) 535 +static inline void tcg_gen_or_i64(TCGv ret, TCGv arg1, TCGv arg2)
470 { 536 {
471 tcg_gen_or_i32(ret, arg1, arg2); 537 tcg_gen_or_i32(ret, arg1, arg2);
472 - tcg_gen_or_i32(ret + 1, arg1 + 1, arg2 + 1); 538 + tcg_gen_or_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2));
473 } 539 }
474 540
475 -static inline void tcg_gen_ori_i64(int ret, int arg1, int64_t arg2) 541 +static inline void tcg_gen_ori_i64(TCGv ret, TCGv arg1, int64_t arg2)
476 { 542 {
477 tcg_gen_ori_i32(ret, arg1, arg2); 543 tcg_gen_ori_i32(ret, arg1, arg2);
478 - tcg_gen_ori_i32(ret + 1, arg1 + 1, arg2 >> 32); 544 + tcg_gen_ori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32);
479 } 545 }
480 546
481 -static inline void tcg_gen_xor_i64(int ret, int arg1, int arg2) 547 +static inline void tcg_gen_xor_i64(TCGv ret, TCGv arg1, TCGv arg2)
482 { 548 {
483 tcg_gen_xor_i32(ret, arg1, arg2); 549 tcg_gen_xor_i32(ret, arg1, arg2);
484 - tcg_gen_xor_i32(ret + 1, arg1 + 1, arg2 + 1); 550 + tcg_gen_xor_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), TCGV_HIGH(arg2));
485 } 551 }
486 552
487 -static inline void tcg_gen_xori_i64(int ret, int arg1, int64_t arg2) 553 +static inline void tcg_gen_xori_i64(TCGv ret, TCGv arg1, int64_t arg2)
488 { 554 {
489 tcg_gen_xori_i32(ret, arg1, arg2); 555 tcg_gen_xori_i32(ret, arg1, arg2);
490 - tcg_gen_xori_i32(ret + 1, arg1 + 1, arg2 >> 32); 556 + tcg_gen_xori_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), arg2 >> 32);
491 } 557 }
492 558
493 /* XXX: use generic code when basic block handling is OK or CPU 559 /* XXX: use generic code when basic block handling is OK or CPU
494 specific code (x86) */ 560 specific code (x86) */
495 -static inline void tcg_gen_shl_i64(int ret, int arg1, int64_t arg2) 561 +static inline void tcg_gen_shl_i64(TCGv ret, TCGv arg1, TCGv arg2)
496 { 562 {
497 tcg_gen_helper_1_2(tcg_helper_shl_i64, ret, arg1, arg2); 563 tcg_gen_helper_1_2(tcg_helper_shl_i64, ret, arg1, arg2);
498 } 564 }
499 565
500 -static inline void tcg_gen_shli_i64(int ret, int arg1, int64_t arg2) 566 +static inline void tcg_gen_shli_i64(TCGv ret, TCGv arg1, int64_t arg2)
501 { 567 {
502 tcg_gen_shifti_i64(ret, arg1, arg2, 0, 0); 568 tcg_gen_shifti_i64(ret, arg1, arg2, 0, 0);
503 } 569 }
504 570
505 -static inline void tcg_gen_shr_i64(int ret, int arg1, int64_t arg2) 571 +static inline void tcg_gen_shr_i64(TCGv ret, TCGv arg1, TCGv arg2)
506 { 572 {
507 tcg_gen_helper_1_2(tcg_helper_shr_i64, ret, arg1, arg2); 573 tcg_gen_helper_1_2(tcg_helper_shr_i64, ret, arg1, arg2);
508 } 574 }
509 575
510 -static inline void tcg_gen_shri_i64(int ret, int arg1, int64_t arg2) 576 +static inline void tcg_gen_shri_i64(TCGv ret, TCGv arg1, int64_t arg2)
511 { 577 {
512 tcg_gen_shifti_i64(ret, arg1, arg2, 1, 0); 578 tcg_gen_shifti_i64(ret, arg1, arg2, 1, 0);
513 } 579 }
514 580
515 -static inline void tcg_gen_sar_i64(int ret, int arg1, int64_t arg2) 581 +static inline void tcg_gen_sar_i64(TCGv ret, TCGv arg1, TCGv arg2)
516 { 582 {
517 tcg_gen_helper_1_2(tcg_helper_sar_i64, ret, arg1, arg2); 583 tcg_gen_helper_1_2(tcg_helper_sar_i64, ret, arg1, arg2);
518 } 584 }
519 585
520 -static inline void tcg_gen_sari_i64(int ret, int arg1, int64_t arg2) 586 +static inline void tcg_gen_sari_i64(TCGv ret, TCGv arg1, int64_t arg2)
521 { 587 {
522 tcg_gen_shifti_i64(ret, arg1, arg2, 1, 1); 588 tcg_gen_shifti_i64(ret, arg1, arg2, 1, 1);
523 } 589 }
524 590
525 -static inline void tcg_gen_brcond_i64(int cond, TCGArg arg1, TCGArg arg2, 591 +static inline void tcg_gen_brcond_i64(int cond, TCGv arg1, TCGv arg2,
526 int label_index) 592 int label_index)
527 { 593 {
528 - tcg_gen_op6(INDEX_op_brcond2_i32,  
529 - arg1, arg1 + 1, arg2, arg2 + 1, cond, label_index); 594 + tcg_gen_op6ii(INDEX_op_brcond2_i32,
  595 + arg1, TCGV_HIGH(arg1), arg2, TCGV_HIGH(arg2),
  596 + cond, label_index);
530 } 597 }
531 598
532 -static inline void tcg_gen_mul_i64(int ret, int arg1, int arg2) 599 +static inline void tcg_gen_mul_i64(TCGv ret, TCGv arg1, TCGv arg2)
533 { 600 {
534 - int t0, t1; 601 + TCGv t0, t1;
535 602
536 t0 = tcg_temp_new(TCG_TYPE_I64); 603 t0 = tcg_temp_new(TCG_TYPE_I64);
537 t1 = tcg_temp_new(TCG_TYPE_I32); 604 t1 = tcg_temp_new(TCG_TYPE_I32);
538 605
539 - tcg_gen_op4(INDEX_op_mulu2_i32, t0, t0 + 1, arg1, arg2); 606 + tcg_gen_op4(INDEX_op_mulu2_i32, t0, TCGV_HIGH(t0), arg1, arg2);
540 607
541 - tcg_gen_mul_i32(t1, arg1, arg2 + 1);  
542 - tcg_gen_add_i32(t0 + 1, t0 + 1, t1);  
543 - tcg_gen_mul_i32(t1, arg1 + 1, arg2);  
544 - tcg_gen_add_i32(t0 + 1, t0 + 1, t1); 608 + tcg_gen_mul_i32(t1, arg1, TCGV_HIGH(arg2));
  609 + tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1);
  610 + tcg_gen_mul_i32(t1, TCGV_HIGH(arg1), arg2);
  611 + tcg_gen_add_i32(TCGV_HIGH(t0), TCGV_HIGH(t0), t1);
545 612
546 tcg_gen_mov_i64(ret, t0); 613 tcg_gen_mov_i64(ret, t0);
547 } 614 }
548 615
549 -static inline void tcg_gen_div_i64(int ret, int arg1, int64_t arg2) 616 +static inline void tcg_gen_div_i64(TCGv ret, TCGv arg1, TCGv arg2)
550 { 617 {
551 tcg_gen_helper_1_2(tcg_helper_div_i64, ret, arg1, arg2); 618 tcg_gen_helper_1_2(tcg_helper_div_i64, ret, arg1, arg2);
552 } 619 }
553 620
554 -static inline void tcg_gen_rem_i64(int ret, int arg1, int64_t arg2) 621 +static inline void tcg_gen_rem_i64(TCGv ret, TCGv arg1, TCGv arg2)
555 { 622 {
556 tcg_gen_helper_1_2(tcg_helper_rem_i64, ret, arg1, arg2); 623 tcg_gen_helper_1_2(tcg_helper_rem_i64, ret, arg1, arg2);
557 } 624 }
558 625
559 -static inline void tcg_gen_divu_i64(int ret, int arg1, int64_t arg2) 626 +static inline void tcg_gen_divu_i64(TCGv ret, TCGv arg1, TCGv arg2)
560 { 627 {
561 tcg_gen_helper_1_2(tcg_helper_divu_i64, ret, arg1, arg2); 628 tcg_gen_helper_1_2(tcg_helper_divu_i64, ret, arg1, arg2);
562 } 629 }
563 630
564 -static inline void tcg_gen_remu_i64(int ret, int arg1, int64_t arg2) 631 +static inline void tcg_gen_remu_i64(TCGv ret, TCGv arg1, TCGv arg2)
565 { 632 {
566 tcg_gen_helper_1_2(tcg_helper_remu_i64, ret, arg1, arg2); 633 tcg_gen_helper_1_2(tcg_helper_remu_i64, ret, arg1, arg2);
567 } 634 }
568 635
569 #else 636 #else
570 637
571 -static inline void tcg_gen_mov_i64(int ret, int arg) 638 +static inline void tcg_gen_mov_i64(TCGv ret, TCGv arg)
572 { 639 {
573 tcg_gen_op2(INDEX_op_mov_i64, ret, arg); 640 tcg_gen_op2(INDEX_op_mov_i64, ret, arg);
574 } 641 }
575 642
576 -static inline void tcg_gen_movi_i64(int ret, int64_t arg) 643 +static inline void tcg_gen_movi_i64(TCGv ret, int64_t arg)
577 { 644 {
578 - tcg_gen_op2(INDEX_op_movi_i64, ret, arg); 645 + tcg_gen_op2i(INDEX_op_movi_i64, ret, arg);
579 } 646 }
580 647
581 -static inline void tcg_gen_ld8u_i64(int ret, int arg2, tcg_target_long offset) 648 +static inline void tcg_gen_ld8u_i64(TCGv ret, TCGv arg2,
  649 + tcg_target_long offset)
582 { 650 {
583 - tcg_gen_op3(INDEX_op_ld8u_i64, ret, arg2, offset); 651 + tcg_gen_op3i(INDEX_op_ld8u_i64, ret, arg2, offset);
584 } 652 }
585 653
586 -static inline void tcg_gen_ld8s_i64(int ret, int arg2, tcg_target_long offset) 654 +static inline void tcg_gen_ld8s_i64(TCGv ret, TCGv arg2,
  655 + tcg_target_long offset)
587 { 656 {
588 - tcg_gen_op3(INDEX_op_ld8s_i64, ret, arg2, offset); 657 + tcg_gen_op3i(INDEX_op_ld8s_i64, ret, arg2, offset);
589 } 658 }
590 659
591 -static inline void tcg_gen_ld16u_i64(int ret, int arg2, tcg_target_long offset) 660 +static inline void tcg_gen_ld16u_i64(TCGv ret, TCGv arg2,
  661 + tcg_target_long offset)
592 { 662 {
593 - tcg_gen_op3(INDEX_op_ld16u_i64, ret, arg2, offset); 663 + tcg_gen_op3i(INDEX_op_ld16u_i64, ret, arg2, offset);
594 } 664 }
595 665
596 -static inline void tcg_gen_ld16s_i64(int ret, int arg2, tcg_target_long offset) 666 +static inline void tcg_gen_ld16s_i64(TCGv ret, TCGv arg2,
  667 + tcg_target_long offset)
597 { 668 {
598 - tcg_gen_op3(INDEX_op_ld16s_i64, ret, arg2, offset); 669 + tcg_gen_op3i(INDEX_op_ld16s_i64, ret, arg2, offset);
599 } 670 }
600 671
601 -static inline void tcg_gen_ld32u_i64(int ret, int arg2, tcg_target_long offset) 672 +static inline void tcg_gen_ld32u_i64(TCGv ret, TCGv arg2,
  673 + tcg_target_long offset)
602 { 674 {
603 - tcg_gen_op3(INDEX_op_ld32u_i64, ret, arg2, offset); 675 + tcg_gen_op3i(INDEX_op_ld32u_i64, ret, arg2, offset);
604 } 676 }
605 677
606 -static inline void tcg_gen_ld32s_i64(int ret, int arg2, tcg_target_long offset) 678 +static inline void tcg_gen_ld32s_i64(TCGv ret, TCGv arg2,
  679 + tcg_target_long offset)
607 { 680 {
608 - tcg_gen_op3(INDEX_op_ld32s_i64, ret, arg2, offset); 681 + tcg_gen_op3i(INDEX_op_ld32s_i64, ret, arg2, offset);
609 } 682 }
610 683
611 -static inline void tcg_gen_ld_i64(int ret, int arg2, tcg_target_long offset) 684 +static inline void tcg_gen_ld_i64(TCGv ret, TCGv arg2, tcg_target_long offset)
612 { 685 {
613 - tcg_gen_op3(INDEX_op_ld_i64, ret, arg2, offset); 686 + tcg_gen_op3i(INDEX_op_ld_i64, ret, arg2, offset);
614 } 687 }
615 688
616 -static inline void tcg_gen_st8_i64(int arg1, int arg2, tcg_target_long offset) 689 +static inline void tcg_gen_st8_i64(TCGv arg1, TCGv arg2,
  690 + tcg_target_long offset)
617 { 691 {
618 - tcg_gen_op3(INDEX_op_st8_i64, arg1, arg2, offset); 692 + tcg_gen_op3i(INDEX_op_st8_i64, arg1, arg2, offset);
619 } 693 }
620 694
621 -static inline void tcg_gen_st16_i64(int arg1, int arg2, tcg_target_long offset) 695 +static inline void tcg_gen_st16_i64(TCGv arg1, TCGv arg2,
  696 + tcg_target_long offset)
622 { 697 {
623 - tcg_gen_op3(INDEX_op_st16_i64, arg1, arg2, offset); 698 + tcg_gen_op3i(INDEX_op_st16_i64, arg1, arg2, offset);
624 } 699 }
625 700
626 -static inline void tcg_gen_st32_i64(int arg1, int arg2, tcg_target_long offset) 701 +static inline void tcg_gen_st32_i64(TCGv arg1, TCGv arg2,
  702 + tcg_target_long offset)
627 { 703 {
628 - tcg_gen_op3(INDEX_op_st32_i64, arg1, arg2, offset); 704 + tcg_gen_op3i(INDEX_op_st32_i64, arg1, arg2, offset);
629 } 705 }
630 706
631 -static inline void tcg_gen_st_i64(int arg1, int arg2, tcg_target_long offset) 707 +static inline void tcg_gen_st_i64(TCGv arg1, TCGv arg2, tcg_target_long offset)
632 { 708 {
633 - tcg_gen_op3(INDEX_op_st_i64, arg1, arg2, offset); 709 + tcg_gen_op3i(INDEX_op_st_i64, arg1, arg2, offset);
634 } 710 }
635 711
636 -static inline void tcg_gen_add_i64(int ret, int arg1, int arg2) 712 +static inline void tcg_gen_add_i64(TCGv ret, TCGv arg1, TCGv arg2)
637 { 713 {
638 tcg_gen_op3(INDEX_op_add_i64, ret, arg1, arg2); 714 tcg_gen_op3(INDEX_op_add_i64, ret, arg1, arg2);
639 } 715 }
640 716
641 -static inline void tcg_gen_addi_i64(int ret, int arg1, int64_t arg2) 717 +static inline void tcg_gen_addi_i64(TCGv ret, TCGv arg1, int64_t arg2)
642 { 718 {
643 tcg_gen_add_i64(ret, arg1, tcg_const_i64(arg2)); 719 tcg_gen_add_i64(ret, arg1, tcg_const_i64(arg2));
644 } 720 }
645 721
646 -static inline void tcg_gen_sub_i64(int ret, int arg1, int arg2) 722 +static inline void tcg_gen_sub_i64(TCGv ret, TCGv arg1, TCGv arg2)
647 { 723 {
648 tcg_gen_op3(INDEX_op_sub_i64, ret, arg1, arg2); 724 tcg_gen_op3(INDEX_op_sub_i64, ret, arg1, arg2);
649 } 725 }
650 726
651 -static inline void tcg_gen_subi_i64(int ret, int arg1, int64_t arg2) 727 +static inline void tcg_gen_subi_i64(TCGv ret, TCGv arg1, int64_t arg2)
652 { 728 {
653 tcg_gen_sub_i64(ret, arg1, tcg_const_i64(arg2)); 729 tcg_gen_sub_i64(ret, arg1, tcg_const_i64(arg2));
654 } 730 }
655 731
656 -static inline void tcg_gen_and_i64(int ret, int arg1, int arg2) 732 +static inline void tcg_gen_and_i64(TCGv ret, TCGv arg1, TCGv arg2)
657 { 733 {
658 tcg_gen_op3(INDEX_op_and_i64, ret, arg1, arg2); 734 tcg_gen_op3(INDEX_op_and_i64, ret, arg1, arg2);
659 } 735 }
660 736
661 -static inline void tcg_gen_andi_i64(int ret, int arg1, int64_t arg2) 737 +static inline void tcg_gen_andi_i64(TCGv ret, TCGv arg1, int64_t arg2)
662 { 738 {
663 tcg_gen_and_i64(ret, arg1, tcg_const_i64(arg2)); 739 tcg_gen_and_i64(ret, arg1, tcg_const_i64(arg2));
664 } 740 }
665 741
666 -static inline void tcg_gen_or_i64(int ret, int arg1, int arg2) 742 +static inline void tcg_gen_or_i64(TCGv ret, TCGv arg1, TCGv arg2)
667 { 743 {
668 tcg_gen_op3(INDEX_op_or_i64, ret, arg1, arg2); 744 tcg_gen_op3(INDEX_op_or_i64, ret, arg1, arg2);
669 } 745 }
670 746
671 -static inline void tcg_gen_ori_i64(int ret, int arg1, int64_t arg2) 747 +static inline void tcg_gen_ori_i64(TCGv ret, TCGv arg1, int64_t arg2)
672 { 748 {
673 tcg_gen_or_i64(ret, arg1, tcg_const_i64(arg2)); 749 tcg_gen_or_i64(ret, arg1, tcg_const_i64(arg2));
674 } 750 }
675 751
676 -static inline void tcg_gen_xor_i64(int ret, int arg1, int arg2) 752 +static inline void tcg_gen_xor_i64(TCGv ret, TCGv arg1, TCGv arg2)
677 { 753 {
678 tcg_gen_op3(INDEX_op_xor_i64, ret, arg1, arg2); 754 tcg_gen_op3(INDEX_op_xor_i64, ret, arg1, arg2);
679 } 755 }
680 756
681 -static inline void tcg_gen_xori_i64(int ret, int arg1, int64_t arg2) 757 +static inline void tcg_gen_xori_i64(TCGv ret, TCGv arg1, int64_t arg2)
682 { 758 {
683 tcg_gen_xor_i64(ret, arg1, tcg_const_i64(arg2)); 759 tcg_gen_xor_i64(ret, arg1, tcg_const_i64(arg2));
684 } 760 }
685 761
686 -static inline void tcg_gen_shl_i64(int ret, int arg1, int arg2) 762 +static inline void tcg_gen_shl_i64(TCGv ret, TCGv arg1, TCGv arg2)
687 { 763 {
688 tcg_gen_op3(INDEX_op_shl_i64, ret, arg1, arg2); 764 tcg_gen_op3(INDEX_op_shl_i64, ret, arg1, arg2);
689 } 765 }
690 766
691 -static inline void tcg_gen_shli_i64(int ret, int arg1, int64_t arg2) 767 +static inline void tcg_gen_shli_i64(TCGv ret, TCGv arg1, int64_t arg2)
692 { 768 {
693 tcg_gen_shl_i64(ret, arg1, tcg_const_i64(arg2)); 769 tcg_gen_shl_i64(ret, arg1, tcg_const_i64(arg2));
694 } 770 }
695 771
696 -static inline void tcg_gen_shr_i64(int ret, int arg1, int arg2) 772 +static inline void tcg_gen_shr_i64(TCGv ret, TCGv arg1, TCGv arg2)
697 { 773 {
698 tcg_gen_op3(INDEX_op_shr_i64, ret, arg1, arg2); 774 tcg_gen_op3(INDEX_op_shr_i64, ret, arg1, arg2);
699 } 775 }
700 776
701 -static inline void tcg_gen_shri_i64(int ret, int arg1, int64_t arg2) 777 +static inline void tcg_gen_shri_i64(TCGv ret, TCGv arg1, int64_t arg2)
702 { 778 {
703 tcg_gen_shr_i64(ret, arg1, tcg_const_i64(arg2)); 779 tcg_gen_shr_i64(ret, arg1, tcg_const_i64(arg2));
704 } 780 }
705 781
706 -static inline void tcg_gen_sar_i64(int ret, int arg1, int arg2) 782 +static inline void tcg_gen_sar_i64(TCGv ret, TCGv arg1, TCGv arg2)
707 { 783 {
708 tcg_gen_op3(INDEX_op_sar_i64, ret, arg1, arg2); 784 tcg_gen_op3(INDEX_op_sar_i64, ret, arg1, arg2);
709 } 785 }
710 786
711 -static inline void tcg_gen_sari_i64(int ret, int arg1, int64_t arg2) 787 +static inline void tcg_gen_sari_i64(TCGv ret, TCGv arg1, int64_t arg2)
712 { 788 {
713 tcg_gen_sar_i64(ret, arg1, tcg_const_i64(arg2)); 789 tcg_gen_sar_i64(ret, arg1, tcg_const_i64(arg2));
714 } 790 }
715 791
716 -static inline void tcg_gen_brcond_i64(int cond, TCGArg arg1, TCGArg arg2, 792 +static inline void tcg_gen_brcond_i64(int cond, TCGv arg1, TCGv arg2,
717 int label_index) 793 int label_index)
718 { 794 {
719 - tcg_gen_op4(INDEX_op_brcond_i64, arg1, arg2, cond, label_index); 795 + tcg_gen_op4ii(INDEX_op_brcond_i64, arg1, arg2, cond, label_index);
720 } 796 }
721 797
722 -static inline void tcg_gen_mul_i64(int ret, int arg1, int arg2) 798 +static inline void tcg_gen_mul_i64(TCGv ret, TCGv arg1, TCGv arg2)
723 { 799 {
724 tcg_gen_op3(INDEX_op_mul_i64, ret, arg1, arg2); 800 tcg_gen_op3(INDEX_op_mul_i64, ret, arg1, arg2);
725 } 801 }
726 802
727 #ifdef TCG_TARGET_HAS_div_i64 803 #ifdef TCG_TARGET_HAS_div_i64
728 -static inline void tcg_gen_div_i64(int ret, int arg1, int arg2) 804 +static inline void tcg_gen_div_i64(TCGv ret, TCGv arg1, TCGv arg2)
729 { 805 {
730 tcg_gen_op3(INDEX_op_div_i64, ret, arg1, arg2); 806 tcg_gen_op3(INDEX_op_div_i64, ret, arg1, arg2);
731 } 807 }
732 808
733 -static inline void tcg_gen_rem_i64(int ret, int arg1, int arg2) 809 +static inline void tcg_gen_rem_i64(TCGv ret, TCGv arg1, TCGv arg2)
734 { 810 {
735 tcg_gen_op3(INDEX_op_rem_i64, ret, arg1, arg2); 811 tcg_gen_op3(INDEX_op_rem_i64, ret, arg1, arg2);
736 } 812 }
737 813
738 -static inline void tcg_gen_divu_i64(int ret, int arg1, int arg2) 814 +static inline void tcg_gen_divu_i64(TCGv ret, TCGv arg1, TCGv arg2)
739 { 815 {
740 tcg_gen_op3(INDEX_op_divu_i64, ret, arg1, arg2); 816 tcg_gen_op3(INDEX_op_divu_i64, ret, arg1, arg2);
741 } 817 }
742 818
743 -static inline void tcg_gen_remu_i64(int ret, int arg1, int arg2) 819 +static inline void tcg_gen_remu_i64(TCGv ret, TCGv arg1, TCGv arg2)
744 { 820 {
745 tcg_gen_op3(INDEX_op_remu_i64, ret, arg1, arg2); 821 tcg_gen_op3(INDEX_op_remu_i64, ret, arg1, arg2);
746 } 822 }
747 #else 823 #else
748 -static inline void tcg_gen_div_i64(int ret, int arg1, int arg2) 824 +static inline void tcg_gen_div_i64(TCGv ret, TCGv arg1, TCGv arg2)
749 { 825 {
750 - int t0; 826 + TCGv t0;
751 t0 = tcg_temp_new(TCG_TYPE_I64); 827 t0 = tcg_temp_new(TCG_TYPE_I64);
752 tcg_gen_sari_i64(t0, arg1, 63); 828 tcg_gen_sari_i64(t0, arg1, 63);
753 tcg_gen_op5(INDEX_op_div2_i64, ret, t0, arg1, t0, arg2); 829 tcg_gen_op5(INDEX_op_div2_i64, ret, t0, arg1, t0, arg2);
754 } 830 }
755 831
756 -static inline void tcg_gen_rem_i64(int ret, int arg1, int arg2) 832 +static inline void tcg_gen_rem_i64(TCGv ret, TCGv arg1, TCGv arg2)
757 { 833 {
758 - int t0; 834 + TCGv t0;
759 t0 = tcg_temp_new(TCG_TYPE_I64); 835 t0 = tcg_temp_new(TCG_TYPE_I64);
760 tcg_gen_sari_i64(t0, arg1, 63); 836 tcg_gen_sari_i64(t0, arg1, 63);
761 tcg_gen_op5(INDEX_op_div2_i64, t0, ret, arg1, t0, arg2); 837 tcg_gen_op5(INDEX_op_div2_i64, t0, ret, arg1, t0, arg2);
762 } 838 }
763 839
764 -static inline void tcg_gen_divu_i64(int ret, int arg1, int arg2) 840 +static inline void tcg_gen_divu_i64(TCGv ret, TCGv arg1, TCGv arg2)
765 { 841 {
766 - int t0; 842 + TCGv t0;
767 t0 = tcg_temp_new(TCG_TYPE_I64); 843 t0 = tcg_temp_new(TCG_TYPE_I64);
768 tcg_gen_movi_i64(t0, 0); 844 tcg_gen_movi_i64(t0, 0);
769 tcg_gen_op5(INDEX_op_divu2_i64, ret, t0, arg1, t0, arg2); 845 tcg_gen_op5(INDEX_op_divu2_i64, ret, t0, arg1, t0, arg2);
770 } 846 }
771 847
772 -static inline void tcg_gen_remu_i64(int ret, int arg1, int arg2) 848 +static inline void tcg_gen_remu_i64(TCGv ret, TCGv arg1, TCGv arg2)
773 { 849 {
774 - int t0; 850 + TCGv t0;
775 t0 = tcg_temp_new(TCG_TYPE_I64); 851 t0 = tcg_temp_new(TCG_TYPE_I64);
776 tcg_gen_movi_i64(t0, 0); 852 tcg_gen_movi_i64(t0, 0);
777 tcg_gen_op5(INDEX_op_divu2_i64, t0, ret, arg1, t0, arg2); 853 tcg_gen_op5(INDEX_op_divu2_i64, t0, ret, arg1, t0, arg2);
@@ -783,7 +859,7 @@ static inline void tcg_gen_remu_i64(int ret, int arg1, int arg2) @@ -783,7 +859,7 @@ static inline void tcg_gen_remu_i64(int ret, int arg1, int arg2)
783 /***************************************/ 859 /***************************************/
784 /* optional operations */ 860 /* optional operations */
785 861
786 -static inline void tcg_gen_ext8s_i32(int ret, int arg) 862 +static inline void tcg_gen_ext8s_i32(TCGv ret, TCGv arg)
787 { 863 {
788 #ifdef TCG_TARGET_HAS_ext8s_i32 864 #ifdef TCG_TARGET_HAS_ext8s_i32
789 tcg_gen_op2(INDEX_op_ext8s_i32, ret, arg); 865 tcg_gen_op2(INDEX_op_ext8s_i32, ret, arg);
@@ -793,7 +869,7 @@ static inline void tcg_gen_ext8s_i32(int ret, int arg) @@ -793,7 +869,7 @@ static inline void tcg_gen_ext8s_i32(int ret, int arg)
793 #endif 869 #endif
794 } 870 }
795 871
796 -static inline void tcg_gen_ext16s_i32(int ret, int arg) 872 +static inline void tcg_gen_ext16s_i32(TCGv ret, TCGv arg)
797 { 873 {
798 #ifdef TCG_TARGET_HAS_ext16s_i32 874 #ifdef TCG_TARGET_HAS_ext16s_i32
799 tcg_gen_op2(INDEX_op_ext16s_i32, ret, arg); 875 tcg_gen_op2(INDEX_op_ext16s_i32, ret, arg);
@@ -804,12 +880,12 @@ static inline void tcg_gen_ext16s_i32(int ret, int arg) @@ -804,12 +880,12 @@ static inline void tcg_gen_ext16s_i32(int ret, int arg)
804 } 880 }
805 881
806 /* Note: we assume the two high bytes are set to zero */ 882 /* Note: we assume the two high bytes are set to zero */
807 -static inline void tcg_gen_bswap16_i32(TCGArg ret, TCGArg arg) 883 +static inline void tcg_gen_bswap16_i32(TCGv ret, TCGv arg)
808 { 884 {
809 #ifdef TCG_TARGET_HAS_bswap16_i32 885 #ifdef TCG_TARGET_HAS_bswap16_i32
810 tcg_gen_op2(INDEX_op_bswap16_i32, ret, arg); 886 tcg_gen_op2(INDEX_op_bswap16_i32, ret, arg);
811 #else 887 #else
812 - TCGArg t0, t1; 888 + TCGv t0, t1;
813 t0 = tcg_temp_new(TCG_TYPE_I32); 889 t0 = tcg_temp_new(TCG_TYPE_I32);
814 t1 = tcg_temp_new(TCG_TYPE_I32); 890 t1 = tcg_temp_new(TCG_TYPE_I32);
815 891
@@ -820,12 +896,12 @@ static inline void tcg_gen_bswap16_i32(TCGArg ret, TCGArg arg) @@ -820,12 +896,12 @@ static inline void tcg_gen_bswap16_i32(TCGArg ret, TCGArg arg)
820 #endif 896 #endif
821 } 897 }
822 898
823 -static inline void tcg_gen_bswap_i32(TCGArg ret, TCGArg arg) 899 +static inline void tcg_gen_bswap_i32(TCGv ret, TCGv arg)
824 { 900 {
825 #ifdef TCG_TARGET_HAS_bswap_i32 901 #ifdef TCG_TARGET_HAS_bswap_i32
826 tcg_gen_op2(INDEX_op_bswap_i32, ret, arg); 902 tcg_gen_op2(INDEX_op_bswap_i32, ret, arg);
827 #else 903 #else
828 - TCGArg t0, t1; 904 + TCGv t0, t1;
829 t0 = tcg_temp_new(TCG_TYPE_I32); 905 t0 = tcg_temp_new(TCG_TYPE_I32);
830 t1 = tcg_temp_new(TCG_TYPE_I32); 906 t1 = tcg_temp_new(TCG_TYPE_I32);
831 907
@@ -845,55 +921,55 @@ static inline void tcg_gen_bswap_i32(TCGArg ret, TCGArg arg) @@ -845,55 +921,55 @@ static inline void tcg_gen_bswap_i32(TCGArg ret, TCGArg arg)
845 } 921 }
846 922
847 #if TCG_TARGET_REG_BITS == 32 923 #if TCG_TARGET_REG_BITS == 32
848 -static inline void tcg_gen_ext8s_i64(int ret, int arg) 924 +static inline void tcg_gen_ext8s_i64(TCGv ret, TCGv arg)
849 { 925 {
850 tcg_gen_ext8s_i32(ret, arg); 926 tcg_gen_ext8s_i32(ret, arg);
851 - tcg_gen_sari_i32(ret + 1, ret, 31); 927 + tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31);
852 } 928 }
853 929
854 -static inline void tcg_gen_ext16s_i64(int ret, int arg) 930 +static inline void tcg_gen_ext16s_i64(TCGv ret, TCGv arg)
855 { 931 {
856 tcg_gen_ext16s_i32(ret, arg); 932 tcg_gen_ext16s_i32(ret, arg);
857 - tcg_gen_sari_i32(ret + 1, ret, 31); 933 + tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31);
858 } 934 }
859 935
860 -static inline void tcg_gen_ext32s_i64(int ret, int arg) 936 +static inline void tcg_gen_ext32s_i64(TCGv ret, TCGv arg)
861 { 937 {
862 tcg_gen_mov_i32(ret, arg); 938 tcg_gen_mov_i32(ret, arg);
863 - tcg_gen_sari_i32(ret + 1, ret, 31); 939 + tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31);
864 } 940 }
865 941
866 -static inline void tcg_gen_trunc_i64_i32(int ret, int arg) 942 +static inline void tcg_gen_trunc_i64_i32(TCGv ret, TCGv arg)
867 { 943 {
868 tcg_gen_mov_i32(ret, arg); 944 tcg_gen_mov_i32(ret, arg);
869 } 945 }
870 946
871 -static inline void tcg_gen_extu_i32_i64(int ret, int arg) 947 +static inline void tcg_gen_extu_i32_i64(TCGv ret, TCGv arg)
872 { 948 {
873 tcg_gen_mov_i32(ret, arg); 949 tcg_gen_mov_i32(ret, arg);
874 - tcg_gen_movi_i32(ret + 1, 0); 950 + tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
875 } 951 }
876 952
877 -static inline void tcg_gen_ext_i32_i64(int ret, int arg) 953 +static inline void tcg_gen_ext_i32_i64(TCGv ret, TCGv arg)
878 { 954 {
879 tcg_gen_mov_i32(ret, arg); 955 tcg_gen_mov_i32(ret, arg);
880 - tcg_gen_sari_i32(ret + 1, ret, 31); 956 + tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31);
881 } 957 }
882 958
883 -static inline void tcg_gen_bswap_i64(int ret, int arg) 959 +static inline void tcg_gen_bswap_i64(TCGv ret, TCGv arg)
884 { 960 {
885 - int t0, t1; 961 + TCGv t0, t1;
886 t0 = tcg_temp_new(TCG_TYPE_I32); 962 t0 = tcg_temp_new(TCG_TYPE_I32);
887 t1 = tcg_temp_new(TCG_TYPE_I32); 963 t1 = tcg_temp_new(TCG_TYPE_I32);
888 964
889 tcg_gen_bswap_i32(t0, arg); 965 tcg_gen_bswap_i32(t0, arg);
890 - tcg_gen_bswap_i32(t1, arg + 1); 966 + tcg_gen_bswap_i32(t1, TCGV_HIGH(arg));
891 tcg_gen_mov_i32(ret, t1); 967 tcg_gen_mov_i32(ret, t1);
892 - tcg_gen_mov_i32(ret + 1, t0); 968 + tcg_gen_mov_i32(TCGV_HIGH(ret), t0);
893 } 969 }
894 #else 970 #else
895 971
896 -static inline void tcg_gen_ext8s_i64(int ret, int arg) 972 +static inline void tcg_gen_ext8s_i64(TCGv ret, TCGv arg)
897 { 973 {
898 #ifdef TCG_TARGET_HAS_ext8s_i64 974 #ifdef TCG_TARGET_HAS_ext8s_i64
899 tcg_gen_op2(INDEX_op_ext8s_i64, ret, arg); 975 tcg_gen_op2(INDEX_op_ext8s_i64, ret, arg);
@@ -903,7 +979,7 @@ static inline void tcg_gen_ext8s_i64(int ret, int arg) @@ -903,7 +979,7 @@ static inline void tcg_gen_ext8s_i64(int ret, int arg)
903 #endif 979 #endif
904 } 980 }
905 981
906 -static inline void tcg_gen_ext16s_i64(int ret, int arg) 982 +static inline void tcg_gen_ext16s_i64(TCGv ret, TCGv arg)
907 { 983 {
908 #ifdef TCG_TARGET_HAS_ext16s_i64 984 #ifdef TCG_TARGET_HAS_ext16s_i64
909 tcg_gen_op2(INDEX_op_ext16s_i64, ret, arg); 985 tcg_gen_op2(INDEX_op_ext16s_i64, ret, arg);
@@ -913,7 +989,7 @@ static inline void tcg_gen_ext16s_i64(int ret, int arg) @@ -913,7 +989,7 @@ static inline void tcg_gen_ext16s_i64(int ret, int arg)
913 #endif 989 #endif
914 } 990 }
915 991
916 -static inline void tcg_gen_ext32s_i64(int ret, int arg) 992 +static inline void tcg_gen_ext32s_i64(TCGv ret, TCGv arg)
917 { 993 {
918 #ifdef TCG_TARGET_HAS_ext32s_i64 994 #ifdef TCG_TARGET_HAS_ext32s_i64
919 tcg_gen_op2(INDEX_op_ext32s_i64, ret, arg); 995 tcg_gen_op2(INDEX_op_ext32s_i64, ret, arg);
@@ -924,32 +1000,32 @@ static inline void tcg_gen_ext32s_i64(int ret, int arg) @@ -924,32 +1000,32 @@ static inline void tcg_gen_ext32s_i64(int ret, int arg)
924 } 1000 }
925 1001
926 /* Note: we assume the target supports move between 32 and 64 bit 1002 /* Note: we assume the target supports move between 32 and 64 bit
927 - registers */  
928 -static inline void tcg_gen_trunc_i64_i32(int ret, int arg) 1003 + registers. This will probably break MIPS64 targets. */
  1004 +static inline void tcg_gen_trunc_i64_i32(TCGv ret, TCGv arg)
929 { 1005 {
930 tcg_gen_mov_i32(ret, arg); 1006 tcg_gen_mov_i32(ret, arg);
931 } 1007 }
932 1008
933 /* Note: we assume the target supports move between 32 and 64 bit 1009 /* Note: we assume the target supports move between 32 and 64 bit
934 registers */ 1010 registers */
935 -static inline void tcg_gen_extu_i32_i64(int ret, int arg) 1011 +static inline void tcg_gen_extu_i32_i64(TCGv ret, TCGv arg)
936 { 1012 {
937 tcg_gen_andi_i64(ret, arg, 0xffffffff); 1013 tcg_gen_andi_i64(ret, arg, 0xffffffff);
938 } 1014 }
939 1015
940 /* Note: we assume the target supports move between 32 and 64 bit 1016 /* Note: we assume the target supports move between 32 and 64 bit
941 registers */ 1017 registers */
942 -static inline void tcg_gen_ext_i32_i64(int ret, int arg) 1018 +static inline void tcg_gen_ext_i32_i64(TCGv ret, TCGv arg)
943 { 1019 {
944 tcg_gen_ext32s_i64(ret, arg); 1020 tcg_gen_ext32s_i64(ret, arg);
945 } 1021 }
946 1022
947 -static inline void tcg_gen_bswap_i64(TCGArg ret, TCGArg arg) 1023 +static inline void tcg_gen_bswap_i64(TCGv ret, TCGv arg)
948 { 1024 {
949 #ifdef TCG_TARGET_HAS_bswap_i64 1025 #ifdef TCG_TARGET_HAS_bswap_i64
950 tcg_gen_op2(INDEX_op_bswap_i64, ret, arg); 1026 tcg_gen_op2(INDEX_op_bswap_i64, ret, arg);
951 #else 1027 #else
952 - TCGArg t0, t1; 1028 + TCGv t0, t1;
953 t0 = tcg_temp_new(TCG_TYPE_I32); 1029 t0 = tcg_temp_new(TCG_TYPE_I32);
954 t1 = tcg_temp_new(TCG_TYPE_I32); 1030 t1 = tcg_temp_new(TCG_TYPE_I32);
955 1031
@@ -987,9 +1063,9 @@ static inline void tcg_gen_bswap_i64(TCGArg ret, TCGArg arg) @@ -987,9 +1063,9 @@ static inline void tcg_gen_bswap_i64(TCGArg ret, TCGArg arg)
987 #endif 1063 #endif
988 1064
989 /***************************************/ 1065 /***************************************/
990 -static inline void tcg_gen_macro_2(int ret0, int ret1, int macro_id) 1066 +static inline void tcg_gen_macro_2(TCGv ret0, TCGv ret1, int macro_id)
991 { 1067 {
992 - tcg_gen_op3(INDEX_op_macro_2, ret0, ret1, macro_id); 1068 + tcg_gen_op3i(INDEX_op_macro_2, ret0, ret1, macro_id);
993 } 1069 }
994 1070
995 /***************************************/ 1071 /***************************************/
@@ -1001,175 +1077,177 @@ static inline void tcg_gen_macro_2(int ret0, int ret1, int macro_id) @@ -1001,175 +1077,177 @@ static inline void tcg_gen_macro_2(int ret0, int ret1, int macro_id)
1001 1077
1002 static inline void tcg_gen_exit_tb(tcg_target_long val) 1078 static inline void tcg_gen_exit_tb(tcg_target_long val)
1003 { 1079 {
1004 - tcg_gen_op1(INDEX_op_exit_tb, val); 1080 + tcg_gen_op1i(INDEX_op_exit_tb, val);
1005 } 1081 }
1006 1082
1007 static inline void tcg_gen_goto_tb(int idx) 1083 static inline void tcg_gen_goto_tb(int idx)
1008 { 1084 {
1009 - tcg_gen_op1(INDEX_op_goto_tb, idx); 1085 + tcg_gen_op1i(INDEX_op_goto_tb, idx);
1010 } 1086 }
1011 1087
1012 #if TCG_TARGET_REG_BITS == 32 1088 #if TCG_TARGET_REG_BITS == 32
1013 -static inline void tcg_gen_qemu_ld8u(int ret, int addr, int mem_index) 1089 +static inline void tcg_gen_qemu_ld8u(TCGv ret, TCGv addr, int mem_index)
1014 { 1090 {
1015 #if TARGET_LONG_BITS == 32 1091 #if TARGET_LONG_BITS == 32
1016 - tcg_gen_op3(INDEX_op_qemu_ld8u, ret, addr, mem_index); 1092 + tcg_gen_op3i(INDEX_op_qemu_ld8u, ret, addr, mem_index);
1017 #else 1093 #else
1018 - tcg_gen_op4(INDEX_op_qemu_ld8u, ret, addr, addr + 1, mem_index);  
1019 - tcg_gen_movi_i32(ret + 1, 0); 1094 + tcg_gen_op4i(INDEX_op_qemu_ld8u, ret, addr, TCGV_HIGH(addr), mem_index);
  1095 + tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
1020 #endif 1096 #endif
1021 } 1097 }
1022 1098
1023 -static inline void tcg_gen_qemu_ld8s(int ret, int addr, int mem_index) 1099 +static inline void tcg_gen_qemu_ld8s(TCGv ret, TCGv addr, int mem_index)
1024 { 1100 {
1025 #if TARGET_LONG_BITS == 32 1101 #if TARGET_LONG_BITS == 32
1026 - tcg_gen_op3(INDEX_op_qemu_ld8s, ret, addr, mem_index); 1102 + tcg_gen_op3i(INDEX_op_qemu_ld8s, ret, addr, mem_index);
1027 #else 1103 #else
1028 - tcg_gen_op4(INDEX_op_qemu_ld8s, ret, addr, addr + 1, mem_index);  
1029 - tcg_gen_ext8s_i32(ret + 1, ret); 1104 + tcg_gen_op4i(INDEX_op_qemu_ld8s, ret, addr, TCGV_HIGH(addr), mem_index);
  1105 + tcg_gen_ext8s_i32(TCGV_HIGH(ret), ret);
1030 #endif 1106 #endif
1031 } 1107 }
1032 1108
1033 -static inline void tcg_gen_qemu_ld16u(int ret, int addr, int mem_index) 1109 +static inline void tcg_gen_qemu_ld16u(TCGv ret, TCGv addr, int mem_index)
1034 { 1110 {
1035 #if TARGET_LONG_BITS == 32 1111 #if TARGET_LONG_BITS == 32
1036 - tcg_gen_op3(INDEX_op_qemu_ld16u, ret, addr, mem_index); 1112 + tcg_gen_op3i(INDEX_op_qemu_ld16u, ret, addr, mem_index);
1037 #else 1113 #else
1038 - tcg_gen_op4(INDEX_op_qemu_ld16u, ret, addr, addr + 1, mem_index);  
1039 - tcg_gen_movi_i32(ret + 1, 0); 1114 + tcg_gen_op4i(INDEX_op_qemu_ld16u, ret, addr, TCGV_HIGH(addr), mem_index);
  1115 + tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
1040 #endif 1116 #endif
1041 } 1117 }
1042 1118
1043 -static inline void tcg_gen_qemu_ld16s(int ret, int addr, int mem_index) 1119 +static inline void tcg_gen_qemu_ld16s(TCGv ret, TCGv addr, int mem_index)
1044 { 1120 {
1045 #if TARGET_LONG_BITS == 32 1121 #if TARGET_LONG_BITS == 32
1046 - tcg_gen_op3(INDEX_op_qemu_ld16s, ret, addr, mem_index); 1122 + tcg_gen_op3i(INDEX_op_qemu_ld16s, ret, addr, mem_index);
1047 #else 1123 #else
1048 - tcg_gen_op4(INDEX_op_qemu_ld16s, ret, addr, addr + 1, mem_index);  
1049 - tcg_gen_ext16s_i32(ret + 1, ret); 1124 + tcg_gen_op4i(INDEX_op_qemu_ld16s, ret, addr, TCGV_HIGH(addr), mem_index);
  1125 + tcg_gen_ext16s_i32(TCGV_HIGH(ret), ret);
1050 #endif 1126 #endif
1051 } 1127 }
1052 1128
1053 -static inline void tcg_gen_qemu_ld32u(int ret, int addr, int mem_index) 1129 +static inline void tcg_gen_qemu_ld32u(TCGv ret, TCGv addr, int mem_index)
1054 { 1130 {
1055 #if TARGET_LONG_BITS == 32 1131 #if TARGET_LONG_BITS == 32
1056 - tcg_gen_op3(INDEX_op_qemu_ld32u, ret, addr, mem_index); 1132 + tcg_gen_op3i(INDEX_op_qemu_ld32u, ret, addr, mem_index);
1057 #else 1133 #else
1058 - tcg_gen_op4(INDEX_op_qemu_ld32u, ret, addr, addr + 1, mem_index);  
1059 - tcg_gen_movi_i32(ret + 1, 0); 1134 + tcg_gen_op4i(INDEX_op_qemu_ld32u, ret, addr, TCGV_HIGH(addr), mem_index);
  1135 + tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
1060 #endif 1136 #endif
1061 } 1137 }
1062 1138
1063 -static inline void tcg_gen_qemu_ld32s(int ret, int addr, int mem_index) 1139 +static inline void tcg_gen_qemu_ld32s(TCGv ret, TCGv addr, int mem_index)
1064 { 1140 {
1065 #if TARGET_LONG_BITS == 32 1141 #if TARGET_LONG_BITS == 32
1066 - tcg_gen_op3(INDEX_op_qemu_ld32u, ret, addr, mem_index); 1142 + tcg_gen_op3i(INDEX_op_qemu_ld32u, ret, addr, mem_index);
1067 #else 1143 #else
1068 - tcg_gen_op4(INDEX_op_qemu_ld32u, ret, addr, addr + 1, mem_index);  
1069 - tcg_gen_sari_i32(ret + 1, ret, 31); 1144 + tcg_gen_op4i(INDEX_op_qemu_ld32u, ret, addr, TCGV_HIGH(addr), mem_index);
  1145 + tcg_gen_sari_i32(TCGV_HIGH(ret), ret, 31);
1070 #endif 1146 #endif
1071 } 1147 }
1072 1148
1073 -static inline void tcg_gen_qemu_ld64(int ret, int addr, int mem_index) 1149 +static inline void tcg_gen_qemu_ld64(TCGv ret, TCGv addr, int mem_index)
1074 { 1150 {
1075 #if TARGET_LONG_BITS == 32 1151 #if TARGET_LONG_BITS == 32
1076 - tcg_gen_op4(INDEX_op_qemu_ld64, ret, ret + 1, addr, mem_index); 1152 + tcg_gen_op4i(INDEX_op_qemu_ld64, ret, TCGV_HIGH(ret), addr, mem_index);
1077 #else 1153 #else
1078 - tcg_gen_op5(INDEX_op_qemu_ld64, ret, ret + 1, addr, addr + 1, mem_index); 1154 + tcg_gen_op5i(INDEX_op_qemu_ld64, ret, TCGV_HIGH(ret),
  1155 + addr, TCGV_HIGH(addr), mem_index);
1079 #endif 1156 #endif
1080 } 1157 }
1081 1158
1082 -static inline void tcg_gen_qemu_st8(int arg, int addr, int mem_index) 1159 +static inline void tcg_gen_qemu_st8(TCGv arg, TCGv addr, int mem_index)
1083 { 1160 {
1084 #if TARGET_LONG_BITS == 32 1161 #if TARGET_LONG_BITS == 32
1085 - tcg_gen_op3(INDEX_op_qemu_st8, arg, addr, mem_index); 1162 + tcg_gen_op3i(INDEX_op_qemu_st8, arg, addr, mem_index);
1086 #else 1163 #else
1087 - tcg_gen_op4(INDEX_op_qemu_st8, arg, addr, addr + 1, mem_index); 1164 + tcg_gen_op4i(INDEX_op_qemu_st8, arg, addr, TCGV_HIGH(addr), mem_index);
1088 #endif 1165 #endif
1089 } 1166 }
1090 1167
1091 -static inline void tcg_gen_qemu_st16(int arg, int addr, int mem_index) 1168 +static inline void tcg_gen_qemu_st16(TCGv arg, TCGv addr, int mem_index)
1092 { 1169 {
1093 #if TARGET_LONG_BITS == 32 1170 #if TARGET_LONG_BITS == 32
1094 - tcg_gen_op3(INDEX_op_qemu_st16, arg, addr, mem_index); 1171 + tcg_gen_op3i(INDEX_op_qemu_st16, arg, addr, mem_index);
1095 #else 1172 #else
1096 - tcg_gen_op4(INDEX_op_qemu_st16, arg, addr, addr + 1, mem_index); 1173 + tcg_gen_op4i(INDEX_op_qemu_st16, arg, addr, TCGV_HIGH(addr), mem_index);
1097 #endif 1174 #endif
1098 } 1175 }
1099 1176
1100 -static inline void tcg_gen_qemu_st32(int arg, int addr, int mem_index) 1177 +static inline void tcg_gen_qemu_st32(TCGv arg, TCGv addr, int mem_index)
1101 { 1178 {
1102 #if TARGET_LONG_BITS == 32 1179 #if TARGET_LONG_BITS == 32
1103 - tcg_gen_op3(INDEX_op_qemu_st32, arg, addr, mem_index); 1180 + tcg_gen_op3i(INDEX_op_qemu_st32, arg, addr, mem_index);
1104 #else 1181 #else
1105 - tcg_gen_op4(INDEX_op_qemu_st32, arg, addr, addr + 1, mem_index); 1182 + tcg_gen_op4i(INDEX_op_qemu_st32, arg, addr, TCGV_HIGH(addr), mem_index);
1106 #endif 1183 #endif
1107 } 1184 }
1108 1185
1109 -static inline void tcg_gen_qemu_st64(int arg, int addr, int mem_index) 1186 +static inline void tcg_gen_qemu_st64(TCGv arg, TCGv addr, int mem_index)
1110 { 1187 {
1111 #if TARGET_LONG_BITS == 32 1188 #if TARGET_LONG_BITS == 32
1112 - tcg_gen_op4(INDEX_op_qemu_st64, arg, arg + 1, addr, mem_index); 1189 + tcg_gen_op4i(INDEX_op_qemu_st64, arg, TCGV_HIGH(arg), addr, mem_index);
1113 #else 1190 #else
1114 - tcg_gen_op5(INDEX_op_qemu_st64, arg, arg + 1, addr, addr + 1, mem_index); 1191 + tcg_gen_op5i(INDEX_op_qemu_st64, arg, TCGV_HIGH(arg),
  1192 + addr, TCGV_HIGH(addr), mem_index);
1115 #endif 1193 #endif
1116 } 1194 }
1117 1195
1118 #else /* TCG_TARGET_REG_BITS == 32 */ 1196 #else /* TCG_TARGET_REG_BITS == 32 */
1119 1197
1120 -static inline void tcg_gen_qemu_ld8u(int ret, int addr, int mem_index) 1198 +static inline void tcg_gen_qemu_ld8u(TCGv ret, TCGv addr, int mem_index)
1121 { 1199 {
1122 - tcg_gen_op3(INDEX_op_qemu_ld8u, ret, addr, mem_index); 1200 + tcg_gen_op3i(INDEX_op_qemu_ld8u, ret, addr, mem_index);
1123 } 1201 }
1124 1202
1125 -static inline void tcg_gen_qemu_ld8s(int ret, int addr, int mem_index) 1203 +static inline void tcg_gen_qemu_ld8s(TCGv ret, TCGv addr, int mem_index)
1126 { 1204 {
1127 - tcg_gen_op3(INDEX_op_qemu_ld8s, ret, addr, mem_index); 1205 + tcg_gen_op3i(INDEX_op_qemu_ld8s, ret, addr, mem_index);
1128 } 1206 }
1129 1207
1130 -static inline void tcg_gen_qemu_ld16u(int ret, int addr, int mem_index) 1208 +static inline void tcg_gen_qemu_ld16u(TCGv ret, TCGv addr, int mem_index)
1131 { 1209 {
1132 - tcg_gen_op3(INDEX_op_qemu_ld16u, ret, addr, mem_index); 1210 + tcg_gen_op3i(INDEX_op_qemu_ld16u, ret, addr, mem_index);
1133 } 1211 }
1134 1212
1135 -static inline void tcg_gen_qemu_ld16s(int ret, int addr, int mem_index) 1213 +static inline void tcg_gen_qemu_ld16s(TCGv ret, TCGv addr, int mem_index)
1136 { 1214 {
1137 - tcg_gen_op3(INDEX_op_qemu_ld16s, ret, addr, mem_index); 1215 + tcg_gen_op3i(INDEX_op_qemu_ld16s, ret, addr, mem_index);
1138 } 1216 }
1139 1217
1140 -static inline void tcg_gen_qemu_ld32u(int ret, int addr, int mem_index) 1218 +static inline void tcg_gen_qemu_ld32u(TCGv ret, TCGv addr, int mem_index)
1141 { 1219 {
1142 - tcg_gen_op3(INDEX_op_qemu_ld32u, ret, addr, mem_index); 1220 + tcg_gen_op3i(INDEX_op_qemu_ld32u, ret, addr, mem_index);
1143 } 1221 }
1144 1222
1145 -static inline void tcg_gen_qemu_ld32s(int ret, int addr, int mem_index) 1223 +static inline void tcg_gen_qemu_ld32s(TCGv ret, TCGv addr, int mem_index)
1146 { 1224 {
1147 - tcg_gen_op3(INDEX_op_qemu_ld32s, ret, addr, mem_index); 1225 + tcg_gen_op3i(INDEX_op_qemu_ld32s, ret, addr, mem_index);
1148 } 1226 }
1149 1227
1150 -static inline void tcg_gen_qemu_ld64(int ret, int addr, int mem_index) 1228 +static inline void tcg_gen_qemu_ld64(TCGv ret, TCGv addr, int mem_index)
1151 { 1229 {
1152 - tcg_gen_op3(INDEX_op_qemu_ld64, ret, addr, mem_index); 1230 + tcg_gen_op3i(INDEX_op_qemu_ld64, ret, addr, mem_index);
1153 } 1231 }
1154 1232
1155 -static inline void tcg_gen_qemu_st8(int arg, int addr, int mem_index) 1233 +static inline void tcg_gen_qemu_st8(TCGv arg, TCGv addr, int mem_index)
1156 { 1234 {
1157 - tcg_gen_op3(INDEX_op_qemu_st8, arg, addr, mem_index); 1235 + tcg_gen_op3i(INDEX_op_qemu_st8, arg, addr, mem_index);
1158 } 1236 }
1159 1237
1160 -static inline void tcg_gen_qemu_st16(int arg, int addr, int mem_index) 1238 +static inline void tcg_gen_qemu_st16(TCGv arg, TCGv addr, int mem_index)
1161 { 1239 {
1162 - tcg_gen_op3(INDEX_op_qemu_st16, arg, addr, mem_index); 1240 + tcg_gen_op3i(INDEX_op_qemu_st16, arg, addr, mem_index);
1163 } 1241 }
1164 1242
1165 -static inline void tcg_gen_qemu_st32(int arg, int addr, int mem_index) 1243 +static inline void tcg_gen_qemu_st32(TCGv arg, TCGv addr, int mem_index)
1166 { 1244 {
1167 - tcg_gen_op3(INDEX_op_qemu_st32, arg, addr, mem_index); 1245 + tcg_gen_op3i(INDEX_op_qemu_st32, arg, addr, mem_index);
1168 } 1246 }
1169 1247
1170 -static inline void tcg_gen_qemu_st64(int arg, int addr, int mem_index) 1248 +static inline void tcg_gen_qemu_st64(TCGv arg, TCGv addr, int mem_index)
1171 { 1249 {
1172 - tcg_gen_op3(INDEX_op_qemu_st64, arg, addr, mem_index); 1250 + tcg_gen_op3i(INDEX_op_qemu_st64, arg, addr, mem_index);
1173 } 1251 }
1174 1252
1175 #endif /* TCG_TARGET_REG_BITS != 32 */ 1253 #endif /* TCG_TARGET_REG_BITS != 32 */
tcg/tcg.c
@@ -299,7 +299,7 @@ static inline void tcg_temp_alloc(TCGContext *s, int n) @@ -299,7 +299,7 @@ static inline void tcg_temp_alloc(TCGContext *s, int n)
299 tcg_abort(); 299 tcg_abort();
300 } 300 }
301 301
302 -int tcg_global_reg_new(TCGType type, int reg, const char *name) 302 +TCGv tcg_global_reg_new(TCGType type, int reg, const char *name)
303 { 303 {
304 TCGContext *s = &tcg_ctx; 304 TCGContext *s = &tcg_ctx;
305 TCGTemp *ts; 305 TCGTemp *ts;
@@ -322,11 +322,11 @@ int tcg_global_reg_new(TCGType type, int reg, const char *name) @@ -322,11 +322,11 @@ int tcg_global_reg_new(TCGType type, int reg, const char *name)
322 ts->name = name; 322 ts->name = name;
323 s->nb_globals++; 323 s->nb_globals++;
324 tcg_regset_set_reg(s->reserved_regs, reg); 324 tcg_regset_set_reg(s->reserved_regs, reg);
325 - return idx; 325 + return MAKE_TCGV(idx);
326 } 326 }
327 327
328 -int tcg_global_mem_new(TCGType type, int reg, tcg_target_long offset,  
329 - const char *name) 328 +TCGv tcg_global_mem_new(TCGType type, int reg, tcg_target_long offset,
  329 + const char *name)
330 { 330 {
331 TCGContext *s = &tcg_ctx; 331 TCGContext *s = &tcg_ctx;
332 TCGTemp *ts; 332 TCGTemp *ts;
@@ -385,10 +385,10 @@ int tcg_global_mem_new(TCGType type, int reg, tcg_target_long offset, @@ -385,10 +385,10 @@ int tcg_global_mem_new(TCGType type, int reg, tcg_target_long offset,
385 ts->name = name; 385 ts->name = name;
386 s->nb_globals++; 386 s->nb_globals++;
387 } 387 }
388 - return idx; 388 + return MAKE_TCGV(idx);
389 } 389 }
390 390
391 -int tcg_temp_new(TCGType type) 391 +TCGv tcg_temp_new(TCGType type)
392 { 392 {
393 TCGContext *s = &tcg_ctx; 393 TCGContext *s = &tcg_ctx;
394 TCGTemp *ts; 394 TCGTemp *ts;
@@ -423,10 +423,10 @@ int tcg_temp_new(TCGType type) @@ -423,10 +423,10 @@ int tcg_temp_new(TCGType type)
423 ts->name = NULL; 423 ts->name = NULL;
424 s->nb_temps++; 424 s->nb_temps++;
425 } 425 }
426 - return idx; 426 + return MAKE_TCGV(idx);
427 } 427 }
428 428
429 -int tcg_const_i32(int32_t val) 429 +TCGv tcg_const_i32(int32_t val)
430 { 430 {
431 TCGContext *s = &tcg_ctx; 431 TCGContext *s = &tcg_ctx;
432 TCGTemp *ts; 432 TCGTemp *ts;
@@ -440,10 +440,10 @@ int tcg_const_i32(int32_t val) @@ -440,10 +440,10 @@ int tcg_const_i32(int32_t val)
440 ts->name = NULL; 440 ts->name = NULL;
441 ts->val = val; 441 ts->val = val;
442 s->nb_temps++; 442 s->nb_temps++;
443 - return idx; 443 + return MAKE_TCGV(idx);
444 } 444 }
445 445
446 -int tcg_const_i64(int64_t val) 446 +TCGv tcg_const_i64(int64_t val)
447 { 447 {
448 TCGContext *s = &tcg_ctx; 448 TCGContext *s = &tcg_ctx;
449 TCGTemp *ts; 449 TCGTemp *ts;
@@ -474,7 +474,7 @@ int tcg_const_i64(int64_t val) @@ -474,7 +474,7 @@ int tcg_const_i64(int64_t val)
474 ts->val = val; 474 ts->val = val;
475 s->nb_temps++; 475 s->nb_temps++;
476 #endif 476 #endif
477 - return idx; 477 + return MAKE_TCGV(idx);
478 } 478 }
479 479
480 void tcg_register_helper(void *func, const char *name) 480 void tcg_register_helper(void *func, const char *name)
@@ -507,26 +507,26 @@ const char *tcg_helper_get_name(TCGContext *s, void *func) @@ -507,26 +507,26 @@ const char *tcg_helper_get_name(TCGContext *s, void *func)
507 return NULL; 507 return NULL;
508 } 508 }
509 509
510 -static inline TCGType tcg_get_base_type(TCGContext *s, TCGArg arg) 510 +static inline TCGType tcg_get_base_type(TCGContext *s, TCGv arg)
511 { 511 {
512 - return s->temps[arg].base_type; 512 + return s->temps[GET_TCGV(arg)].base_type;
513 } 513 }
514 514
515 -static void tcg_gen_call_internal(TCGContext *s, TCGArg func, 515 +static void tcg_gen_call_internal(TCGContext *s, TCGv func,
516 unsigned int flags, 516 unsigned int flags,
517 - unsigned int nb_rets, const TCGArg *rets,  
518 - unsigned int nb_params, const TCGArg *params) 517 + unsigned int nb_rets, const TCGv *rets,
  518 + unsigned int nb_params, const TCGv *params)
519 { 519 {
520 int i; 520 int i;
521 *gen_opc_ptr++ = INDEX_op_call; 521 *gen_opc_ptr++ = INDEX_op_call;
522 *gen_opparam_ptr++ = (nb_rets << 16) | (nb_params + 1); 522 *gen_opparam_ptr++ = (nb_rets << 16) | (nb_params + 1);
523 for(i = 0; i < nb_rets; i++) { 523 for(i = 0; i < nb_rets; i++) {
524 - *gen_opparam_ptr++ = rets[i]; 524 + *gen_opparam_ptr++ = GET_TCGV(rets[i]);
525 } 525 }
526 for(i = 0; i < nb_params; i++) { 526 for(i = 0; i < nb_params; i++) {
527 - *gen_opparam_ptr++ = params[i]; 527 + *gen_opparam_ptr++ = GET_TCGV(params[i]);
528 } 528 }
529 - *gen_opparam_ptr++ = func; 529 + *gen_opparam_ptr++ = GET_TCGV(func);
530 530
531 *gen_opparam_ptr++ = flags; 531 *gen_opparam_ptr++ = flags;
532 /* total parameters, needed to go backward in the instruction stream */ 532 /* total parameters, needed to go backward in the instruction stream */
@@ -536,11 +536,11 @@ static void tcg_gen_call_internal(TCGContext *s, TCGArg func, @@ -536,11 +536,11 @@ static void tcg_gen_call_internal(TCGContext *s, TCGArg func,
536 536
537 #if TCG_TARGET_REG_BITS < 64 537 #if TCG_TARGET_REG_BITS < 64
538 /* Note: we convert the 64 bit args to 32 bit */ 538 /* Note: we convert the 64 bit args to 32 bit */
539 -void tcg_gen_call(TCGContext *s, TCGArg func, unsigned int flags,  
540 - unsigned int nb_rets, const TCGArg *rets,  
541 - unsigned int nb_params, const TCGArg *args1) 539 +void tcg_gen_call(TCGContext *s, TCGv func, unsigned int flags,
  540 + unsigned int nb_rets, const TCGv *rets,
  541 + unsigned int nb_params, const TCGv *args1)
542 { 542 {
543 - TCGArg ret, *args2, rets_2[2], arg; 543 + TCGv ret, *args2, rets_2[2], arg;
544 int j, i, call_type; 544 int j, i, call_type;
545 545
546 if (nb_rets == 1) { 546 if (nb_rets == 1) {
@@ -548,11 +548,11 @@ void tcg_gen_call(TCGContext *s, TCGArg func, unsigned int flags, @@ -548,11 +548,11 @@ void tcg_gen_call(TCGContext *s, TCGArg func, unsigned int flags,
548 if (tcg_get_base_type(s, ret) == TCG_TYPE_I64) { 548 if (tcg_get_base_type(s, ret) == TCG_TYPE_I64) {
549 nb_rets = 2; 549 nb_rets = 2;
550 rets_2[0] = ret; 550 rets_2[0] = ret;
551 - rets_2[1] = ret + 1; 551 + rets_2[1] = TCGV_HIGH(ret);
552 rets = rets_2; 552 rets = rets_2;
553 } 553 }
554 } 554 }
555 - args2 = alloca((nb_params * 2) * sizeof(TCGArg)); 555 + args2 = alloca((nb_params * 2) * sizeof(TCGv));
556 j = 0; 556 j = 0;
557 call_type = (flags & TCG_CALL_TYPE_MASK); 557 call_type = (flags & TCG_CALL_TYPE_MASK);
558 for(i = 0; i < nb_params; i++) { 558 for(i = 0; i < nb_params; i++) {
@@ -566,14 +566,14 @@ void tcg_gen_call(TCGContext *s, TCGArg func, unsigned int flags, @@ -566,14 +566,14 @@ void tcg_gen_call(TCGContext *s, TCGArg func, unsigned int flags,
566 flags = (flags & ~TCG_CALL_TYPE_MASK) | call_type; 566 flags = (flags & ~TCG_CALL_TYPE_MASK) | call_type;
567 } 567 }
568 args2[j++] = arg; 568 args2[j++] = arg;
569 - args2[j++] = arg + 1; 569 + args2[j++] = TCGV_HIGH(arg);
570 #else 570 #else
571 #ifdef TCG_TARGET_WORDS_BIGENDIAN 571 #ifdef TCG_TARGET_WORDS_BIGENDIAN
572 - args2[j++] = arg + 1; 572 + args2[j++] = TCGV_HOGH(arg);
573 args2[j++] = arg; 573 args2[j++] = arg;
574 #else 574 #else
575 args2[j++] = arg; 575 args2[j++] = arg;
576 - args2[j++] = arg + 1; 576 + args2[j++] = TCGV_HIGH(arg);
577 #endif 577 #endif
578 #endif 578 #endif
579 } else { 579 } else {
@@ -584,16 +584,17 @@ void tcg_gen_call(TCGContext *s, TCGArg func, unsigned int flags, @@ -584,16 +584,17 @@ void tcg_gen_call(TCGContext *s, TCGArg func, unsigned int flags,
584 nb_rets, rets, j, args2); 584 nb_rets, rets, j, args2);
585 } 585 }
586 #else 586 #else
587 -void tcg_gen_call(TCGContext *s, TCGArg func, unsigned int flags,  
588 - unsigned int nb_rets, const TCGArg *rets,  
589 - unsigned int nb_params, const TCGArg *args1) 587 +void tcg_gen_call(TCGContext *s, TCGv func, unsigned int flags,
  588 + unsigned int nb_rets, const TCGv *rets,
  589 + unsigned int nb_params, const TCGv *args1)
590 { 590 {
591 tcg_gen_call_internal(s, func, flags, 591 tcg_gen_call_internal(s, func, flags,
592 nb_rets, rets, nb_params, args1); 592 nb_rets, rets, nb_params, args1);
593 } 593 }
594 #endif 594 #endif
595 595
596 -void tcg_gen_shifti_i64(TCGArg ret, TCGArg arg1, 596 +#if TCG_TARGET_REG_BITS == 32
  597 +void tcg_gen_shifti_i64(TCGv ret, TCGv arg1,
597 int c, int right, int arith) 598 int c, int right, int arith)
598 { 599 {
599 if (c == 0) 600 if (c == 0)
@@ -602,40 +603,41 @@ void tcg_gen_shifti_i64(TCGArg ret, TCGArg arg1, @@ -602,40 +603,41 @@ void tcg_gen_shifti_i64(TCGArg ret, TCGArg arg1,
602 c -= 32; 603 c -= 32;
603 if (right) { 604 if (right) {
604 if (arith) { 605 if (arith) {
605 - tcg_gen_sari_i32(ret, arg1 + 1, c);  
606 - tcg_gen_sari_i32(ret + 1, arg1 + 1, 31); 606 + tcg_gen_sari_i32(ret, TCGV_HIGH(arg1), c);
  607 + tcg_gen_sari_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), 31);
607 } else { 608 } else {
608 - tcg_gen_shri_i32(ret, arg1 + 1, c);  
609 - tcg_gen_movi_i32(ret + 1, 0); 609 + tcg_gen_shri_i32(ret, TCGV_HIGH(arg1), c);
  610 + tcg_gen_movi_i32(TCGV_HIGH(ret), 0);
610 } 611 }
611 } else { 612 } else {
612 - tcg_gen_shli_i32(ret + 1, arg1, c); 613 + tcg_gen_shli_i32(TCGV_HIGH(ret), arg1, c);
613 tcg_gen_movi_i32(ret, 0); 614 tcg_gen_movi_i32(ret, 0);
614 } 615 }
615 } else { 616 } else {
616 - int t0, t1; 617 + TCGv t0, t1;
617 618
618 t0 = tcg_temp_new(TCG_TYPE_I32); 619 t0 = tcg_temp_new(TCG_TYPE_I32);
619 t1 = tcg_temp_new(TCG_TYPE_I32); 620 t1 = tcg_temp_new(TCG_TYPE_I32);
620 if (right) { 621 if (right) {
621 - tcg_gen_shli_i32(t0, arg1 + 1, 32 - c); 622 + tcg_gen_shli_i32(t0, TCGV_HIGH(arg1), 32 - c);
622 if (arith) 623 if (arith)
623 - tcg_gen_sari_i32(t1, arg1 + 1, c); 624 + tcg_gen_sari_i32(t1, TCGV_HIGH(arg1), c);
624 else 625 else
625 - tcg_gen_shri_i32(t1, arg1 + 1, c); 626 + tcg_gen_shri_i32(t1, TCGV_HIGH(arg1), c);
626 tcg_gen_shri_i32(ret, arg1, c); 627 tcg_gen_shri_i32(ret, arg1, c);
627 tcg_gen_or_i32(ret, ret, t0); 628 tcg_gen_or_i32(ret, ret, t0);
628 - tcg_gen_mov_i32(ret + 1, t1); 629 + tcg_gen_mov_i32(TCGV_HIGH(ret), t1);
629 } else { 630 } else {
630 tcg_gen_shri_i32(t0, arg1, 32 - c); 631 tcg_gen_shri_i32(t0, arg1, 32 - c);
631 /* Note: ret can be the same as arg1, so we use t1 */ 632 /* Note: ret can be the same as arg1, so we use t1 */
632 tcg_gen_shli_i32(t1, arg1, c); 633 tcg_gen_shli_i32(t1, arg1, c);
633 - tcg_gen_shli_i32(ret + 1, arg1 + 1, c);  
634 - tcg_gen_or_i32(ret + 1, ret + 1, t0); 634 + tcg_gen_shli_i32(TCGV_HIGH(ret), TCGV_HIGH(arg1), c);
  635 + tcg_gen_or_i32(TCGV_HIGH(ret), TCGV_HIGH(ret), t0);
635 tcg_gen_mov_i32(ret, t1); 636 tcg_gen_mov_i32(ret, t1);
636 } 637 }
637 } 638 }
638 } 639 }
  640 +#endif
639 641
640 void tcg_reg_alloc_start(TCGContext *s) 642 void tcg_reg_alloc_start(TCGContext *s)
641 { 643 {
@@ -654,22 +656,29 @@ void tcg_reg_alloc_start(TCGContext *s) @@ -654,22 +656,29 @@ void tcg_reg_alloc_start(TCGContext *s)
654 } 656 }
655 } 657 }
656 658
657 -char *tcg_get_arg_str(TCGContext *s, char *buf, int buf_size, TCGArg arg) 659 +static char *tcg_get_arg_str_idx(TCGContext *s, char *buf, int buf_size,
  660 + int idx)
658 { 661 {
659 TCGTemp *ts; 662 TCGTemp *ts;
660 - if (arg < s->nb_globals) {  
661 - pstrcpy(buf, buf_size, s->temps[arg].name); 663 +
  664 + ts = &s->temps[idx];
  665 + if (idx < s->nb_globals) {
  666 + pstrcpy(buf, buf_size, ts->name);
662 } else { 667 } else {
663 - ts = &s->temps[arg];  
664 if (ts->val_type == TEMP_VAL_CONST) { 668 if (ts->val_type == TEMP_VAL_CONST) {
665 snprintf(buf, buf_size, "$0x%" TCG_PRIlx , ts->val); 669 snprintf(buf, buf_size, "$0x%" TCG_PRIlx , ts->val);
666 } else { 670 } else {
667 - snprintf(buf, buf_size, "tmp%d", (int)arg - s->nb_globals); 671 + snprintf(buf, buf_size, "tmp%d", idx - s->nb_globals);
668 } 672 }
669 } 673 }
670 return buf; 674 return buf;
671 } 675 }
672 676
  677 +char *tcg_get_arg_str(TCGContext *s, char *buf, int buf_size, TCGv arg)
  678 +{
  679 + return tcg_get_arg_str_idx(s, buf, buf_size, GET_TCGV(arg));
  680 +}
  681 +
673 void tcg_dump_ops(TCGContext *s, FILE *outfile) 682 void tcg_dump_ops(TCGContext *s, FILE *outfile)
674 { 683 {
675 const uint16_t *opc_ptr; 684 const uint16_t *opc_ptr;
@@ -707,13 +716,15 @@ void tcg_dump_ops(TCGContext *s, FILE *outfile) @@ -707,13 +716,15 @@ void tcg_dump_ops(TCGContext *s, FILE *outfile)
707 for(i = 0; i < nb_oargs; i++) { 716 for(i = 0; i < nb_oargs; i++) {
708 if (k != 0) 717 if (k != 0)
709 fprintf(outfile, ","); 718 fprintf(outfile, ",");
710 - fprintf(outfile, "%s", tcg_get_arg_str(s, buf, sizeof(buf), args[k++])); 719 + fprintf(outfile, "%s",
  720 + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[k++]));
711 } 721 }
712 for(i = 0; i < nb_iargs; i++) { 722 for(i = 0; i < nb_iargs; i++) {
713 if (k != 0) 723 if (k != 0)
714 fprintf(outfile, ","); 724 fprintf(outfile, ",");
715 /* XXX: dump helper name for call */ 725 /* XXX: dump helper name for call */
716 - fprintf(outfile, "%s", tcg_get_arg_str(s, buf, sizeof(buf), args[k++])); 726 + fprintf(outfile, "%s",
  727 + tcg_get_arg_str_idx(s, buf, sizeof(buf), args[k++]));
717 } 728 }
718 for(i = 0; i < nb_cargs; i++) { 729 for(i = 0; i < nb_cargs; i++) {
719 if (k != 0) 730 if (k != 0)
@@ -1082,7 +1093,7 @@ static void dump_regs(TCGContext *s) @@ -1082,7 +1093,7 @@ static void dump_regs(TCGContext *s)
1082 1093
1083 for(i = 0; i < s->nb_temps; i++) { 1094 for(i = 0; i < s->nb_temps; i++) {
1084 ts = &s->temps[i]; 1095 ts = &s->temps[i];
1085 - printf(" %10s: ", tcg_get_arg_str(s, buf, sizeof(buf), i)); 1096 + printf(" %10s: ", tcg_get_arg_str_idx(s, buf, sizeof(buf), i));
1086 switch(ts->val_type) { 1097 switch(ts->val_type) {
1087 case TEMP_VAL_REG: 1098 case TEMP_VAL_REG:
1088 printf("%s", tcg_target_reg_names[ts->reg]); 1099 printf("%s", tcg_target_reg_names[ts->reg]);
@@ -1107,7 +1118,7 @@ static void dump_regs(TCGContext *s) @@ -1107,7 +1118,7 @@ static void dump_regs(TCGContext *s)
1107 if (s->reg_to_temp[i] >= 0) { 1118 if (s->reg_to_temp[i] >= 0) {
1108 printf("%s: %s\n", 1119 printf("%s: %s\n",
1109 tcg_target_reg_names[i], 1120 tcg_target_reg_names[i],
1110 - tcg_get_arg_str(s, buf, sizeof(buf), s->reg_to_temp[i])); 1121 + tcg_get_arg_str_idx(s, buf, sizeof(buf), s->reg_to_temp[i]));
1111 } 1122 }
1112 } 1123 }
1113 } 1124 }
@@ -1138,7 +1149,7 @@ static void check_regs(TCGContext *s) @@ -1138,7 +1149,7 @@ static void check_regs(TCGContext *s)
1138 !ts->fixed_reg && 1149 !ts->fixed_reg &&
1139 s->reg_to_temp[ts->reg] != k) { 1150 s->reg_to_temp[ts->reg] != k) {
1140 printf("Inconsistency for temp %s:\n", 1151 printf("Inconsistency for temp %s:\n",
1141 - tcg_get_arg_str(s, buf, sizeof(buf), k)); 1152 + tcg_get_arg_str_idx(s, buf, sizeof(buf), k));
1142 printf("reg state:\n"); 1153 printf("reg state:\n");
1143 dump_regs(s); 1154 dump_regs(s);
1144 tcg_abort(); 1155 tcg_abort();
tcg/tcg.h
@@ -103,6 +103,41 @@ typedef int TCGType; @@ -103,6 +103,41 @@ typedef int TCGType;
103 103
104 typedef tcg_target_ulong TCGArg; 104 typedef tcg_target_ulong TCGArg;
105 105
  106 +/* Define a type and accessor macros for varables. Using a struct is
  107 + nice because it gives some level of type safely. Ideally the compiler
  108 + be able to see through all this. However in practice this is not true,
  109 + expecially on targets with braindamaged ABIs (e.g. i386).
  110 + We use plain int by default to avoid this runtime overhead.
  111 + Users of tcg_gen_* don't need to know about any of this, and should
  112 + treat TCGv as an opaque type. */
  113 +
  114 +//#define DEBUG_TCGV 1
  115 +
  116 +#ifdef DEBUG_TCGV
  117 +
  118 +typedef struct
  119 +{
  120 + int n;
  121 +} TCGv;
  122 +
  123 +#define MAKE_TCGV(i) __extension__ \
  124 + ({ TCGv make_tcgv_tmp = {i}; make_tcgv_tmp;})
  125 +#define GET_TCGV(t) ((t).n)
  126 +#if TCG_TARGET_REG_BITS == 32
  127 +#define TCGV_HIGH(t) MAKE_TCGV(GET_TCGV(t) + 1)
  128 +#endif
  129 +
  130 +#else /* !DEBUG_TCGV */
  131 +
  132 +typedef int TCGv;
  133 +#define MAKE_TCGV(x) (x)
  134 +#define GET_TCGV(t) (t)
  135 +#if TCG_TARGET_REG_BITS == 32
  136 +#define TCGV_HIGH(t) ((t) + 1)
  137 +#endif
  138 +
  139 +#endif /* DEBUG_TCGV */
  140 +
106 /* call flags */ 141 /* call flags */
107 #define TCG_CALL_TYPE_MASK 0x000f 142 #define TCG_CALL_TYPE_MASK 0x000f
108 #define TCG_CALL_TYPE_STD 0x0000 /* standard C call */ 143 #define TCG_CALL_TYPE_STD 0x0000 /* standard C call */
@@ -228,11 +263,11 @@ int dyngen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf, @@ -228,11 +263,11 @@ int dyngen_code_search_pc(TCGContext *s, uint8_t *gen_code_buf,
228 void tcg_set_frame(TCGContext *s, int reg, 263 void tcg_set_frame(TCGContext *s, int reg,
229 tcg_target_long start, tcg_target_long size); 264 tcg_target_long start, tcg_target_long size);
230 void tcg_set_macro_func(TCGContext *s, TCGMacroFunc *func); 265 void tcg_set_macro_func(TCGContext *s, TCGMacroFunc *func);
231 -int tcg_global_reg_new(TCGType type, int reg, const char *name);  
232 -int tcg_global_mem_new(TCGType type, int reg, tcg_target_long offset,  
233 - const char *name);  
234 -int tcg_temp_new(TCGType type);  
235 -char *tcg_get_arg_str(TCGContext *s, char *buf, int buf_size, TCGArg arg); 266 +TCGv tcg_global_reg_new(TCGType type, int reg, const char *name);
  267 +TCGv tcg_global_mem_new(TCGType type, int reg, tcg_target_long offset,
  268 + const char *name);
  269 +TCGv tcg_temp_new(TCGType type);
  270 +char *tcg_get_arg_str(TCGContext *s, char *buf, int buf_size, TCGv arg);
236 271
237 #define TCG_CT_ALIAS 0x80 272 #define TCG_CT_ALIAS 0x80
238 #define TCG_CT_IALIAS 0x40 273 #define TCG_CT_IALIAS 0x40
@@ -278,10 +313,10 @@ do {\ @@ -278,10 +313,10 @@ do {\
278 313
279 void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs); 314 void tcg_add_target_add_op_defs(const TCGTargetOpDef *tdefs);
280 315
281 -void tcg_gen_call(TCGContext *s, TCGArg func, unsigned int flags,  
282 - unsigned int nb_rets, const TCGArg *rets,  
283 - unsigned int nb_params, const TCGArg *args1);  
284 -void tcg_gen_shifti_i64(TCGArg ret, TCGArg arg1, 316 +void tcg_gen_call(TCGContext *s, TCGv func, unsigned int flags,
  317 + unsigned int nb_rets, const TCGv *rets,
  318 + unsigned int nb_params, const TCGv *args1);
  319 +void tcg_gen_shifti_i64(TCGv ret, TCGv arg1,
285 int c, int right, int arith); 320 int c, int right, int arith);
286 321
287 /* only used for debugging purposes */ 322 /* only used for debugging purposes */
@@ -291,8 +326,8 @@ const char *tcg_helper_get_name(TCGContext *s, void *func); @@ -291,8 +326,8 @@ const char *tcg_helper_get_name(TCGContext *s, void *func);
291 void tcg_dump_ops(TCGContext *s, FILE *outfile); 326 void tcg_dump_ops(TCGContext *s, FILE *outfile);
292 327
293 void dump_ops(const uint16_t *opc_buf, const TCGArg *opparam_buf); 328 void dump_ops(const uint16_t *opc_buf, const TCGArg *opparam_buf);
294 -int tcg_const_i32(int32_t val);  
295 -int tcg_const_i64(int64_t val); 329 +TCGv tcg_const_i32(int32_t val);
  330 +TCGv tcg_const_i64(int64_t val);
296 331
297 #if TCG_TARGET_REG_BITS == 32 332 #if TCG_TARGET_REG_BITS == 32
298 #define tcg_const_ptr tcg_const_i32 333 #define tcg_const_ptr tcg_const_i32