1 /* { dg-do compile } */
2 /* { dg-options "-O3" } */
3 
4 #include "arm_neon.h"
5 
6 int8x8_t
tbl_tests8_(int8x8_t tab,int8x8_t idx)7 tbl_tests8_ (int8x8_t tab, int8x8_t idx)
8 {
9   return vtbl1_s8 (tab, idx);
10 }
11 
12 uint8x8_t
tbl_testu8_(uint8x8_t tab,uint8x8_t idx)13 tbl_testu8_ (uint8x8_t tab, uint8x8_t idx)
14 {
15   return vtbl1_u8 (tab, idx);
16 }
17 
18 poly8x8_t
tbl_testp8_(poly8x8_t tab,uint8x8_t idx)19 tbl_testp8_ (poly8x8_t tab, uint8x8_t idx)
20 {
21   return vtbl1_p8 (tab, idx);
22 }
23 
24 int8x8_t
tbl_tests8_2(int8x8x2_t tab,int8x8_t idx)25 tbl_tests8_2 (int8x8x2_t tab, int8x8_t idx)
26 {
27   return vtbl2_s8 (tab, idx);
28 }
29 
30 uint8x8_t
tbl_testu8_2(uint8x8x2_t tab,uint8x8_t idx)31 tbl_testu8_2 (uint8x8x2_t tab, uint8x8_t idx)
32 {
33   return vtbl2_u8 (tab, idx);
34 }
35 
36 poly8x8_t
tbl_testp8_2(poly8x8x2_t tab,uint8x8_t idx)37 tbl_testp8_2 (poly8x8x2_t tab, uint8x8_t idx)
38 {
39   return vtbl2_p8 (tab, idx);
40 }
41 
42 int8x8_t
tbl_tests8_3(int8x8x3_t tab,int8x8_t idx)43 tbl_tests8_3 (int8x8x3_t tab, int8x8_t idx)
44 {
45   return vtbl3_s8 (tab, idx);
46 }
47 
48 uint8x8_t
tbl_testu8_3(uint8x8x3_t tab,uint8x8_t idx)49 tbl_testu8_3 (uint8x8x3_t tab, uint8x8_t idx)
50 {
51   return vtbl3_u8 (tab, idx);
52 }
53 
54 poly8x8_t
tbl_testp8_3(poly8x8x3_t tab,uint8x8_t idx)55 tbl_testp8_3 (poly8x8x3_t tab, uint8x8_t idx)
56 {
57   return vtbl3_p8 (tab, idx);
58 }
59 
60 int8x8_t
tbl_tests8_4(int8x8x4_t tab,int8x8_t idx)61 tbl_tests8_4 (int8x8x4_t tab, int8x8_t idx)
62 {
63   return vtbl4_s8 (tab, idx);
64 }
65 
66 uint8x8_t
tbl_testu8_4(uint8x8x4_t tab,uint8x8_t idx)67 tbl_testu8_4 (uint8x8x4_t tab, uint8x8_t idx)
68 {
69   return vtbl4_u8 (tab, idx);
70 }
71 
72 poly8x8_t
tbl_testp8_4(poly8x8x4_t tab,uint8x8_t idx)73 tbl_testp8_4 (poly8x8x4_t tab, uint8x8_t idx)
74 {
75   return vtbl4_p8 (tab, idx);
76 }
77 
78 int8x8_t
tb_tests8_(int8x8_t r,int8x8_t tab,int8x8_t idx)79 tb_tests8_ (int8x8_t r, int8x8_t tab, int8x8_t idx)
80 {
81   return vtbx1_s8 (r, tab, idx);
82 }
83 
84 uint8x8_t
tb_testu8_(uint8x8_t r,uint8x8_t tab,uint8x8_t idx)85 tb_testu8_ (uint8x8_t r, uint8x8_t tab, uint8x8_t idx)
86 {
87   return vtbx1_u8 (r, tab, idx);
88 }
89 
90 poly8x8_t
tb_testp8_(poly8x8_t r,poly8x8_t tab,uint8x8_t idx)91 tb_testp8_ (poly8x8_t r, poly8x8_t tab, uint8x8_t idx)
92 {
93   return vtbx1_p8 (r, tab, idx);
94 }
95 
96 int8x8_t
tb_tests8_2(int8x8_t r,int8x8x2_t tab,int8x8_t idx)97 tb_tests8_2 (int8x8_t r, int8x8x2_t tab, int8x8_t idx)
98 {
99   return vtbx2_s8 (r, tab, idx);
100 }
101 
102 uint8x8_t
tb_testu8_2(uint8x8_t r,uint8x8x2_t tab,uint8x8_t idx)103 tb_testu8_2 (uint8x8_t r, uint8x8x2_t tab, uint8x8_t idx)
104 {
105   return vtbx2_u8 (r, tab, idx);
106 }
107 
108 poly8x8_t
tb_testp8_2(poly8x8_t r,poly8x8x2_t tab,uint8x8_t idx)109 tb_testp8_2 (poly8x8_t r, poly8x8x2_t tab, uint8x8_t idx)
110 {
111   return vtbx2_p8 (r, tab, idx);
112 }
113 
114 int8x8_t
tb_tests8_3(int8x8_t r,int8x8x3_t tab,int8x8_t idx)115 tb_tests8_3 (int8x8_t r, int8x8x3_t tab, int8x8_t idx)
116 {
117   return vtbx3_s8 (r, tab, idx);
118 }
119 
120 uint8x8_t
tb_testu8_3(uint8x8_t r,uint8x8x3_t tab,uint8x8_t idx)121 tb_testu8_3 (uint8x8_t r, uint8x8x3_t tab, uint8x8_t idx)
122 {
123   return vtbx3_u8 (r, tab, idx);
124 }
125 
126 poly8x8_t
tb_testp8_3(poly8x8_t r,poly8x8x3_t tab,uint8x8_t idx)127 tb_testp8_3 (poly8x8_t r, poly8x8x3_t tab, uint8x8_t idx)
128 {
129   return vtbx3_p8 (r, tab, idx);
130 }
131 
132 int8x8_t
tb_tests8_4(int8x8_t r,int8x8x4_t tab,int8x8_t idx)133 tb_tests8_4 (int8x8_t r, int8x8x4_t tab, int8x8_t idx)
134 {
135   return vtbx4_s8 (r, tab, idx);
136 }
137 
138 uint8x8_t
tb_testu8_4(uint8x8_t r,uint8x8x4_t tab,uint8x8_t idx)139 tb_testu8_4 (uint8x8_t r, uint8x8x4_t tab, uint8x8_t idx)
140 {
141   return vtbx4_u8 (r, tab, idx);
142 }
143 
144 poly8x8_t
tb_testp8_4(poly8x8_t r,poly8x8x4_t tab,uint8x8_t idx)145 tb_testp8_4 (poly8x8_t r, poly8x8x4_t tab, uint8x8_t idx)
146 {
147   return vtbx4_p8 (r, tab, idx);
148 }
149 
150 int8x8_t
qtbl_tests8_(int8x16_t tab,uint8x8_t idx)151 qtbl_tests8_ (int8x16_t tab, uint8x8_t idx)
152 {
153   return vqtbl1_s8 (tab, idx);
154 }
155 
156 uint8x8_t
qtbl_testu8_(uint8x16_t tab,uint8x8_t idx)157 qtbl_testu8_ (uint8x16_t tab, uint8x8_t idx)
158 {
159   return vqtbl1_u8 (tab, idx);
160 }
161 
162 poly8x8_t
qtbl_testp8_(poly8x16_t tab,uint8x8_t idx)163 qtbl_testp8_ (poly8x16_t tab, uint8x8_t idx)
164 {
165   return vqtbl1_p8 (tab, idx);
166 }
167 
168 int8x8_t
qtbl_tests8_2(int8x16x2_t tab,uint8x8_t idx)169 qtbl_tests8_2 (int8x16x2_t tab, uint8x8_t idx)
170 {
171   return vqtbl2_s8 (tab, idx);
172 }
173 
174 uint8x8_t
qtbl_testu8_2(uint8x16x2_t tab,uint8x8_t idx)175 qtbl_testu8_2 (uint8x16x2_t tab, uint8x8_t idx)
176 {
177   return vqtbl2_u8 (tab, idx);
178 }
179 
180 poly8x8_t
qtbl_testp8_2(poly8x16x2_t tab,uint8x8_t idx)181 qtbl_testp8_2 (poly8x16x2_t tab, uint8x8_t idx)
182 {
183   return vqtbl2_p8 (tab, idx);
184 }
185 
186 int8x8_t
qtbl_tests8_3(int8x16x3_t tab,uint8x8_t idx)187 qtbl_tests8_3 (int8x16x3_t tab, uint8x8_t idx)
188 {
189   return vqtbl3_s8 (tab, idx);
190 }
191 
192 uint8x8_t
qtbl_testu8_3(uint8x16x3_t tab,uint8x8_t idx)193 qtbl_testu8_3 (uint8x16x3_t tab, uint8x8_t idx)
194 {
195   return vqtbl3_u8 (tab, idx);
196 }
197 
198 poly8x8_t
qtbl_testp8_3(poly8x16x3_t tab,uint8x8_t idx)199 qtbl_testp8_3 (poly8x16x3_t tab, uint8x8_t idx)
200 {
201   return vqtbl3_p8 (tab, idx);
202 }
203 
204 int8x8_t
qtbl_tests8_4(int8x16x4_t tab,uint8x8_t idx)205 qtbl_tests8_4 (int8x16x4_t tab, uint8x8_t idx)
206 {
207   return vqtbl4_s8 (tab, idx);
208 }
209 
210 uint8x8_t
qtbl_testu8_4(uint8x16x4_t tab,uint8x8_t idx)211 qtbl_testu8_4 (uint8x16x4_t tab, uint8x8_t idx)
212 {
213   return vqtbl4_u8 (tab, idx);
214 }
215 
216 poly8x8_t
qtbl_testp8_4(poly8x16x4_t tab,uint8x8_t idx)217 qtbl_testp8_4 (poly8x16x4_t tab, uint8x8_t idx)
218 {
219   return vqtbl4_p8 (tab, idx);
220 }
221 
222 int8x8_t
qtb_tests8_(int8x8_t r,int8x16_t tab,uint8x8_t idx)223 qtb_tests8_ (int8x8_t r, int8x16_t tab, uint8x8_t idx)
224 {
225   return vqtbx1_s8 (r, tab, idx);
226 }
227 
228 uint8x8_t
qtb_testu8_(uint8x8_t r,uint8x16_t tab,uint8x8_t idx)229 qtb_testu8_ (uint8x8_t r, uint8x16_t tab, uint8x8_t idx)
230 {
231   return vqtbx1_u8 (r, tab, idx);
232 }
233 
234 poly8x8_t
qtb_testp8_(poly8x8_t r,poly8x16_t tab,uint8x8_t idx)235 qtb_testp8_ (poly8x8_t r, poly8x16_t tab, uint8x8_t idx)
236 {
237   return vqtbx1_p8 (r, tab, idx);
238 }
239 
240 int8x8_t
qtb_tests8_2(int8x8_t r,int8x16x2_t tab,uint8x8_t idx)241 qtb_tests8_2 (int8x8_t r, int8x16x2_t tab, uint8x8_t idx)
242 {
243   return vqtbx2_s8 (r, tab, idx);
244 }
245 
246 uint8x8_t
qtb_testu8_2(uint8x8_t r,uint8x16x2_t tab,uint8x8_t idx)247 qtb_testu8_2 (uint8x8_t r, uint8x16x2_t tab, uint8x8_t idx)
248 {
249   return vqtbx2_u8 (r, tab, idx);
250 }
251 
252 poly8x8_t
qtb_testp8_2(poly8x8_t r,poly8x16x2_t tab,uint8x8_t idx)253 qtb_testp8_2 (poly8x8_t r, poly8x16x2_t tab, uint8x8_t idx)
254 {
255   return vqtbx2_p8 (r, tab, idx);
256 }
257 
258 int8x8_t
qtb_tests8_3(int8x8_t r,int8x16x3_t tab,uint8x8_t idx)259 qtb_tests8_3 (int8x8_t r, int8x16x3_t tab, uint8x8_t idx)
260 {
261   return vqtbx3_s8 (r, tab, idx);
262 }
263 
264 uint8x8_t
qtb_testu8_3(uint8x8_t r,uint8x16x3_t tab,uint8x8_t idx)265 qtb_testu8_3 (uint8x8_t r, uint8x16x3_t tab, uint8x8_t idx)
266 {
267   return vqtbx3_u8 (r, tab, idx);
268 }
269 
270 poly8x8_t
qtb_testp8_3(poly8x8_t r,poly8x16x3_t tab,uint8x8_t idx)271 qtb_testp8_3 (poly8x8_t r, poly8x16x3_t tab, uint8x8_t idx)
272 {
273   return vqtbx3_p8 (r, tab, idx);
274 }
275 
276 int8x8_t
qtb_tests8_4(int8x8_t r,int8x16x4_t tab,uint8x8_t idx)277 qtb_tests8_4 (int8x8_t r, int8x16x4_t tab, uint8x8_t idx)
278 {
279   return vqtbx4_s8 (r, tab, idx);
280 }
281 
282 uint8x8_t
qtb_testu8_4(uint8x8_t r,uint8x16x4_t tab,uint8x8_t idx)283 qtb_testu8_4 (uint8x8_t r, uint8x16x4_t tab, uint8x8_t idx)
284 {
285   return vqtbx4_u8 (r, tab, idx);
286 }
287 
288 poly8x8_t
qtb_testp8_4(poly8x8_t r,poly8x16x4_t tab,uint8x8_t idx)289 qtb_testp8_4 (poly8x8_t r, poly8x16x4_t tab, uint8x8_t idx)
290 {
291   return vqtbx4_p8 (r, tab, idx);
292 }
293 
294 int8x16_t
qtblq_tests8_(int8x16_t tab,uint8x16_t idx)295 qtblq_tests8_ (int8x16_t tab, uint8x16_t idx)
296 {
297   return vqtbl1q_s8 (tab, idx);
298 }
299 
300 uint8x16_t
qtblq_testu8_(uint8x16_t tab,uint8x16_t idx)301 qtblq_testu8_ (uint8x16_t tab, uint8x16_t idx)
302 {
303   return vqtbl1q_u8 (tab, idx);
304 }
305 
306 poly8x16_t
qtblq_testp8_(poly8x16_t tab,uint8x16_t idx)307 qtblq_testp8_ (poly8x16_t tab, uint8x16_t idx)
308 {
309   return vqtbl1q_p8 (tab, idx);
310 }
311 
312 int8x16_t
qtblq_tests8_2(int8x16x2_t tab,uint8x16_t idx)313 qtblq_tests8_2 (int8x16x2_t tab, uint8x16_t idx)
314 {
315   return vqtbl2q_s8 (tab, idx);
316 }
317 
318 uint8x16_t
qtblq_testu8_2(uint8x16x2_t tab,uint8x16_t idx)319 qtblq_testu8_2 (uint8x16x2_t tab, uint8x16_t idx)
320 {
321   return vqtbl2q_u8 (tab, idx);
322 }
323 
324 poly8x16_t
qtblq_testp8_2(poly8x16x2_t tab,uint8x16_t idx)325 qtblq_testp8_2 (poly8x16x2_t tab, uint8x16_t idx)
326 {
327   return vqtbl2q_p8 (tab, idx);
328 }
329 
330 int8x16_t
qtblq_tests8_3(int8x16x3_t tab,uint8x16_t idx)331 qtblq_tests8_3 (int8x16x3_t tab, uint8x16_t idx)
332 {
333   return vqtbl3q_s8 (tab, idx);
334 }
335 
336 uint8x16_t
qtblq_testu8_3(uint8x16x3_t tab,uint8x16_t idx)337 qtblq_testu8_3 (uint8x16x3_t tab, uint8x16_t idx)
338 {
339   return vqtbl3q_u8 (tab, idx);
340 }
341 
342 poly8x16_t
qtblq_testp8_3(poly8x16x3_t tab,uint8x16_t idx)343 qtblq_testp8_3 (poly8x16x3_t tab, uint8x16_t idx)
344 {
345   return vqtbl3q_p8 (tab, idx);
346 }
347 
348 int8x16_t
qtblq_tests8_4(int8x16x4_t tab,uint8x16_t idx)349 qtblq_tests8_4 (int8x16x4_t tab, uint8x16_t idx)
350 {
351   return vqtbl4q_s8 (tab, idx);
352 }
353 
354 uint8x16_t
qtblq_testu8_4(uint8x16x4_t tab,uint8x16_t idx)355 qtblq_testu8_4 (uint8x16x4_t tab, uint8x16_t idx)
356 {
357   return vqtbl4q_u8 (tab, idx);
358 }
359 
360 poly8x16_t
qtblq_testp8_4(poly8x16x4_t tab,uint8x16_t idx)361 qtblq_testp8_4 (poly8x16x4_t tab, uint8x16_t idx)
362 {
363   return vqtbl4q_p8 (tab, idx);
364 }
365 
366 int8x16_t
qtbxq_tests8_(int8x16_t r,int8x16_t tab,uint8x16_t idx)367 qtbxq_tests8_ (int8x16_t r, int8x16_t tab, uint8x16_t idx)
368 {
369   return vqtbx1q_s8 (r, tab, idx);
370 }
371 
372 uint8x16_t
qtbxq_testu8_(uint8x16_t r,uint8x16_t tab,uint8x16_t idx)373 qtbxq_testu8_ (uint8x16_t r, uint8x16_t tab, uint8x16_t idx)
374 {
375   return vqtbx1q_u8 (r, tab, idx);
376 }
377 
378 poly8x16_t
qtbxq_testp8_(poly8x16_t r,poly8x16_t tab,uint8x16_t idx)379 qtbxq_testp8_ (poly8x16_t r, poly8x16_t tab, uint8x16_t idx)
380 {
381   return vqtbx1q_p8 (r, tab, idx);
382 }
383 
384 int8x16_t
qtbxq_tests8_2(int8x16_t r,int8x16x2_t tab,uint8x16_t idx)385 qtbxq_tests8_2 (int8x16_t r, int8x16x2_t tab, uint8x16_t idx)
386 {
387   return vqtbx2q_s8 (r, tab, idx);
388 }
389 
390 uint8x16_t
qtbxq_testu8_2(uint8x16_t r,uint8x16x2_t tab,uint8x16_t idx)391 qtbxq_testu8_2 (uint8x16_t r, uint8x16x2_t tab, uint8x16_t idx)
392 {
393   return vqtbx2q_u8 (r, tab, idx);
394 }
395 
396 poly8x16_t
qtbxq_testp8_2(poly8x16_t r,poly8x16x2_t tab,uint8x16_t idx)397 qtbxq_testp8_2 (poly8x16_t r, poly8x16x2_t tab, uint8x16_t idx)
398 {
399   return vqtbx2q_p8 (r, tab, idx);
400 }
401 
402 int8x16_t
qtbxq_tests8_3(int8x16_t r,int8x16x3_t tab,uint8x16_t idx)403 qtbxq_tests8_3 (int8x16_t r, int8x16x3_t tab, uint8x16_t idx)
404 {
405   return vqtbx3q_s8 (r, tab, idx);
406 }
407 
408 uint8x16_t
qtbxq_testu8_3(uint8x16_t r,uint8x16x3_t tab,uint8x16_t idx)409 qtbxq_testu8_3 (uint8x16_t r, uint8x16x3_t tab, uint8x16_t idx)
410 {
411   return vqtbx3q_u8 (r, tab, idx);
412 }
413 
414 poly8x16_t
qtbxq_testp8_3(poly8x16_t r,poly8x16x3_t tab,uint8x16_t idx)415 qtbxq_testp8_3 (poly8x16_t r, poly8x16x3_t tab, uint8x16_t idx)
416 {
417   return vqtbx3q_p8 (r, tab, idx);
418 }
419 
420 int8x16_t
qtbxq_tests8_4(int8x16_t r,int8x16x4_t tab,uint8x16_t idx)421 qtbxq_tests8_4 (int8x16_t r, int8x16x4_t tab, uint8x16_t idx)
422 {
423   return vqtbx4q_s8 (r, tab, idx);
424 }
425 
426 uint8x16_t
qtbxq_testu8_4(uint8x16_t r,uint8x16x4_t tab,uint8x16_t idx)427 qtbxq_testu8_4 (uint8x16_t r, uint8x16x4_t tab, uint8x16_t idx)
428 {
429   return vqtbx4q_u8 (r, tab, idx);
430 }
431 
432 poly8x16_t
qtbxq_testp8_4(poly8x16_t r,poly8x16x4_t tab,uint8x16_t idx)433 qtbxq_testp8_4 (poly8x16_t r, poly8x16x4_t tab, uint8x16_t idx)
434 {
435   return vqtbx4q_p8 (r, tab, idx);
436 }
437 
438 /* { dg-final { scan-assembler-times "tbl\[ |\t\]*v" 42} }  */
439 /* { dg-final { scan-assembler-times "tbx\[ |\t\]*v" 30} }  */
440