1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33typedef void gen_helper_gvec_2(TCGv_ptr, TCGv_ptr, TCGv_i32);
34void tcg_gen_gvec_2_ool(uint32_t dofs, uint32_t aofs,
35 uint32_t oprsz, uint32_t maxsz, int32_t data,
36 gen_helper_gvec_2 *fn);
37
38
39typedef void gen_helper_gvec_2i(TCGv_ptr, TCGv_ptr, TCGv_i64, TCGv_i32);
40void tcg_gen_gvec_2i_ool(uint32_t dofs, uint32_t aofs, TCGv_i64 c,
41 uint32_t oprsz, uint32_t maxsz, int32_t data,
42 gen_helper_gvec_2i *fn);
43
44
45typedef void gen_helper_gvec_2_ptr(TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_i32);
46void tcg_gen_gvec_2_ptr(uint32_t dofs, uint32_t aofs,
47 TCGv_ptr ptr, uint32_t oprsz, uint32_t maxsz,
48 int32_t data, gen_helper_gvec_2_ptr *fn);
49
50
51typedef void gen_helper_gvec_3(TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_i32);
52void tcg_gen_gvec_3_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs,
53 uint32_t oprsz, uint32_t maxsz, int32_t data,
54 gen_helper_gvec_3 *fn);
55
56
57typedef void gen_helper_gvec_4(TCGv_ptr, TCGv_ptr, TCGv_ptr,
58 TCGv_ptr, TCGv_i32);
59void tcg_gen_gvec_4_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs,
60 uint32_t cofs, uint32_t oprsz, uint32_t maxsz,
61 int32_t data, gen_helper_gvec_4 *fn);
62
63
64typedef void gen_helper_gvec_5(TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_ptr,
65 TCGv_ptr, TCGv_i32);
66void tcg_gen_gvec_5_ool(uint32_t dofs, uint32_t aofs, uint32_t bofs,
67 uint32_t cofs, uint32_t xofs, uint32_t oprsz,
68 uint32_t maxsz, int32_t data, gen_helper_gvec_5 *fn);
69
70typedef void gen_helper_gvec_3_ptr(TCGv_ptr, TCGv_ptr, TCGv_ptr,
71 TCGv_ptr, TCGv_i32);
72void tcg_gen_gvec_3_ptr(uint32_t dofs, uint32_t aofs, uint32_t bofs,
73 TCGv_ptr ptr, uint32_t oprsz, uint32_t maxsz,
74 int32_t data, gen_helper_gvec_3_ptr *fn);
75
76typedef void gen_helper_gvec_4_ptr(TCGv_ptr, TCGv_ptr, TCGv_ptr,
77 TCGv_ptr, TCGv_ptr, TCGv_i32);
78void tcg_gen_gvec_4_ptr(uint32_t dofs, uint32_t aofs, uint32_t bofs,
79 uint32_t cofs, TCGv_ptr ptr, uint32_t oprsz,
80 uint32_t maxsz, int32_t data,
81 gen_helper_gvec_4_ptr *fn);
82
83
84
85typedef struct {
86
87
88 void (*fni8)(TCGv_i64, TCGv_i64);
89 void (*fni4)(TCGv_i32, TCGv_i32);
90
91 void (*fniv)(unsigned, TCGv_vec, TCGv_vec);
92
93 gen_helper_gvec_2 *fno;
94
95 TCGOpcode opc;
96
97 int32_t data;
98
99 uint8_t vece;
100
101 bool prefer_i64;
102} GVecGen2;
103
104typedef struct {
105
106
107 void (*fni8)(TCGv_i64, TCGv_i64, int64_t);
108 void (*fni4)(TCGv_i32, TCGv_i32, int32_t);
109
110 void (*fniv)(unsigned, TCGv_vec, TCGv_vec, int64_t);
111
112 gen_helper_gvec_2 *fno;
113
114 gen_helper_gvec_2i *fnoi;
115
116 TCGOpcode opc;
117
118 uint8_t vece;
119
120 bool prefer_i64;
121
122 bool load_dest;
123} GVecGen2i;
124
125typedef struct {
126
127
128 void (*fni8)(TCGv_i64, TCGv_i64, TCGv_i64);
129 void (*fni4)(TCGv_i32, TCGv_i32, TCGv_i32);
130
131 void (*fniv)(unsigned, TCGv_vec, TCGv_vec, TCGv_vec);
132
133 gen_helper_gvec_2i *fno;
134
135 TCGOpcode opc;
136
137 uint32_t data;
138
139 uint8_t vece;
140
141 bool prefer_i64;
142
143 bool scalar_first;
144} GVecGen2s;
145
146typedef struct {
147
148
149 void (*fni8)(TCGv_i64, TCGv_i64, TCGv_i64);
150 void (*fni4)(TCGv_i32, TCGv_i32, TCGv_i32);
151
152 void (*fniv)(unsigned, TCGv_vec, TCGv_vec, TCGv_vec);
153
154 gen_helper_gvec_3 *fno;
155
156 TCGOpcode opc;
157
158 int32_t data;
159
160 uint8_t vece;
161
162 bool prefer_i64;
163
164 bool load_dest;
165} GVecGen3;
166
167typedef struct {
168
169
170 void (*fni8)(TCGv_i64, TCGv_i64, TCGv_i64, TCGv_i64);
171 void (*fni4)(TCGv_i32, TCGv_i32, TCGv_i32, TCGv_i32);
172
173 void (*fniv)(unsigned, TCGv_vec, TCGv_vec, TCGv_vec, TCGv_vec);
174
175 gen_helper_gvec_4 *fno;
176
177 TCGOpcode opc;
178
179 int32_t data;
180
181 uint8_t vece;
182
183 bool prefer_i64;
184} GVecGen4;
185
186void tcg_gen_gvec_2(uint32_t dofs, uint32_t aofs,
187 uint32_t oprsz, uint32_t maxsz, const GVecGen2 *);
188void tcg_gen_gvec_2i(uint32_t dofs, uint32_t aofs, uint32_t oprsz,
189 uint32_t maxsz, int64_t c, const GVecGen2i *);
190void tcg_gen_gvec_2s(uint32_t dofs, uint32_t aofs, uint32_t oprsz,
191 uint32_t maxsz, TCGv_i64 c, const GVecGen2s *);
192void tcg_gen_gvec_3(uint32_t dofs, uint32_t aofs, uint32_t bofs,
193 uint32_t oprsz, uint32_t maxsz, const GVecGen3 *);
194void tcg_gen_gvec_4(uint32_t dofs, uint32_t aofs, uint32_t bofs, uint32_t cofs,
195 uint32_t oprsz, uint32_t maxsz, const GVecGen4 *);
196
197
198
199void tcg_gen_gvec_mov(unsigned vece, uint32_t dofs, uint32_t aofs,
200 uint32_t oprsz, uint32_t maxsz);
201void tcg_gen_gvec_not(unsigned vece, uint32_t dofs, uint32_t aofs,
202 uint32_t oprsz, uint32_t maxsz);
203void tcg_gen_gvec_neg(unsigned vece, uint32_t dofs, uint32_t aofs,
204 uint32_t oprsz, uint32_t maxsz);
205
206void tcg_gen_gvec_add(unsigned vece, uint32_t dofs, uint32_t aofs,
207 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
208void tcg_gen_gvec_sub(unsigned vece, uint32_t dofs, uint32_t aofs,
209 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
210void tcg_gen_gvec_mul(unsigned vece, uint32_t dofs, uint32_t aofs,
211 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
212
213void tcg_gen_gvec_addi(unsigned vece, uint32_t dofs, uint32_t aofs,
214 int64_t c, uint32_t oprsz, uint32_t maxsz);
215void tcg_gen_gvec_muli(unsigned vece, uint32_t dofs, uint32_t aofs,
216 int64_t c, uint32_t oprsz, uint32_t maxsz);
217
218void tcg_gen_gvec_adds(unsigned vece, uint32_t dofs, uint32_t aofs,
219 TCGv_i64 c, uint32_t oprsz, uint32_t maxsz);
220void tcg_gen_gvec_subs(unsigned vece, uint32_t dofs, uint32_t aofs,
221 TCGv_i64 c, uint32_t oprsz, uint32_t maxsz);
222void tcg_gen_gvec_muls(unsigned vece, uint32_t dofs, uint32_t aofs,
223 TCGv_i64 c, uint32_t oprsz, uint32_t maxsz);
224
225
226void tcg_gen_gvec_ssadd(unsigned vece, uint32_t dofs, uint32_t aofs,
227 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
228void tcg_gen_gvec_sssub(unsigned vece, uint32_t dofs, uint32_t aofs,
229 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
230void tcg_gen_gvec_usadd(unsigned vece, uint32_t dofs, uint32_t aofs,
231 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
232void tcg_gen_gvec_ussub(unsigned vece, uint32_t dofs, uint32_t aofs,
233 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
234
235void tcg_gen_gvec_and(unsigned vece, uint32_t dofs, uint32_t aofs,
236 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
237void tcg_gen_gvec_or(unsigned vece, uint32_t dofs, uint32_t aofs,
238 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
239void tcg_gen_gvec_xor(unsigned vece, uint32_t dofs, uint32_t aofs,
240 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
241void tcg_gen_gvec_andc(unsigned vece, uint32_t dofs, uint32_t aofs,
242 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
243void tcg_gen_gvec_orc(unsigned vece, uint32_t dofs, uint32_t aofs,
244 uint32_t bofs, uint32_t oprsz, uint32_t maxsz);
245
246void tcg_gen_gvec_andi(unsigned vece, uint32_t dofs, uint32_t aofs,
247 int64_t c, uint32_t oprsz, uint32_t maxsz);
248void tcg_gen_gvec_xori(unsigned vece, uint32_t dofs, uint32_t aofs,
249 int64_t c, uint32_t oprsz, uint32_t maxsz);
250void tcg_gen_gvec_ori(unsigned vece, uint32_t dofs, uint32_t aofs,
251 int64_t c, uint32_t oprsz, uint32_t maxsz);
252
253void tcg_gen_gvec_ands(unsigned vece, uint32_t dofs, uint32_t aofs,
254 TCGv_i64 c, uint32_t oprsz, uint32_t maxsz);
255void tcg_gen_gvec_xors(unsigned vece, uint32_t dofs, uint32_t aofs,
256 TCGv_i64 c, uint32_t oprsz, uint32_t maxsz);
257void tcg_gen_gvec_ors(unsigned vece, uint32_t dofs, uint32_t aofs,
258 TCGv_i64 c, uint32_t oprsz, uint32_t maxsz);
259
260void tcg_gen_gvec_dup_mem(unsigned vece, uint32_t dofs, uint32_t aofs,
261 uint32_t s, uint32_t m);
262void tcg_gen_gvec_dup_i32(unsigned vece, uint32_t dofs, uint32_t s,
263 uint32_t m, TCGv_i32);
264void tcg_gen_gvec_dup_i64(unsigned vece, uint32_t dofs, uint32_t s,
265 uint32_t m, TCGv_i64);
266
267void tcg_gen_gvec_dup8i(uint32_t dofs, uint32_t s, uint32_t m, uint8_t x);
268void tcg_gen_gvec_dup16i(uint32_t dofs, uint32_t s, uint32_t m, uint16_t x);
269void tcg_gen_gvec_dup32i(uint32_t dofs, uint32_t s, uint32_t m, uint32_t x);
270void tcg_gen_gvec_dup64i(uint32_t dofs, uint32_t s, uint32_t m, uint64_t x);
271
272void tcg_gen_gvec_shli(unsigned vece, uint32_t dofs, uint32_t aofs,
273 int64_t shift, uint32_t oprsz, uint32_t maxsz);
274void tcg_gen_gvec_shri(unsigned vece, uint32_t dofs, uint32_t aofs,
275 int64_t shift, uint32_t oprsz, uint32_t maxsz);
276void tcg_gen_gvec_sari(unsigned vece, uint32_t dofs, uint32_t aofs,
277 int64_t shift, uint32_t oprsz, uint32_t maxsz);
278
279void tcg_gen_gvec_cmp(TCGCond cond, unsigned vece, uint32_t dofs,
280 uint32_t aofs, uint32_t bofs,
281 uint32_t oprsz, uint32_t maxsz);
282
283
284
285
286
287
288
289void tcg_gen_vec_neg8_i64(TCGv_i64 d, TCGv_i64 a);
290void tcg_gen_vec_neg16_i64(TCGv_i64 d, TCGv_i64 a);
291void tcg_gen_vec_neg32_i64(TCGv_i64 d, TCGv_i64 a);
292
293void tcg_gen_vec_add8_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b);
294void tcg_gen_vec_add16_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b);
295void tcg_gen_vec_add32_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b);
296
297void tcg_gen_vec_sub8_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b);
298void tcg_gen_vec_sub16_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b);
299void tcg_gen_vec_sub32_i64(TCGv_i64 d, TCGv_i64 a, TCGv_i64 b);
300
301void tcg_gen_vec_shl8i_i64(TCGv_i64 d, TCGv_i64 a, int64_t);
302void tcg_gen_vec_shl16i_i64(TCGv_i64 d, TCGv_i64 a, int64_t);
303void tcg_gen_vec_shr8i_i64(TCGv_i64 d, TCGv_i64 a, int64_t);
304void tcg_gen_vec_shr16i_i64(TCGv_i64 d, TCGv_i64 a, int64_t);
305void tcg_gen_vec_sar8i_i64(TCGv_i64 d, TCGv_i64 a, int64_t);
306void tcg_gen_vec_sar16i_i64(TCGv_i64 d, TCGv_i64 a, int64_t);
307