[PR81647][AARCH64] Fix handling of Unordered Comparisons in aarch64-simd.md
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / table-intrinsics.c
blob6d125a78c435243774361a8d0548bc2a0eed8eaa
1 /* { dg-do compile } */
2 /* { dg-options "-O3" } */
4 #include "arm_neon.h"
6 int8x8_t
7 tbl_tests8_ (int8x8_t tab, int8x8_t idx)
9 return vtbl1_s8 (tab, idx);
12 uint8x8_t
13 tbl_testu8_ (uint8x8_t tab, uint8x8_t idx)
15 return vtbl1_u8 (tab, idx);
18 poly8x8_t
19 tbl_testp8_ (poly8x8_t tab, uint8x8_t idx)
21 return vtbl1_p8 (tab, idx);
24 int8x8_t
25 tbl_tests8_2 (int8x8x2_t tab, int8x8_t idx)
27 return vtbl2_s8 (tab, idx);
30 uint8x8_t
31 tbl_testu8_2 (uint8x8x2_t tab, uint8x8_t idx)
33 return vtbl2_u8 (tab, idx);
36 poly8x8_t
37 tbl_testp8_2 (poly8x8x2_t tab, uint8x8_t idx)
39 return vtbl2_p8 (tab, idx);
42 int8x8_t
43 tbl_tests8_3 (int8x8x3_t tab, int8x8_t idx)
45 return vtbl3_s8 (tab, idx);
48 uint8x8_t
49 tbl_testu8_3 (uint8x8x3_t tab, uint8x8_t idx)
51 return vtbl3_u8 (tab, idx);
54 poly8x8_t
55 tbl_testp8_3 (poly8x8x3_t tab, uint8x8_t idx)
57 return vtbl3_p8 (tab, idx);
60 int8x8_t
61 tbl_tests8_4 (int8x8x4_t tab, int8x8_t idx)
63 return vtbl4_s8 (tab, idx);
66 uint8x8_t
67 tbl_testu8_4 (uint8x8x4_t tab, uint8x8_t idx)
69 return vtbl4_u8 (tab, idx);
72 poly8x8_t
73 tbl_testp8_4 (poly8x8x4_t tab, uint8x8_t idx)
75 return vtbl4_p8 (tab, idx);
78 int8x8_t
79 tb_tests8_ (int8x8_t r, int8x8_t tab, int8x8_t idx)
81 return vtbx1_s8 (r, tab, idx);
84 uint8x8_t
85 tb_testu8_ (uint8x8_t r, uint8x8_t tab, uint8x8_t idx)
87 return vtbx1_u8 (r, tab, idx);
90 poly8x8_t
91 tb_testp8_ (poly8x8_t r, poly8x8_t tab, uint8x8_t idx)
93 return vtbx1_p8 (r, tab, idx);
96 int8x8_t
97 tb_tests8_2 (int8x8_t r, int8x8x2_t tab, int8x8_t idx)
99 return vtbx2_s8 (r, tab, idx);
102 uint8x8_t
103 tb_testu8_2 (uint8x8_t r, uint8x8x2_t tab, uint8x8_t idx)
105 return vtbx2_u8 (r, tab, idx);
108 poly8x8_t
109 tb_testp8_2 (poly8x8_t r, poly8x8x2_t tab, uint8x8_t idx)
111 return vtbx2_p8 (r, tab, idx);
114 int8x8_t
115 tb_tests8_3 (int8x8_t r, int8x8x3_t tab, int8x8_t idx)
117 return vtbx3_s8 (r, tab, idx);
120 uint8x8_t
121 tb_testu8_3 (uint8x8_t r, uint8x8x3_t tab, uint8x8_t idx)
123 return vtbx3_u8 (r, tab, idx);
126 poly8x8_t
127 tb_testp8_3 (poly8x8_t r, poly8x8x3_t tab, uint8x8_t idx)
129 return vtbx3_p8 (r, tab, idx);
132 int8x8_t
133 tb_tests8_4 (int8x8_t r, int8x8x4_t tab, int8x8_t idx)
135 return vtbx4_s8 (r, tab, idx);
138 uint8x8_t
139 tb_testu8_4 (uint8x8_t r, uint8x8x4_t tab, uint8x8_t idx)
141 return vtbx4_u8 (r, tab, idx);
144 poly8x8_t
145 tb_testp8_4 (poly8x8_t r, poly8x8x4_t tab, uint8x8_t idx)
147 return vtbx4_p8 (r, tab, idx);
150 int8x8_t
151 qtbl_tests8_ (int8x16_t tab, uint8x8_t idx)
153 return vqtbl1_s8 (tab, idx);
156 uint8x8_t
157 qtbl_testu8_ (uint8x16_t tab, uint8x8_t idx)
159 return vqtbl1_u8 (tab, idx);
162 poly8x8_t
163 qtbl_testp8_ (poly8x16_t tab, uint8x8_t idx)
165 return vqtbl1_p8 (tab, idx);
168 int8x8_t
169 qtbl_tests8_2 (int8x16x2_t tab, uint8x8_t idx)
171 return vqtbl2_s8 (tab, idx);
174 uint8x8_t
175 qtbl_testu8_2 (uint8x16x2_t tab, uint8x8_t idx)
177 return vqtbl2_u8 (tab, idx);
180 poly8x8_t
181 qtbl_testp8_2 (poly8x16x2_t tab, uint8x8_t idx)
183 return vqtbl2_p8 (tab, idx);
186 int8x8_t
187 qtbl_tests8_3 (int8x16x3_t tab, uint8x8_t idx)
189 return vqtbl3_s8 (tab, idx);
192 uint8x8_t
193 qtbl_testu8_3 (uint8x16x3_t tab, uint8x8_t idx)
195 return vqtbl3_u8 (tab, idx);
198 poly8x8_t
199 qtbl_testp8_3 (poly8x16x3_t tab, uint8x8_t idx)
201 return vqtbl3_p8 (tab, idx);
204 int8x8_t
205 qtbl_tests8_4 (int8x16x4_t tab, uint8x8_t idx)
207 return vqtbl4_s8 (tab, idx);
210 uint8x8_t
211 qtbl_testu8_4 (uint8x16x4_t tab, uint8x8_t idx)
213 return vqtbl4_u8 (tab, idx);
216 poly8x8_t
217 qtbl_testp8_4 (poly8x16x4_t tab, uint8x8_t idx)
219 return vqtbl4_p8 (tab, idx);
222 int8x8_t
223 qtb_tests8_ (int8x8_t r, int8x16_t tab, uint8x8_t idx)
225 return vqtbx1_s8 (r, tab, idx);
228 uint8x8_t
229 qtb_testu8_ (uint8x8_t r, uint8x16_t tab, uint8x8_t idx)
231 return vqtbx1_u8 (r, tab, idx);
234 poly8x8_t
235 qtb_testp8_ (poly8x8_t r, poly8x16_t tab, uint8x8_t idx)
237 return vqtbx1_p8 (r, tab, idx);
240 int8x8_t
241 qtb_tests8_2 (int8x8_t r, int8x16x2_t tab, uint8x8_t idx)
243 return vqtbx2_s8 (r, tab, idx);
246 uint8x8_t
247 qtb_testu8_2 (uint8x8_t r, uint8x16x2_t tab, uint8x8_t idx)
249 return vqtbx2_u8 (r, tab, idx);
252 poly8x8_t
253 qtb_testp8_2 (poly8x8_t r, poly8x16x2_t tab, uint8x8_t idx)
255 return vqtbx2_p8 (r, tab, idx);
258 int8x8_t
259 qtb_tests8_3 (int8x8_t r, int8x16x3_t tab, uint8x8_t idx)
261 return vqtbx3_s8 (r, tab, idx);
264 uint8x8_t
265 qtb_testu8_3 (uint8x8_t r, uint8x16x3_t tab, uint8x8_t idx)
267 return vqtbx3_u8 (r, tab, idx);
270 poly8x8_t
271 qtb_testp8_3 (poly8x8_t r, poly8x16x3_t tab, uint8x8_t idx)
273 return vqtbx3_p8 (r, tab, idx);
276 int8x8_t
277 qtb_tests8_4 (int8x8_t r, int8x16x4_t tab, uint8x8_t idx)
279 return vqtbx4_s8 (r, tab, idx);
282 uint8x8_t
283 qtb_testu8_4 (uint8x8_t r, uint8x16x4_t tab, uint8x8_t idx)
285 return vqtbx4_u8 (r, tab, idx);
288 poly8x8_t
289 qtb_testp8_4 (poly8x8_t r, poly8x16x4_t tab, uint8x8_t idx)
291 return vqtbx4_p8 (r, tab, idx);
294 int8x16_t
295 qtblq_tests8_ (int8x16_t tab, uint8x16_t idx)
297 return vqtbl1q_s8 (tab, idx);
300 uint8x16_t
301 qtblq_testu8_ (uint8x16_t tab, uint8x16_t idx)
303 return vqtbl1q_u8 (tab, idx);
306 poly8x16_t
307 qtblq_testp8_ (poly8x16_t tab, uint8x16_t idx)
309 return vqtbl1q_p8 (tab, idx);
312 int8x16_t
313 qtblq_tests8_2 (int8x16x2_t tab, uint8x16_t idx)
315 return vqtbl2q_s8 (tab, idx);
318 uint8x16_t
319 qtblq_testu8_2 (uint8x16x2_t tab, uint8x16_t idx)
321 return vqtbl2q_u8 (tab, idx);
324 poly8x16_t
325 qtblq_testp8_2 (poly8x16x2_t tab, uint8x16_t idx)
327 return vqtbl2q_p8 (tab, idx);
330 int8x16_t
331 qtblq_tests8_3 (int8x16x3_t tab, uint8x16_t idx)
333 return vqtbl3q_s8 (tab, idx);
336 uint8x16_t
337 qtblq_testu8_3 (uint8x16x3_t tab, uint8x16_t idx)
339 return vqtbl3q_u8 (tab, idx);
342 poly8x16_t
343 qtblq_testp8_3 (poly8x16x3_t tab, uint8x16_t idx)
345 return vqtbl3q_p8 (tab, idx);
348 int8x16_t
349 qtblq_tests8_4 (int8x16x4_t tab, uint8x16_t idx)
351 return vqtbl4q_s8 (tab, idx);
354 uint8x16_t
355 qtblq_testu8_4 (uint8x16x4_t tab, uint8x16_t idx)
357 return vqtbl4q_u8 (tab, idx);
360 poly8x16_t
361 qtblq_testp8_4 (poly8x16x4_t tab, uint8x16_t idx)
363 return vqtbl4q_p8 (tab, idx);
366 int8x16_t
367 qtbxq_tests8_ (int8x16_t r, int8x16_t tab, uint8x16_t idx)
369 return vqtbx1q_s8 (r, tab, idx);
372 uint8x16_t
373 qtbxq_testu8_ (uint8x16_t r, uint8x16_t tab, uint8x16_t idx)
375 return vqtbx1q_u8 (r, tab, idx);
378 poly8x16_t
379 qtbxq_testp8_ (poly8x16_t r, poly8x16_t tab, uint8x16_t idx)
381 return vqtbx1q_p8 (r, tab, idx);
384 int8x16_t
385 qtbxq_tests8_2 (int8x16_t r, int8x16x2_t tab, uint8x16_t idx)
387 return vqtbx2q_s8 (r, tab, idx);
390 uint8x16_t
391 qtbxq_testu8_2 (uint8x16_t r, uint8x16x2_t tab, uint8x16_t idx)
393 return vqtbx2q_u8 (r, tab, idx);
396 poly8x16_t
397 qtbxq_testp8_2 (poly8x16_t r, poly8x16x2_t tab, uint8x16_t idx)
399 return vqtbx2q_p8 (r, tab, idx);
402 int8x16_t
403 qtbxq_tests8_3 (int8x16_t r, int8x16x3_t tab, uint8x16_t idx)
405 return vqtbx3q_s8 (r, tab, idx);
408 uint8x16_t
409 qtbxq_testu8_3 (uint8x16_t r, uint8x16x3_t tab, uint8x16_t idx)
411 return vqtbx3q_u8 (r, tab, idx);
414 poly8x16_t
415 qtbxq_testp8_3 (poly8x16_t r, poly8x16x3_t tab, uint8x16_t idx)
417 return vqtbx3q_p8 (r, tab, idx);
420 int8x16_t
421 qtbxq_tests8_4 (int8x16_t r, int8x16x4_t tab, uint8x16_t idx)
423 return vqtbx4q_s8 (r, tab, idx);
426 uint8x16_t
427 qtbxq_testu8_4 (uint8x16_t r, uint8x16x4_t tab, uint8x16_t idx)
429 return vqtbx4q_u8 (r, tab, idx);
432 poly8x16_t
433 qtbxq_testp8_4 (poly8x16_t r, poly8x16x4_t tab, uint8x16_t idx)
435 return vqtbx4q_p8 (r, tab, idx);
438 /* { dg-final { scan-assembler-times "tbl\[ |\t\]*v" 42} } */
439 /* { dg-final { scan-assembler-times "tbx\[ |\t\]*v" 30} } */