xref: /minix3/external/bsd/llvm/dist/clang/test/CodeGen/aarch64-neon-misc.c (revision 0b98e8aad89f2bd4ba80b523d73cf29e9dd82ce1)
1 // REQUIRES: aarch64-registered-target
2 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +neon \
3 // RUN:   -ffp-contract=fast -S -O3 -o - %s | FileCheck %s
4 
5 // Test new aarch64 intrinsics and types
6 
7 #include <arm_neon.h>
8 
9 // CHECK: test_vceqz_s8
10 // CHECK: cmeq  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0x0
11 uint8x8_t test_vceqz_s8(int8x8_t a) {
12   return vceqz_s8(a);
13 }
14 
15 // CHECK: test_vceqz_s16
16 // CHECK: cmeq  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0x0
17 uint16x4_t test_vceqz_s16(int16x4_t a) {
18   return vceqz_s16(a);
19 }
20 
21 // CHECK: test_vceqz_s32
22 // CHECK: cmeq  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0x0
23 uint32x2_t test_vceqz_s32(int32x2_t a) {
24   return vceqz_s32(a);
25 }
26 
27 // CHECK: test_vceqzq_s8
28 // CHECK: cmeq  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0x0
29 uint8x16_t test_vceqzq_s8(int8x16_t a) {
30   return vceqzq_s8(a);
31 }
32 
33 // CHECK: test_vceqzq_s16
34 // CHECK: cmeq  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0x0
35 uint16x8_t test_vceqzq_s16(int16x8_t a) {
36   return vceqzq_s16(a);
37 }
38 
39 // CHECK: test_vceqzq_s32
40 // CHECK: cmeq  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0x0
41 uint32x4_t test_vceqzq_s32(int32x4_t a) {
42   return vceqzq_s32(a);
43 }
44 
45 // CHECK: test_vceqzq_s64
46 // CHECK: cmeq  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0x0
47 uint64x2_t test_vceqzq_s64(int64x2_t a) {
48   return vceqzq_s64(a);
49 }
50 
51 // CHECK: test_vceqz_u8
52 // CHECK: cmeq  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0x0
53 uint8x8_t test_vceqz_u8(uint8x8_t a) {
54   return vceqz_u8(a);
55 }
56 
57 // CHECK: test_vceqz_u16
58 // CHECK: cmeq  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0x0
59 uint16x4_t test_vceqz_u16(uint16x4_t a) {
60   return vceqz_u16(a);
61 }
62 
63 // CHECK: test_vceqz_u32
64 // CHECK: cmeq  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0x0
65 uint32x2_t test_vceqz_u32(uint32x2_t a) {
66   return vceqz_u32(a);
67 }
68 
69 // CHECK: test_vceqzq_u8
70 // CHECK: cmeq  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0x0
71 uint8x16_t test_vceqzq_u8(uint8x16_t a) {
72   return vceqzq_u8(a);
73 }
74 
75 // CHECK: test_vceqzq_u16
76 // CHECK: cmeq  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0x0
77 uint16x8_t test_vceqzq_u16(uint16x8_t a) {
78   return vceqzq_u16(a);
79 }
80 
81 // CHECK: test_vceqzq_u32
82 // CHECK: cmeq  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0x0
83 uint32x4_t test_vceqzq_u32(uint32x4_t a) {
84   return vceqzq_u32(a);
85 }
86 
87 // CHECK: test_vceqzq_u64
88 // CHECK: cmeq  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0x0
89 uint64x2_t test_vceqzq_u64(uint64x2_t a) {
90   return vceqzq_u64(a);
91 }
92 
93 // CHECK: test_vceqz_f32
94 // CHECK: fcmeq  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
95 uint32x2_t test_vceqz_f32(float32x2_t a) {
96   return vceqz_f32(a);
97 }
98 
99 // CHECK: test_vceqzq_f32
100 // CHECK: fcmeq  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
101 uint32x4_t test_vceqzq_f32(float32x4_t a) {
102   return vceqzq_f32(a);
103 }
104 
105 // CHECK: test_vceqz_p16
106 // CHECK: cmeq  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0x0
107 uint16x4_t test_vceqz_p16(poly16x4_t a) {
108   return vceqz_p16(a);
109 }
110 
111 // CHECK: test_vceqzq_p16
112 // CHECK: cmeq  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0x0
113 uint16x8_t test_vceqzq_p16(poly16x8_t a) {
114   return vceqzq_p16(a);
115 }
116 
117 // CHECK: test_vceqzq_f64
118 // CHECK: fcmeq  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
119 uint64x2_t test_vceqzq_f64(float64x2_t a) {
120   return vceqzq_f64(a);
121 }
122 
123 // CHECK: test_vcgez_s8
124 // CHECK: cmge  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0x0
125 uint8x8_t test_vcgez_s8(int8x8_t a) {
126   return vcgez_s8(a);
127 }
128 
129 // CHECK: test_vcgez_s16
130 // CHECK: cmge  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0x0
131 uint16x4_t test_vcgez_s16(int16x4_t a) {
132   return vcgez_s16(a);
133 }
134 
135 // CHECK: test_vcgez_s32
136 // CHECK: cmge  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0x0
137 uint32x2_t test_vcgez_s32(int32x2_t a) {
138   return vcgez_s32(a);
139 }
140 
141 // CHECK: test_vcgezq_s8
142 // CHECK: cmge  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0x0
143 uint8x16_t test_vcgezq_s8(int8x16_t a) {
144   return vcgezq_s8(a);
145 }
146 
147 // CHECK: test_vcgezq_s16
148 // CHECK: cmge  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0x0
149 uint16x8_t test_vcgezq_s16(int16x8_t a) {
150   return vcgezq_s16(a);
151 }
152 
153 // CHECK: test_vcgezq_s32
154 // CHECK: cmge  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0x0
155 uint32x4_t test_vcgezq_s32(int32x4_t a) {
156   return vcgezq_s32(a);
157 }
158 
159 // CHECK: test_vcgezq_s64
160 // CHECK: cmge  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0x0
161 uint64x2_t test_vcgezq_s64(int64x2_t a) {
162   return vcgezq_s64(a);
163 }
164 
165 // CHECK: test_vcgez_f32
166 // CHECK: fcmge  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
167 uint32x2_t test_vcgez_f32(float32x2_t a) {
168   return vcgez_f32(a);
169 }
170 
171 // CHECK: test_vcgezq_f32
172 // CHECK: fcmge  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
173 uint32x4_t test_vcgezq_f32(float32x4_t a) {
174   return vcgezq_f32(a);
175 }
176 
177 // CHECK: test_vcgezq_f64
178 // CHECK: fcmge  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
179 uint64x2_t test_vcgezq_f64(float64x2_t a) {
180   return vcgezq_f64(a);
181 }
182 
183 // CHECK: test_vclez_s8
184 // CHECK: cmle  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0x0
185 uint8x8_t test_vclez_s8(int8x8_t a) {
186   return vclez_s8(a);
187 }
188 
189 // CHECK: test_vclez_s16
190 // CHECK: cmle  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0x0
191 uint16x4_t test_vclez_s16(int16x4_t a) {
192   return vclez_s16(a);
193 }
194 
195 // CHECK: test_vclez_s32
196 // CHECK: cmle  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0x0
197 uint32x2_t test_vclez_s32(int32x2_t a) {
198   return vclez_s32(a);
199 }
200 
201 // CHECK: test_vclezq_s8
202 // CHECK: cmle  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0x0
203 uint8x16_t test_vclezq_s8(int8x16_t a) {
204   return vclezq_s8(a);
205 }
206 
207 // CHECK: test_vclezq_s16
208 // CHECK: cmle  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0x0
209 uint16x8_t test_vclezq_s16(int16x8_t a) {
210   return vclezq_s16(a);
211 }
212 
213 // CHECK: test_vclezq_s32
214 // CHECK: cmle  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0x0
215 uint32x4_t test_vclezq_s32(int32x4_t a) {
216   return vclezq_s32(a);
217 }
218 
219 // CHECK: test_vclezq_s64
220 // CHECK: cmle  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0x0
221 uint64x2_t test_vclezq_s64(int64x2_t a) {
222   return vclezq_s64(a);
223 }
224 
225 // CHECK: test_vclez_f32
226 // CHECK: fcmle  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
227 uint32x2_t test_vclez_f32(float32x2_t a) {
228   return vclez_f32(a);
229 }
230 
231 // CHECK: test_vclezq_f32
232 // CHECK: fcmle  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
233 uint32x4_t test_vclezq_f32(float32x4_t a) {
234   return vclezq_f32(a);
235 }
236 
237 // CHECK: test_vclezq_f64
238 // CHECK: fcmle  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
239 uint64x2_t test_vclezq_f64(float64x2_t a) {
240   return vclezq_f64(a);
241 }
242 
243 // CHECK: test_vcgtz_s8
244 // CHECK: cmgt  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0x0
245 uint8x8_t test_vcgtz_s8(int8x8_t a) {
246   return vcgtz_s8(a);
247 }
248 
249 // CHECK: test_vcgtz_s16
250 // CHECK: cmgt  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0x0
251 uint16x4_t test_vcgtz_s16(int16x4_t a) {
252   return vcgtz_s16(a);
253 }
254 
255 // CHECK: test_vcgtz_s32
256 // CHECK: cmgt  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0x0
257 uint32x2_t test_vcgtz_s32(int32x2_t a) {
258   return vcgtz_s32(a);
259 }
260 
261 // CHECK: test_vcgtzq_s8
262 // CHECK: cmgt  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0x0
263 uint8x16_t test_vcgtzq_s8(int8x16_t a) {
264   return vcgtzq_s8(a);
265 }
266 
267 // CHECK: test_vcgtzq_s16
268 // CHECK: cmgt  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0x0
269 uint16x8_t test_vcgtzq_s16(int16x8_t a) {
270   return vcgtzq_s16(a);
271 }
272 
273 // CHECK: test_vcgtzq_s32
274 // CHECK: cmgt  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0x0
275 uint32x4_t test_vcgtzq_s32(int32x4_t a) {
276   return vcgtzq_s32(a);
277 }
278 
279 // CHECK: test_vcgtzq_s64
280 // CHECK: cmgt  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0x0
281 uint64x2_t test_vcgtzq_s64(int64x2_t a) {
282   return vcgtzq_s64(a);
283 }
284 
285 // CHECK: test_vcgtz_f32
286 // CHECK: fcmgt  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
287 uint32x2_t test_vcgtz_f32(float32x2_t a) {
288   return vcgtz_f32(a);
289 }
290 
291 // CHECK: test_vcgtzq_f32
292 // CHECK: fcmgt  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
293 uint32x4_t test_vcgtzq_f32(float32x4_t a) {
294   return vcgtzq_f32(a);
295 }
296 
297 // CHECK: test_vcgtzq_f64
298 // CHECK: fcmgt  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
299 uint64x2_t test_vcgtzq_f64(float64x2_t a) {
300   return vcgtzq_f64(a);
301 }
302 
303 // CHECK: test_vcltz_s8
304 // CHECK: cmlt  {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
305 uint8x8_t test_vcltz_s8(int8x8_t a) {
306   return vcltz_s8(a);
307 }
308 
309 // CHECK: test_vcltz_s16
310 // CHECK: cmlt  {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0
311 uint16x4_t test_vcltz_s16(int16x4_t a) {
312   return vcltz_s16(a);
313 }
314 
315 // CHECK: test_vcltz_s32
316 // CHECK: cmlt  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
317 uint32x2_t test_vcltz_s32(int32x2_t a) {
318   return vcltz_s32(a);
319 }
320 
321 // CHECK: test_vcltzq_s8
322 // CHECK: cmlt  {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0
323 uint8x16_t test_vcltzq_s8(int8x16_t a) {
324   return vcltzq_s8(a);
325 }
326 
327 // CHECK: test_vcltzq_s16
328 // CHECK: cmlt  {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0
329 uint16x8_t test_vcltzq_s16(int16x8_t a) {
330   return vcltzq_s16(a);
331 }
332 
333 // CHECK: test_vcltzq_s32
334 // CHECK: cmlt  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
335 uint32x4_t test_vcltzq_s32(int32x4_t a) {
336   return vcltzq_s32(a);
337 }
338 
339 // CHECK: test_vcltzq_s64
340 // CHECK: cmlt  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
341 uint64x2_t test_vcltzq_s64(int64x2_t a) {
342   return vcltzq_s64(a);
343 }
344 
345 // CHECK: test_vcltz_f32
346 // CHECK: fcmlt  {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
347 uint32x2_t test_vcltz_f32(float32x2_t a) {
348   return vcltz_f32(a);
349 }
350 
351 // CHECK: test_vcltzq_f32
352 // CHECK: fcmlt  {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
353 uint32x4_t test_vcltzq_f32(float32x4_t a) {
354   return vcltzq_f32(a);
355 }
356 
357 // CHECK: test_vcltzq_f64
358 // CHECK: fcmlt  {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
359 uint64x2_t test_vcltzq_f64(float64x2_t a) {
360   return vcltzq_f64(a);
361 }
362 
363 // CHECK: test_vrev16_s8
364 // CHECK: rev16 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
365 int8x8_t test_vrev16_s8(int8x8_t a) {
366   return vrev16_s8(a);
367 }
368 
369 // CHECK: test_vrev16_u8
370 // CHECK: rev16 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
371 uint8x8_t test_vrev16_u8(uint8x8_t a) {
372   return vrev16_u8(a);
373 }
374 
375 // CHECK: test_vrev16_p8
376 // CHECK: rev16 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
377 poly8x8_t test_vrev16_p8(poly8x8_t a) {
378   return vrev16_p8(a);
379 }
380 
381 // CHECK: test_vrev16q_s8
382 // CHECK: rev16 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
383 int8x16_t test_vrev16q_s8(int8x16_t a) {
384   return vrev16q_s8(a);
385 }
386 
387 // CHECK: test_vrev16q_u8
388 // CHECK: rev16 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
389 uint8x16_t test_vrev16q_u8(uint8x16_t a) {
390   return vrev16q_u8(a);
391 }
392 
393 // CHECK: test_vrev16q_p8
394 // CHECK: rev16 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
395 poly8x16_t test_vrev16q_p8(poly8x16_t a) {
396   return vrev16q_p8(a);
397 }
398 
399 // CHECK: test_vrev32_s8
400 // CHECK: rev32 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
401 int8x8_t test_vrev32_s8(int8x8_t a) {
402   return vrev32_s8(a);
403 }
404 
405 // CHECK: test_vrev32_s16
406 // CHECK: rev32 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
407 int16x4_t test_vrev32_s16(int16x4_t a) {
408   return vrev32_s16(a);
409 }
410 
411 // CHECK: test_vrev32_u8
412 // CHECK: rev32 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
413 uint8x8_t test_vrev32_u8(uint8x8_t a) {
414   return vrev32_u8(a);
415 }
416 
417 // CHECK: test_vrev32_u16
418 // CHECK: rev32 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
419 uint16x4_t test_vrev32_u16(uint16x4_t a) {
420   return vrev32_u16(a);
421 }
422 
423 // CHECK: test_vrev32_p8
424 // CHECK: rev32 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
425 poly8x8_t test_vrev32_p8(poly8x8_t a) {
426   return vrev32_p8(a);
427 }
428 
429 // CHECK: test_vrev32_p16
430 // CHECK: rev32 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
431 poly16x4_t test_vrev32_p16(poly16x4_t a) {
432   return vrev32_p16(a);
433 }
434 
435 // CHECK: test_vrev32q_s8
436 // CHECK: rev32 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
437 int8x16_t test_vrev32q_s8(int8x16_t a) {
438   return vrev32q_s8(a);
439 }
440 
441 // CHECK: test_vrev32q_s16
442 // CHECK: rev32 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
443 int16x8_t test_vrev32q_s16(int16x8_t a) {
444   return vrev32q_s16(a);
445 }
446 
447 // CHECK: test_vrev32q_u8
448 // CHECK: rev32 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
449 uint8x16_t test_vrev32q_u8(uint8x16_t a) {
450   return vrev32q_u8(a);
451 }
452 
453 // CHECK: test_vrev32q_u16
454 // CHECK: rev32 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
455 uint16x8_t test_vrev32q_u16(uint16x8_t a) {
456   return vrev32q_u16(a);
457 }
458 
459 // CHECK: test_vrev32q_p8
460 // CHECK: rev32 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
461 poly8x16_t test_vrev32q_p8(poly8x16_t a) {
462   return vrev32q_p8(a);
463 }
464 
465 // CHECK: test_vrev32q_p16
466 // CHECK: rev32 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
467 poly16x8_t test_vrev32q_p16(poly16x8_t a) {
468   return vrev32q_p16(a);
469 }
470 
471 // CHECK: test_vrev64_s8
472 // CHECK: rev64 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
473 int8x8_t test_vrev64_s8(int8x8_t a) {
474   return vrev64_s8(a);
475 }
476 
477 // CHECK: test_vrev64_s16
478 // CHECK: rev64 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
479 int16x4_t test_vrev64_s16(int16x4_t a) {
480   return vrev64_s16(a);
481 }
482 
483 // CHECK: test_vrev64_s32
484 // CHECK: rev64 v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
485 int32x2_t test_vrev64_s32(int32x2_t a) {
486   return vrev64_s32(a);
487 }
488 
489 // CHECK: test_vrev64_u8
490 // CHECK: rev64 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
491 uint8x8_t test_vrev64_u8(uint8x8_t a) {
492   return vrev64_u8(a);
493 }
494 
495 // CHECK: test_vrev64_u16
496 // CHECK: rev64 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
497 uint16x4_t test_vrev64_u16(uint16x4_t a) {
498   return vrev64_u16(a);
499 }
500 
501 // CHECK: test_vrev64_u32
502 // CHECK: rev64 v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
503 uint32x2_t test_vrev64_u32(uint32x2_t a) {
504   return vrev64_u32(a);
505 }
506 
507 // CHECK: test_vrev64_p8
508 // CHECK: rev64 v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
509 poly8x8_t test_vrev64_p8(poly8x8_t a) {
510   return vrev64_p8(a);
511 }
512 
513 // CHECK: test_vrev64_p16
514 // CHECK: rev64 v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
515 poly16x4_t test_vrev64_p16(poly16x4_t a) {
516   return vrev64_p16(a);
517 }
518 
519 // CHECK: test_vrev64_f32
520 // CHECK: rev64 v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
521 float32x2_t test_vrev64_f32(float32x2_t a) {
522   return vrev64_f32(a);
523 }
524 
525 // CHECK: test_vrev64q_s8
526 // CHECK: rev64 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
527 int8x16_t test_vrev64q_s8(int8x16_t a) {
528   return vrev64q_s8(a);
529 }
530 
531 // CHECK: test_vrev64q_s16
532 // CHECK: rev64 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
533 int16x8_t test_vrev64q_s16(int16x8_t a) {
534   return vrev64q_s16(a);
535 }
536 
537 // CHECK: test_vrev64q_s32
538 // CHECK: rev64 v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
539 int32x4_t test_vrev64q_s32(int32x4_t a) {
540   return vrev64q_s32(a);
541 }
542 
543 // CHECK: test_vrev64q_u8
544 // CHECK: rev64 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
545 uint8x16_t test_vrev64q_u8(uint8x16_t a) {
546   return vrev64q_u8(a);
547 }
548 
549 // CHECK: test_vrev64q_u16
550 // CHECK: rev64 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
551 uint16x8_t test_vrev64q_u16(uint16x8_t a) {
552   return vrev64q_u16(a);
553 }
554 
555 // CHECK: test_vrev64q_u32
556 // CHECK: rev64 v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
557 uint32x4_t test_vrev64q_u32(uint32x4_t a) {
558   return vrev64q_u32(a);
559 }
560 
561 // CHECK: test_vrev64q_p8
562 // CHECK: rev64 v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
563 poly8x16_t test_vrev64q_p8(poly8x16_t a) {
564   return vrev64q_p8(a);
565 }
566 
567 // CHECK: test_vrev64q_p16
568 // CHECK: rev64 v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
569 poly16x8_t test_vrev64q_p16(poly16x8_t a) {
570   return vrev64q_p16(a);
571 }
572 
573 // CHECK: test_vrev64q_f32
574 // CHECK: rev64 v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
575 float32x4_t test_vrev64q_f32(float32x4_t a) {
576   return vrev64q_f32(a);
577 }
578 
579 int16x4_t test_vpaddl_s8(int8x8_t a) {
580   // CHECK: test_vpaddl_s8
581   return vpaddl_s8(a);
582   // CHECK: saddlp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
583 }
584 
585 int32x2_t test_vpaddl_s16(int16x4_t a) {
586   // CHECK: test_vpaddl_s16
587   return vpaddl_s16(a);
588   // CHECK: saddlp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
589 }
590 
591 int64x1_t test_vpaddl_s32(int32x2_t a) {
592   // CHECK: test_vpaddl_s32
593   return vpaddl_s32(a);
594   // CHECK: saddlp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
595 }
596 
597 uint16x4_t test_vpaddl_u8(uint8x8_t a) {
598   // CHECK: test_vpaddl_u8
599   return vpaddl_u8(a);
600   // CHECK: uaddlp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
601 }
602 
603 uint32x2_t test_vpaddl_u16(uint16x4_t a) {
604   // CHECK: test_vpaddl_u16
605   return vpaddl_u16(a);
606   // CHECK: uaddlp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
607 }
608 
609 uint64x1_t test_vpaddl_u32(uint32x2_t a) {
610   // CHECK: test_vpaddl_u32
611   return vpaddl_u32(a);
612   // CHECK: uaddlp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
613 }
614 
615 int16x8_t test_vpaddlq_s8(int8x16_t a) {
616   // CHECK: test_vpaddlq_s8
617   return vpaddlq_s8(a);
618   // CHECK: saddlp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
619 }
620 
621 int32x4_t test_vpaddlq_s16(int16x8_t a) {
622   // CHECK: test_vpaddlq_s16
623   return vpaddlq_s16(a);
624   // CHECK: saddlp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
625 }
626 
627 int64x2_t test_vpaddlq_s32(int32x4_t a) {
628   // CHECK: test_vpaddlq_s32
629   return vpaddlq_s32(a);
630   // CHECK: saddlp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
631 }
632 
633 uint16x8_t test_vpaddlq_u8(uint8x16_t a) {
634   // CHECK: test_vpaddlq_u8
635   return vpaddlq_u8(a);
636   // CHECK: uaddlp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
637 }
638 
639 uint32x4_t test_vpaddlq_u16(uint16x8_t a) {
640   // CHECK: test_vpaddlq_u16
641   return vpaddlq_u16(a);
642   // CHECK: uaddlp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
643 }
644 
645 uint64x2_t test_vpaddlq_u32(uint32x4_t a) {
646   // CHECK: test_vpaddlq_u32
647   return vpaddlq_u32(a);
648   // CHECK: uaddlp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
649 }
650 
651 int16x4_t test_vpadal_s8(int16x4_t a, int8x8_t b) {
652   // CHECK: test_vpadal_s8
653   return vpadal_s8(a, b);
654   // CHECK: sadalp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
655 }
656 
657 int32x2_t test_vpadal_s16(int32x2_t a, int16x4_t b) {
658   // CHECK: test_vpadal_s16
659   return vpadal_s16(a, b);
660   // CHECK: sadalp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
661 }
662 
663 int64x1_t test_vpadal_s32(int64x1_t a, int32x2_t b) {
664   // CHECK: test_vpadal_s32
665   return vpadal_s32(a, b);
666   // CHECK: sadalp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
667 }
668 
669 uint16x4_t test_vpadal_u8(uint16x4_t a, uint8x8_t b) {
670   // CHECK: test_vpadal_u8
671   return vpadal_u8(a, b);
672   // CHECK: uadalp v{{[0-9]+}}.4h, v{{[0-9]+}}.8b
673 }
674 
675 uint32x2_t test_vpadal_u16(uint32x2_t a, uint16x4_t b) {
676   // CHECK: test_vpadal_u16
677   return vpadal_u16(a, b);
678   // CHECK: uadalp v{{[0-9]+}}.2s, v{{[0-9]+}}.4h
679 }
680 
681 uint64x1_t test_vpadal_u32(uint64x1_t a, uint32x2_t b) {
682   // CHECK: test_vpadal_u32
683   return vpadal_u32(a, b);
684   // CHECK: uadalp v{{[0-9]+}}.1d, v{{[0-9]+}}.2s
685 }
686 
687 int16x8_t test_vpadalq_s8(int16x8_t a, int8x16_t b) {
688   // CHECK: test_vpadalq_s8
689   return vpadalq_s8(a, b);
690   // CHECK: sadalp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
691 }
692 
693 int32x4_t test_vpadalq_s16(int32x4_t a, int16x8_t b) {
694   // CHECK: test_vpadalq_s16
695   return vpadalq_s16(a, b);
696   // CHECK: sadalp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
697 }
698 
699 int64x2_t test_vpadalq_s32(int64x2_t a, int32x4_t b) {
700   // CHECK: test_vpadalq_s32
701   return vpadalq_s32(a, b);
702   // CHECK: sadalp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
703 }
704 
705 uint16x8_t test_vpadalq_u8(uint16x8_t a, uint8x16_t b) {
706   // CHECK: test_vpadalq_u8
707   return vpadalq_u8(a, b);
708   // CHECK: uadalp v{{[0-9]+}}.8h, v{{[0-9]+}}.16b
709 }
710 
711 uint32x4_t test_vpadalq_u16(uint32x4_t a, uint16x8_t b) {
712   // CHECK: test_vpadalq_u16
713   return vpadalq_u16(a, b);
714   // CHECK: uadalp v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
715 }
716 
717 uint64x2_t test_vpadalq_u32(uint64x2_t a, uint32x4_t b) {
718   // CHECK: test_vpadalq_u32
719   return vpadalq_u32(a, b);
720   // CHECK: uadalp v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
721 }
722 
723 int8x8_t test_vqabs_s8(int8x8_t a) {
724   // CHECK: test_vqabs_s8
725   return vqabs_s8(a);
726   // CHECK: sqabs v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
727 }
728 
729 int8x16_t test_vqabsq_s8(int8x16_t a) {
730   // CHECK: test_vqabsq_s8
731   return vqabsq_s8(a);
732   // CHECK: sqabs v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
733 }
734 
735 int16x4_t test_vqabs_s16(int16x4_t a) {
736   // CHECK: test_vqabs_s16
737   return vqabs_s16(a);
738   // CHECK: sqabs v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
739 }
740 
741 int16x8_t test_vqabsq_s16(int16x8_t a) {
742   // CHECK: test_vqabsq_s16
743   return vqabsq_s16(a);
744   // CHECK: sqabs v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
745 }
746 
747 int32x2_t test_vqabs_s32(int32x2_t a) {
748   // CHECK: test_vqabs_s32
749   return vqabs_s32(a);
750   // CHECK: sqabs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
751 }
752 
753 int32x4_t test_vqabsq_s32(int32x4_t a) {
754   // CHECK: test_vqabsq_s32
755   return vqabsq_s32(a);
756   // CHECK: sqabs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
757 }
758 
759 int64x2_t test_vqabsq_s64(int64x2_t a) {
760   // CHECK: test_vqabsq_s64
761   return vqabsq_s64(a);
762   // CHECK: sqabs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
763 }
764 
765 int8x8_t test_vqneg_s8(int8x8_t a) {
766   // CHECK: test_vqneg_s8
767   return vqneg_s8(a);
768   // CHECK: sqneg v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
769 }
770 
771 int8x16_t test_vqnegq_s8(int8x16_t a) {
772   // CHECK: test_vqnegq_s8
773   return vqnegq_s8(a);
774   // CHECK: sqneg v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
775 }
776 
777 int16x4_t test_vqneg_s16(int16x4_t a) {
778   // CHECK: test_vqneg_s16
779   return vqneg_s16(a);
780   // CHECK: sqneg v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
781 }
782 
783 int16x8_t test_vqnegq_s16(int16x8_t a) {
784   // CHECK: test_vqnegq_s16
785   return vqnegq_s16(a);
786   // CHECK: sqneg v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
787 }
788 
789 int32x2_t test_vqneg_s32(int32x2_t a) {
790   // CHECK: test_vqneg_s32
791   return vqneg_s32(a);
792   // CHECK: sqneg v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
793 }
794 
795 int32x4_t test_vqnegq_s32(int32x4_t a) {
796   // CHECK: test_vqnegq_s32
797   return vqnegq_s32(a);
798   // CHECK: sqneg v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
799 }
800 
801 int64x2_t test_vqnegq_s64(int64x2_t a) {
802   // CHECK: test_vqnegq_s64
803   return vqnegq_s64(a);
804   // CHECK: sqneg v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
805 }
806 
807 int8x8_t test_vneg_s8(int8x8_t a) {
808   // CHECK: test_vneg_s8
809   return vneg_s8(a);
810   // CHECK: neg v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
811 }
812 
813 int8x16_t test_vnegq_s8(int8x16_t a) {
814   // CHECK: test_vnegq_s8
815   return vnegq_s8(a);
816   // CHECK: neg v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
817 }
818 
819 int16x4_t test_vneg_s16(int16x4_t a) {
820   // CHECK: test_vneg_s16
821   return vneg_s16(a);
822   // CHECK: neg v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
823 }
824 
825 int16x8_t test_vnegq_s16(int16x8_t a) {
826   // CHECK: test_vnegq_s16
827   return vnegq_s16(a);
828   // CHECK: neg v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
829 }
830 
831 int32x2_t test_vneg_s32(int32x2_t a) {
832   // CHECK: test_vneg_s32
833   return vneg_s32(a);
834   // CHECK: neg v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
835 }
836 
837 int32x4_t test_vnegq_s32(int32x4_t a) {
838   // CHECK: test_vnegq_s32
839   return vnegq_s32(a);
840   // CHECK: neg v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
841 }
842 
843 int64x2_t test_vnegq_s64(int64x2_t a) {
844   // CHECK: test_vnegq_s64
845   return vnegq_s64(a);
846   // CHECK: neg v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
847 }
848 
849 float32x2_t test_vneg_f32(float32x2_t a) {
850   // CHECK: test_vneg_f32
851   return vneg_f32(a);
852   // CHECK: fneg v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
853 }
854 
855 float32x4_t test_vnegq_f32(float32x4_t a) {
856   // CHECK: test_vnegq_f32
857   return vnegq_f32(a);
858   // CHECK: fneg v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
859 }
860 
861 float64x2_t test_vnegq_f64(float64x2_t a) {
862   // CHECK: test_vnegq_f64
863   return vnegq_f64(a);
864   // CHECK: fneg v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
865 }
866 
867 int8x8_t test_vabs_s8(int8x8_t a) {
868   // CHECK: test_vabs_s8
869   return vabs_s8(a);
870   // CHECK: abs v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
871 }
872 
873 int8x16_t test_vabsq_s8(int8x16_t a) {
874   // CHECK: test_vabsq_s8
875   return vabsq_s8(a);
876   // CHECK: abs v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
877 }
878 
879 int16x4_t test_vabs_s16(int16x4_t a) {
880   // CHECK: test_vabs_s16
881   return vabs_s16(a);
882   // CHECK: abs v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
883 }
884 
885 int16x8_t test_vabsq_s16(int16x8_t a) {
886   // CHECK: test_vabsq_s16
887   return vabsq_s16(a);
888   // CHECK: abs v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
889 }
890 
891 int32x2_t test_vabs_s32(int32x2_t a) {
892   // CHECK: test_vabs_s32
893   return vabs_s32(a);
894   // CHECK: abs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
895 }
896 
897 int32x4_t test_vabsq_s32(int32x4_t a) {
898   // CHECK: test_vabsq_s32
899   return vabsq_s32(a);
900   // CHECK: abs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
901 }
902 
903 int64x2_t test_vabsq_s64(int64x2_t a) {
904   // CHECK: test_vabsq_s64
905   return vabsq_s64(a);
906   // CHECK: abs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
907 }
908 
909 float32x2_t test_vabs_f32(float32x2_t a) {
910   // CHECK: test_vabs_f32
911   return vabs_f32(a);
912   // CHECK: fabs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
913 }
914 
915 float32x4_t test_vabsq_f32(float32x4_t a) {
916   // CHECK: test_vabsq_f32
917   return vabsq_f32(a);
918   // CHECK: fabs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
919 }
920 
921 float64x2_t test_vabsq_f64(float64x2_t a) {
922   // CHECK: test_vabsq_f64
923   return vabsq_f64(a);
924   // CHECK: fabs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
925 }
926 
927 int8x8_t test_vuqadd_s8(int8x8_t a, int8x8_t b) {
928   // CHECK: test_vuqadd_s8
929   return vuqadd_s8(a, b);
930   // CHECK: suqadd v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
931 }
932 
933 int8x16_t test_vuqaddq_s8(int8x16_t a, int8x16_t b) {
934   // CHECK: test_vuqaddq_s8
935   return vuqaddq_s8(a, b);
936   // CHECK: suqadd v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
937 }
938 
939 int16x4_t test_vuqadd_s16(int16x4_t a, int16x4_t b) {
940   // CHECK: test_vuqadd_s16
941   return vuqadd_s16(a, b);
942   // CHECK: suqadd v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
943 }
944 
945 int16x8_t test_vuqaddq_s16(int16x8_t a, int16x8_t b) {
946   // CHECK: test_vuqaddq_s16
947   return vuqaddq_s16(a, b);
948   // CHECK: suqadd v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
949 }
950 
951 int32x2_t test_vuqadd_s32(int32x2_t a, int32x2_t b) {
952   // CHECK: test_vuqadd_s32
953   return vuqadd_s32(a, b);
954   // CHECK: suqadd v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
955 }
956 
957 int32x4_t test_vuqaddq_s32(int32x4_t a, int32x4_t b) {
958   // CHECK: test_vuqaddq_s32
959   return vuqaddq_s32(a, b);
960   // CHECK: suqadd v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
961 }
962 
963 int64x2_t test_vuqaddq_s64(int64x2_t a, int64x2_t b) {
964   // CHECK: test_vuqaddq_s64
965   return vuqaddq_s64(a, b);
966   // CHECK: suqadd v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
967 }
968 
969 int8x8_t test_vcls_s8(int8x8_t a) {
970   // CHECK: test_vcls_s8
971   return vcls_s8(a);
972   // CHECK: cls v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
973 }
974 
975 int8x16_t test_vclsq_s8(int8x16_t a) {
976   // CHECK: test_vclsq_s8
977   return vclsq_s8(a);
978   // CHECK: cls v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
979 }
980 
981 int16x4_t test_vcls_s16(int16x4_t a) {
982   // CHECK: test_vcls_s16
983   return vcls_s16(a);
984   // CHECK: cls v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
985 }
986 
987 int16x8_t test_vclsq_s16(int16x8_t a) {
988   // CHECK: test_vclsq_s16
989   return vclsq_s16(a);
990   // CHECK: cls v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
991 }
992 
993 int32x2_t test_vcls_s32(int32x2_t a) {
994   // CHECK: test_vcls_s32
995   return vcls_s32(a);
996   // CHECK: cls v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
997 }
998 
999 int32x4_t test_vclsq_s32(int32x4_t a) {
1000   // CHECK: test_vclsq_s32
1001   return vclsq_s32(a);
1002   // CHECK: cls v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1003 }
1004 
1005 int8x8_t test_vclz_s8(int8x8_t a) {
1006   // CHECK: test_vclz_s8
1007   return vclz_s8(a);
1008   // CHECK: clz v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1009 }
1010 
1011 int8x16_t test_vclzq_s8(int8x16_t a) {
1012   // CHECK: test_vclzq_s8
1013   return vclzq_s8(a);
1014   // CHECK: clz v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1015 }
1016 
1017 int16x4_t test_vclz_s16(int16x4_t a) {
1018   // CHECK: test_vclz_s16
1019   return vclz_s16(a);
1020   // CHECK: clz v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
1021 }
1022 
1023 int16x8_t test_vclzq_s16(int16x8_t a) {
1024   // CHECK: test_vclzq_s16
1025   return vclzq_s16(a);
1026   // CHECK: clz v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
1027 }
1028 
1029 int32x2_t test_vclz_s32(int32x2_t a) {
1030   // CHECK: test_vclz_s32
1031   return vclz_s32(a);
1032   // CHECK: clz v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1033 }
1034 
1035 int32x4_t test_vclzq_s32(int32x4_t a) {
1036   // CHECK: test_vclzq_s32
1037   return vclzq_s32(a);
1038   // CHECK: clz v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1039 }
1040 
1041 uint8x8_t test_vclz_u8(uint8x8_t a) {
1042   // CHECK: test_vclz_u8
1043   return vclz_u8(a);
1044   // CHECK: clz v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1045 }
1046 
1047 uint8x16_t test_vclzq_u8(uint8x16_t a) {
1048   // CHECK: test_vclzq_u8
1049   return vclzq_u8(a);
1050   // CHECK: clz v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1051 }
1052 
1053 uint16x4_t test_vclz_u16(uint16x4_t a) {
1054   // CHECK: test_vclz_u16
1055   return vclz_u16(a);
1056   // CHECK: clz v{{[0-9]+}}.4h, v{{[0-9]+}}.4h
1057 }
1058 
1059 uint16x8_t test_vclzq_u16(uint16x8_t a) {
1060   // CHECK: test_vclzq_u16
1061   return vclzq_u16(a);
1062   // CHECK: clz v{{[0-9]+}}.8h, v{{[0-9]+}}.8h
1063 }
1064 
1065 uint32x2_t test_vclz_u32(uint32x2_t a) {
1066   // CHECK: test_vclz_u32
1067   return vclz_u32(a);
1068   // CHECK: clz v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1069 }
1070 
1071 uint32x4_t test_vclzq_u32(uint32x4_t a) {
1072   // CHECK: test_vclzq_u32
1073   return vclzq_u32(a);
1074   // CHECK: clz v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1075 }
1076 
1077 int8x8_t test_vcnt_s8(int8x8_t a) {
1078   // CHECK: test_vcnt_s8
1079   return vcnt_s8(a);
1080   // CHECK: cnt v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1081 }
1082 
1083 int8x16_t test_vcntq_s8(int8x16_t a) {
1084   // CHECK: test_vcntq_s8
1085   return vcntq_s8(a);
1086   // CHECK: cnt v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1087 }
1088 
1089 uint8x8_t test_vcnt_u8(uint8x8_t a) {
1090   // CHECK: test_vcnt_u8
1091   return vcnt_u8(a);
1092   // CHECK: cnt v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1093 }
1094 
1095 uint8x16_t test_vcntq_u8(uint8x16_t a) {
1096   // CHECK: test_vcntq_u8
1097   return vcntq_u8(a);
1098   // CHECK: cnt v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1099 }
1100 
1101 poly8x8_t test_vcnt_p8(poly8x8_t a) {
1102   // CHECK: test_vcnt_p8
1103   return vcnt_p8(a);
1104   // CHECK: cnt v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1105 }
1106 
1107 poly8x16_t test_vcntq_p8(poly8x16_t a) {
1108   // CHECK: test_vcntq_p8
1109   return vcntq_p8(a);
1110   // CHECK: cnt v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1111 }
1112 
1113 int8x8_t test_vmvn_s8(int8x8_t a) {
1114   // CHECK: test_vmvn_s8
1115   return vmvn_s8(a);
1116   // CHECK: not v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1117 }
1118 
1119 int8x16_t test_vmvnq_s8(int8x16_t a) {
1120   // CHECK: test_vmvnq_s8
1121   return vmvnq_s8(a);
1122   // CHECK: not v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1123 }
1124 
1125 int16x4_t test_vmvn_s16(int16x4_t a) {
1126   // CHECK: test_vmvn_s16
1127   return vmvn_s16(a);
1128   // CHECK: not v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1129 }
1130 
1131 int16x8_t test_vmvnq_s16(int16x8_t a) {
1132   // CHECK: test_vmvnq_s16
1133   return vmvnq_s16(a);
1134   // CHECK: not v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1135 }
1136 
1137 int32x2_t test_vmvn_s32(int32x2_t a) {
1138   // CHECK: test_vmvn_s32
1139   return vmvn_s32(a);
1140   // CHECK: not v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1141 }
1142 
1143 int32x4_t test_vmvnq_s32(int32x4_t a) {
1144   // CHECK: test_vmvnq_s32
1145   return vmvnq_s32(a);
1146   // CHECK: not v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1147 }
1148 
1149 uint8x8_t test_vmvn_u8(uint8x8_t a) {
1150   // CHECK: test_vmvn_u8
1151   return vmvn_u8(a);
1152   // CHECK: not v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1153 }
1154 
1155 uint8x16_t test_vmvnq_u8(uint8x16_t a) {
1156   // CHECK: test_vmvnq_u8
1157   return vmvnq_u8(a);
1158   // CHECK: not v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1159 }
1160 
1161 uint16x4_t test_vmvn_u16(uint16x4_t a) {
1162   // CHECK: test_vmvn_u16
1163   return vmvn_u16(a);
1164   // CHECK: not v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1165 }
1166 
1167 uint16x8_t test_vmvnq_u16(uint16x8_t a) {
1168   // CHECK: test_vmvnq_u16
1169   return vmvnq_u16(a);
1170   // CHECK: not v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1171 }
1172 
1173 uint32x2_t test_vmvn_u32(uint32x2_t a) {
1174   // CHECK: test_vmvn_u32
1175   return vmvn_u32(a);
1176   // CHECK: not v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1177 }
1178 
1179 uint32x4_t test_vmvnq_u32(uint32x4_t a) {
1180   // CHECK: test_vmvnq_u32
1181   return vmvnq_u32(a);
1182   // CHECK: not v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1183 }
1184 
1185 poly8x8_t test_vmvn_p8(poly8x8_t a) {
1186   // CHECK: test_vmvn_p8
1187   return vmvn_p8(a);
1188   // CHECK: not v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1189 }
1190 
1191 poly8x16_t test_vmvnq_p8(poly8x16_t a) {
1192   // CHECK: test_vmvnq_p8
1193   return vmvnq_p8(a);
1194   // CHECK: not v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1195 }
1196 
1197 int8x8_t test_vrbit_s8(int8x8_t a) {
1198   // CHECK: test_vrbit_s8
1199   return vrbit_s8(a);
1200   // CHECK: rbit v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1201 }
1202 
1203 int8x16_t test_vrbitq_s8(int8x16_t a) {
1204   // CHECK: test_vrbitq_s8
1205   return vrbitq_s8(a);
1206   // CHECK: rbit v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1207 }
1208 
1209 uint8x8_t test_vrbit_u8(uint8x8_t a) {
1210   // CHECK: test_vrbit_u8
1211   return vrbit_u8(a);
1212   // CHECK: rbit v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1213 }
1214 
1215 uint8x16_t test_vrbitq_u8(uint8x16_t a) {
1216   // CHECK: test_vrbitq_u8
1217   return vrbitq_u8(a);
1218   // CHECK: rbit v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1219 }
1220 
1221 poly8x8_t test_vrbit_p8(poly8x8_t a) {
1222   // CHECK: test_vrbit_p8
1223   return vrbit_p8(a);
1224   // CHECK: rbit v{{[0-9]+}}.8b, v{{[0-9]+}}.8b
1225 }
1226 
1227 poly8x16_t test_vrbitq_p8(poly8x16_t a) {
1228   // CHECK: test_vrbitq_p8
1229   return vrbitq_p8(a);
1230   // CHECK: rbit v{{[0-9]+}}.16b, v{{[0-9]+}}.16b
1231 }
1232 
1233 int8x8_t test_vmovn_s16(int16x8_t a) {
1234   // CHECK: test_vmovn_s16
1235   return vmovn_s16(a);
1236   // CHECK: xtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1237 }
1238 
1239 int16x4_t test_vmovn_s32(int32x4_t a) {
1240   // CHECK: test_vmovn_s32
1241   return vmovn_s32(a);
1242   // CHECK: xtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1243 }
1244 
1245 int32x2_t test_vmovn_s64(int64x2_t a) {
1246   // CHECK: test_vmovn_s64
1247   return vmovn_s64(a);
1248   // CHECK: xtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1249 }
1250 
1251 uint8x8_t test_vmovn_u16(uint16x8_t a) {
1252   // CHECK: test_vmovn_u16
1253   return vmovn_u16(a);
1254   // CHECK: xtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1255 }
1256 
1257 uint16x4_t test_vmovn_u32(uint32x4_t a) {
1258   // CHECK: test_vmovn_u32
1259   return vmovn_u32(a);
1260   // CHECK: xtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1261 }
1262 
1263 uint32x2_t test_vmovn_u64(uint64x2_t a) {
1264   // CHECK: test_vmovn_u64
1265   return vmovn_u64(a);
1266   // CHECK: xtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1267 }
1268 
1269 int8x16_t test_vmovn_high_s16(int8x8_t a, int16x8_t b) {
1270   // CHECK: test_vmovn_high_s16
1271   return vmovn_high_s16(a, b);
1272   // CHECK: xtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1273 }
1274 
1275 int16x8_t test_vmovn_high_s32(int16x4_t a, int32x4_t b) {
1276   // CHECK: test_vmovn_high_s32
1277   return vmovn_high_s32(a, b);
1278   // CHECK: xtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1279 }
1280 
1281 int32x4_t test_vmovn_high_s64(int32x2_t a, int64x2_t b) {
1282   // CHECK: test_vmovn_high_s64
1283   return vmovn_high_s64(a, b);
1284   // CHECK: xtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1285 }
1286 
1287 int8x16_t test_vmovn_high_u16(int8x8_t a, int16x8_t b) {
1288   // CHECK: test_vmovn_high_u16
1289   return vmovn_high_u16(a, b);
1290   // CHECK: xtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1291 }
1292 
1293 int16x8_t test_vmovn_high_u32(int16x4_t a, int32x4_t b) {
1294   // CHECK: test_vmovn_high_u32
1295   return vmovn_high_u32(a, b);
1296   // CHECK: xtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1297 }
1298 
1299 int32x4_t test_vmovn_high_u64(int32x2_t a, int64x2_t b) {
1300   // CHECK: test_vmovn_high_u64
1301   return vmovn_high_u64(a, b);
1302   // CHECK: xtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1303 }
1304 
1305 int8x8_t test_vqmovun_s16(int16x8_t a) {
1306   // CHECK: test_vqmovun_s16
1307   return vqmovun_s16(a);
1308   // CHECK: sqxtun v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1309 }
1310 
1311 int16x4_t test_vqmovun_s32(int32x4_t a) {
1312   // CHECK: test_vqmovun_s32
1313   return vqmovun_s32(a);
1314   // CHECK: sqxtun v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1315 }
1316 
1317 int32x2_t test_vqmovun_s64(int64x2_t a) {
1318   // CHECK: test_vqmovun_s64
1319   return vqmovun_s64(a);
1320   // CHECK: sqxtun v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1321 }
1322 
1323 int8x16_t test_vqmovun_high_s16(int8x8_t a, int16x8_t b) {
1324   // CHECK: test_vqmovun_high_s16
1325   return vqmovun_high_s16(a, b);
1326   // CHECK: sqxtun2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1327 }
1328 
1329 int16x8_t test_vqmovun_high_s32(int16x4_t a, int32x4_t b) {
1330   // CHECK: test_vqmovun_high_s32
1331   return vqmovun_high_s32(a, b);
1332   // CHECK: sqxtun2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1333 }
1334 
1335 int32x4_t test_vqmovun_high_s64(int32x2_t a, int64x2_t b) {
1336   // CHECK: test_vqmovun_high_s64
1337   return vqmovun_high_s64(a, b);
1338   // CHECK: sqxtun2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1339 }
1340 
1341 int8x8_t test_vqmovn_s16(int16x8_t a) {
1342   // CHECK: test_vqmovn_s16
1343   return vqmovn_s16(a);
1344   // CHECK: sqxtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1345 }
1346 
1347 int16x4_t test_vqmovn_s32(int32x4_t a) {
1348   // CHECK: test_vqmovn_s32
1349   return vqmovn_s32(a);
1350   // CHECK: sqxtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1351 }
1352 
1353 int32x2_t test_vqmovn_s64(int64x2_t a) {
1354   // CHECK: test_vqmovn_s64
1355   return vqmovn_s64(a);
1356   // CHECK: sqxtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1357 }
1358 
1359 int8x16_t test_vqmovn_high_s16(int8x8_t a, int16x8_t b) {
1360   // CHECK: test_vqmovn_high_s16
1361   return vqmovn_high_s16(a, b);
1362   // CHECK: sqxtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1363 }
1364 
1365 int16x8_t test_vqmovn_high_s32(int16x4_t a, int32x4_t b) {
1366   // CHECK: test_vqmovn_high_s32
1367   return vqmovn_high_s32(a, b);
1368   // CHECK: sqxtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1369 }
1370 
1371 int32x4_t test_vqmovn_high_s64(int32x2_t a, int64x2_t b) {
1372   // CHECK: test_vqmovn_high_s64
1373   return vqmovn_high_s64(a, b);
1374   // CHECK: sqxtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1375 }
1376 
1377 uint8x8_t test_vqmovn_u16(uint16x8_t a) {
1378   // CHECK: test_vqmovn_u16
1379   return vqmovn_u16(a);
1380   // CHECK: uqxtn v{{[0-9]+}}.8b, v{{[0-9]+}}.8h
1381 }
1382 
1383 uint16x4_t test_vqmovn_u32(uint32x4_t a) {
1384   // CHECK: test_vqmovn_u32
1385   return vqmovn_u32(a);
1386   // CHECK: uqxtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1387 }
1388 
1389 uint32x2_t test_vqmovn_u64(uint64x2_t a) {
1390   // CHECK: test_vqmovn_u64
1391   return vqmovn_u64(a);
1392   // CHECK: uqxtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1393 }
1394 
1395 uint8x16_t test_vqmovn_high_u16(uint8x8_t a, uint16x8_t b) {
1396   // CHECK: test_vqmovn_high_u16
1397   return vqmovn_high_u16(a, b);
1398   // CHECK: uqxtn2 v{{[0-9]+}}.16b, v{{[0-9]+}}.8h
1399 }
1400 
1401 uint16x8_t test_vqmovn_high_u32(uint16x4_t a, uint32x4_t b) {
1402   // CHECK: test_vqmovn_high_u32
1403   return vqmovn_high_u32(a, b);
1404   // CHECK: uqxtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1405 }
1406 
1407 uint32x4_t test_vqmovn_high_u64(uint32x2_t a, uint64x2_t b) {
1408   // CHECK: test_vqmovn_high_u64
1409   return vqmovn_high_u64(a, b);
1410   // CHECK: uqxtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1411 }
1412 
1413 int16x8_t test_vshll_n_s8(int8x8_t a) {
1414   // CHECK: test_vshll_n_s8
1415   return vshll_n_s8(a, 8);
1416   // CHECK: shll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #8
1417 }
1418 
1419 int32x4_t test_vshll_n_s16(int16x4_t a) {
1420   // CHECK: test_vshll_n_s16
1421   return vshll_n_s16(a, 16);
1422   // CHECK: shll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #16
1423 }
1424 
1425 int64x2_t test_vshll_n_s32(int32x2_t a) {
1426   // CHECK: test_vshll_n_s32
1427   return vshll_n_s32(a, 32);
1428   // CHECK: shll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #32
1429 }
1430 
1431 uint16x8_t test_vshll_n_u8(uint8x8_t a) {
1432   // CHECK: test_vshll_n_u8
1433   return vshll_n_u8(a, 8);
1434   // CHECK: shll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #8
1435 }
1436 
1437 uint32x4_t test_vshll_n_u16(uint16x4_t a) {
1438   // CHECK: test_vshll_n_u16
1439   return vshll_n_u16(a, 16);
1440   // CHECK: shll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #16
1441 }
1442 
1443 uint64x2_t test_vshll_n_u32(uint32x2_t a) {
1444   // CHECK: test_vshll_n_u32
1445   return vshll_n_u32(a, 32);
1446   // CHECK: shll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #32
1447 }
1448 
1449 int16x8_t test_vshll_high_n_s8(int8x16_t a) {
1450   // CHECK: test_vshll_high_n_s8
1451   return vshll_high_n_s8(a, 8);
1452   // CHECK: shll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #8
1453 }
1454 
1455 int32x4_t test_vshll_high_n_s16(int16x8_t a) {
1456   // CHECK: test_vshll_high_n_s16
1457   return vshll_high_n_s16(a, 16);
1458   // CHECK: shll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #16
1459 }
1460 
1461 int64x2_t test_vshll_high_n_s32(int32x4_t a) {
1462   // CHECK: test_vshll_high_n_s32
1463   return vshll_high_n_s32(a, 32);
1464   // CHECK: shll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #32
1465 }
1466 
1467 uint16x8_t test_vshll_high_n_u8(uint8x16_t a) {
1468   // CHECK: test_vshll_high_n_u8
1469   return vshll_high_n_u8(a, 8);
1470   // CHECK: shll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #8
1471 }
1472 
1473 uint32x4_t test_vshll_high_n_u16(uint16x8_t a) {
1474   // CHECK: test_vshll_high_n_u16
1475   return vshll_high_n_u16(a, 16);
1476   // CHECK: shll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #16
1477 }
1478 
1479 uint64x2_t test_vshll_high_n_u32(uint32x4_t a) {
1480   // CHECK: test_vshll_high_n_u32
1481   return vshll_high_n_u32(a, 32);
1482   // CHECK: shll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #32
1483 }
1484 
1485 float16x4_t test_vcvt_f16_f32(float32x4_t a) {
1486   //CHECK: test_vcvt_f16_f32
1487   return vcvt_f16_f32(a);
1488   // CHECK: fcvtn v{{[0-9]+}}.4h, v{{[0-9]+}}.4s
1489 }
1490 
1491 float16x8_t test_vcvt_high_f16_f32(float16x4_t a, float32x4_t b) {
1492   //CHECK: test_vcvt_high_f16_f32
1493   return vcvt_high_f16_f32(a, b);
1494   // CHECK: fcvtn2 v{{[0-9]+}}.8h, v{{[0-9]+}}.4s
1495 }
1496 
1497 float32x2_t test_vcvt_f32_f64(float64x2_t a) {
1498   //CHECK: test_vcvt_f32_f64
1499   return vcvt_f32_f64(a);
1500   // CHECK: fcvtn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1501 }
1502 
1503 float32x4_t test_vcvt_high_f32_f64(float32x2_t a, float64x2_t b) {
1504   //CHECK: test_vcvt_high_f32_f64
1505   return vcvt_high_f32_f64(a, b);
1506   // CHECK: fcvtn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1507 }
1508 
1509 float32x2_t test_vcvtx_f32_f64(float64x2_t a) {
1510   //CHECK: test_vcvtx_f32_f64
1511   return vcvtx_f32_f64(a);
1512   // CHECK: fcvtxn v{{[0-9]+}}.2s, v{{[0-9]+}}.2d
1513 }
1514 
1515 float32x4_t test_vcvtx_high_f32_f64(float32x2_t a, float64x2_t b) {
1516   //CHECK: test_vcvtx_high_f32_f64
1517   return vcvtx_high_f32_f64(a, b);
1518   // CHECK: fcvtxn2 v{{[0-9]+}}.4s, v{{[0-9]+}}.2d
1519 }
1520 
1521 float32x4_t test_vcvt_f32_f16(float16x4_t a) {
1522   //CHECK: test_vcvt_f32_f16
1523   return vcvt_f32_f16(a);
1524   // CHECK: fcvtl v{{[0-9]+}}.4s, v{{[0-9]+}}.4h
1525 }
1526 
1527 float32x4_t test_vcvt_high_f32_f16(float16x8_t a) {
1528   //CHECK: test_vcvt_high_f32_f16
1529   return vcvt_high_f32_f16(a);
1530   // CHECK: fcvtl2 v{{[0-9]+}}.4s, v{{[0-9]+}}.8h
1531 }
1532 
1533 float64x2_t test_vcvt_f64_f32(float32x2_t a) {
1534   //CHECK: test_vcvt_f64_f32
1535   return vcvt_f64_f32(a);
1536   // CHECK: fcvtl v{{[0-9]+}}.2d, v{{[0-9]+}}.2s
1537 }
1538 
1539 float64x2_t test_vcvt_high_f64_f32(float32x4_t a) {
1540   //CHECK: test_vcvt_high_f64_f32
1541   return vcvt_high_f64_f32(a);
1542   // CHECK: fcvtl2 v{{[0-9]+}}.2d, v{{[0-9]+}}.4s
1543 }
1544 
1545 float32x2_t test_vrndn_f32(float32x2_t a) {
1546   //CHECK: test_vrndn_f32
1547   return vrndn_f32(a);
1548   // CHECK: frintn v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1549 }
1550 
1551 float32x4_t test_vrndnq_f32(float32x4_t a) {
1552   //CHECK: test_vrndnq_f32
1553   return vrndnq_f32(a);
1554   // CHECK: frintn v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1555 }
1556 
1557 float64x2_t test_vrndnq_f64(float64x2_t a) {
1558   //CHECK: test_vrndnq_f64
1559   return vrndnq_f64(a);
1560   // CHECK: frintn v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1561 }
1562 
1563 float32x2_t test_vrnda_f32(float32x2_t a) {
1564   //CHECK: test_vrnda_f32
1565   return vrnda_f32(a);
1566   // CHECK: frinta v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1567 }
1568 
1569 float32x4_t test_vrndaq_f32(float32x4_t a) {
1570   //CHECK: test_vrndaq_f32
1571   return vrndaq_f32(a);
1572   // CHECK: frinta v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1573 }
1574 
1575 float64x2_t test_vrndaq_f64(float64x2_t a) {
1576   //CHECK: test_vrndaq_f64
1577   return vrndaq_f64(a);
1578   // CHECK: frinta v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1579 }
1580 
1581 float32x2_t test_vrndp_f32(float32x2_t a) {
1582   //CHECK: test_vrndp_f32
1583   return vrndp_f32(a);
1584   // CHECK: frintp v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1585 }
1586 
1587 float32x4_t test_vrndpq_f32(float32x4_t a) {
1588   //CHECK: test_vrndpq_f32
1589   return vrndpq_f32(a);
1590   // CHECK: frintp v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1591 }
1592 
1593 float64x2_t test_vrndpq_f64(float64x2_t a) {
1594   //CHECK: test_vrndpq_f64
1595   return vrndpq_f64(a);
1596   // CHECK: frintp v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1597 }
1598 
1599 float32x2_t test_vrndm_f32(float32x2_t a) {
1600   //CHECK: test_vrndm_f32
1601   return vrndm_f32(a);
1602   // CHECK: frintm v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1603 }
1604 
1605 float32x4_t test_vrndmq_f32(float32x4_t a) {
1606   //CHECK: test_vrndmq_f32
1607   return vrndmq_f32(a);
1608   // CHECK: frintm v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1609 }
1610 
1611 float64x2_t test_vrndmq_f64(float64x2_t a) {
1612   //CHECK: test_vrndmq_f64
1613   return vrndmq_f64(a);
1614   // CHECK: frintm v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1615 }
1616 
1617 float32x2_t test_vrndx_f32(float32x2_t a) {
1618   //CHECK: test_vrndx_f32
1619   return vrndx_f32(a);
1620   // CHECK: frintx v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1621 }
1622 
1623 float32x4_t test_vrndxq_f32(float32x4_t a) {
1624   //CHECK: test_vrndxq_f32
1625   return vrndxq_f32(a);
1626   // CHECK: frintx v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1627 }
1628 
1629 float64x2_t test_vrndxq_f64(float64x2_t a) {
1630   //CHECK: test_vrndxq_f64
1631   return vrndxq_f64(a);
1632   // CHECK: frintx v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1633 }
1634 
1635 float32x2_t test_vrnd_f32(float32x2_t a) {
1636   //CHECK: test_vrnd_f32
1637   return vrnd_f32(a);
1638   // CHECK: frintz v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1639 }
1640 
1641 float32x4_t test_vrndq_f32(float32x4_t a) {
1642   //CHECK: test_vrndq_f32
1643   return vrndq_f32(a);
1644   // CHECK: frintz v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1645 }
1646 
1647 float64x2_t test_vrndq_f64(float64x2_t a) {
1648   //CHECK: test_vrndq_f64
1649   return vrndq_f64(a);
1650   // CHECK: frintz v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1651 }
1652 
1653 float32x2_t test_vrndi_f32(float32x2_t a) {
1654   //CHECK: test_vrndi_f32
1655   return vrndi_f32(a);
1656   // CHECK: frinti v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1657 }
1658 
1659 float32x4_t test_vrndiq_f32(float32x4_t a) {
1660   //CHECK: test_vrndiq_f32
1661   return vrndiq_f32(a);
1662   // CHECK: frinti v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1663 }
1664 
1665 float64x2_t test_vrndiq_f64(float64x2_t a) {
1666   //CHECK: test_vrndiq_f64
1667   return vrndiq_f64(a);
1668   // CHECK: frinti v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1669 }
1670 
1671 int32x2_t test_vcvt_s32_f32(float32x2_t a) {
1672   //CHECK: test_vcvt_s32_f32
1673   return vcvt_s32_f32(a);
1674   // CHECK: fcvtzs v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1675 }
1676 
1677 int32x4_t test_vcvtq_s32_f32(float32x4_t a) {
1678   //CHECK: test_vcvtq_s32_f32
1679   return vcvtq_s32_f32(a);
1680   // CHECK: fcvtzs v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1681 }
1682 
1683 int64x2_t test_vcvtq_s64_f64(float64x2_t a) {
1684   //CHECK: test_vcvtq_s64_f64
1685   return vcvtq_s64_f64(a);
1686   // CHECK: fcvtzs v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1687 }
1688 
1689 uint32x2_t test_vcvt_u32_f32(float32x2_t a) {
1690   //CHECK: test_vcvt_u32_f32
1691   return vcvt_u32_f32(a);
1692   // CHECK: fcvtzu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1693 }
1694 
1695 uint32x4_t test_vcvtq_u32_f32(float32x4_t a) {
1696   //CHECK: test_vcvtq_u32_f32
1697   return vcvtq_u32_f32(a);
1698   // CHECK: fcvtzu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1699 }
1700 
1701 uint64x2_t test_vcvtq_u64_f64(float64x2_t a) {
1702   //CHECK: test_vcvtq_u64_f64
1703   return vcvtq_u64_f64(a);
1704   // CHECK: fcvtzu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1705 }
1706 
1707 int32x2_t test_vcvtn_s32_f32(float32x2_t a) {
1708   //CHECK: test_vcvtn_s32_f32
1709   return vcvtn_s32_f32(a);
1710   // CHECK: fcvtns v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1711 }
1712 
1713 int32x4_t test_vcvtnq_s32_f32(float32x4_t a) {
1714   //CHECK: test_vcvtnq_s32_f32
1715   return vcvtnq_s32_f32(a);
1716   // CHECK: fcvtns v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1717 }
1718 
1719 int64x2_t test_vcvtnq_s64_f64(float64x2_t a) {
1720   //CHECK: test_vcvtnq_s64_f64
1721   return vcvtnq_s64_f64(a);
1722   // CHECK: fcvtns v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1723 }
1724 
1725 uint32x2_t test_vcvtn_u32_f32(float32x2_t a) {
1726   //CHECK: test_vcvtn_u32_f32
1727   return vcvtn_u32_f32(a);
1728   // CHECK: fcvtnu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1729 }
1730 
1731 uint32x4_t test_vcvtnq_u32_f32(float32x4_t a) {
1732   //CHECK: test_vcvtnq_u32_f32
1733   return vcvtnq_u32_f32(a);
1734   // CHECK: fcvtnu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1735 }
1736 
1737 uint64x2_t test_vcvtnq_u64_f64(float64x2_t a) {
1738   //CHECK: test_vcvtnq_u64_f64
1739   return vcvtnq_u64_f64(a);
1740   // CHECK: fcvtnu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1741 }
1742 
1743 int32x2_t test_vcvtp_s32_f32(float32x2_t a) {
1744   //CHECK: test_vcvtp_s32_f32
1745   return vcvtp_s32_f32(a);
1746   // CHECK: fcvtps v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1747 }
1748 
1749 int32x4_t test_vcvtpq_s32_f32(float32x4_t a) {
1750   //CHECK: test_vcvtpq_s32_f32
1751   return vcvtpq_s32_f32(a);
1752   // CHECK: fcvtps v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1753 }
1754 
1755 int64x2_t test_vcvtpq_s64_f64(float64x2_t a) {
1756   //CHECK: test_vcvtpq_s64_f64
1757   return vcvtpq_s64_f64(a);
1758   // CHECK: fcvtps v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1759 }
1760 
1761 uint32x2_t test_vcvtp_u32_f32(float32x2_t a) {
1762   //CHECK: test_vcvtp_u32_f32
1763   return vcvtp_u32_f32(a);
1764   // CHECK: fcvtpu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1765 }
1766 
1767 uint32x4_t test_vcvtpq_u32_f32(float32x4_t a) {
1768   //CHECK: test_vcvtpq_u32_f32
1769   return vcvtpq_u32_f32(a);
1770   // CHECK: fcvtpu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1771 }
1772 
1773 uint64x2_t test_vcvtpq_u64_f64(float64x2_t a) {
1774   //CHECK: test_vcvtpq_u64_f64
1775   return vcvtpq_u64_f64(a);
1776   // CHECK: fcvtpu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1777 }
1778 
1779 int32x2_t test_vcvtm_s32_f32(float32x2_t a) {
1780   //CHECK: test_vcvtm_s32_f32
1781   return vcvtm_s32_f32(a);
1782   // CHECK: fcvtms v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1783 }
1784 
1785 int32x4_t test_vcvtmq_s32_f32(float32x4_t a) {
1786   //CHECK: test_vcvtmq_s32_f32
1787   return vcvtmq_s32_f32(a);
1788   // CHECK: fcvtms v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1789 }
1790 
1791 int64x2_t test_vcvtmq_s64_f64(float64x2_t a) {
1792   //CHECK: test_vcvtmq_s64_f64
1793   return vcvtmq_s64_f64(a);
1794   // CHECK: fcvtms v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1795 }
1796 
1797 uint32x2_t test_vcvtm_u32_f32(float32x2_t a) {
1798   //CHECK: test_vcvtm_u32_f32
1799   return vcvtm_u32_f32(a);
1800   // CHECK: fcvtmu v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1801 }
1802 
1803 uint32x4_t test_vcvtmq_u32_f32(float32x4_t a) {
1804   //CHECK: test_vcvtmq_u32_f32
1805   return vcvtmq_u32_f32(a);
1806   // CHECK: fcvtmu v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1807 }
1808 
1809 uint64x2_t test_vcvtmq_u64_f64(float64x2_t a) {
1810   //CHECK: test_vcvtmq_u64_f64
1811   return vcvtmq_u64_f64(a);
1812   // CHECK: fcvtmu v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1813 }
1814 
1815 int32x2_t test_vcvta_s32_f32(float32x2_t a) {
1816   //CHECK: test_vcvta_s32_f32
1817   return vcvta_s32_f32(a);
1818   // CHECK: fcvtas v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1819 }
1820 
1821 int32x4_t test_vcvtaq_s32_f32(float32x4_t a) {
1822   //CHECK: test_vcvtaq_s32_f32
1823   return vcvtaq_s32_f32(a);
1824   // CHECK: fcvtas v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1825 }
1826 
1827 int64x2_t test_vcvtaq_s64_f64(float64x2_t a) {
1828   //CHECK: test_vcvtaq_s64_f64
1829   return vcvtaq_s64_f64(a);
1830   // CHECK: fcvtas v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1831 }
1832 
1833 uint32x2_t test_vcvta_u32_f32(float32x2_t a) {
1834   //CHECK: test_vcvta_u32_f32
1835   return vcvta_u32_f32(a);
1836   // CHECK: fcvtau v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1837 }
1838 
1839 uint32x4_t test_vcvtaq_u32_f32(float32x4_t a) {
1840   //CHECK: test_vcvtaq_u32_f32
1841   return vcvtaq_u32_f32(a);
1842   // CHECK: fcvtau v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1843 }
1844 
1845 uint64x2_t test_vcvtaq_u64_f64(float64x2_t a) {
1846   //CHECK: test_vcvtaq_u64_f64
1847   return vcvtaq_u64_f64(a);
1848   // CHECK: fcvtau v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1849 }
1850 
1851 float32x2_t test_vrsqrte_f32(float32x2_t a) {
1852   //CHECK: test_vrsqrte_f32
1853   return vrsqrte_f32(a);
1854   // CHECK: frsqrte v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1855 }
1856 
1857 float32x4_t test_vrsqrteq_f32(float32x4_t a) {
1858   //CHECK: test_vrsqrteq_f32
1859   return vrsqrteq_f32(a);
1860   // CHECK: frsqrte v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1861 }
1862 
1863 float64x2_t test_vrsqrteq_f64(float64x2_t a) {
1864   //CHECK: test_vrsqrteq_f64
1865   return vrsqrteq_f64(a);
1866   // CHECK: frsqrte v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1867 }
1868 
1869 float32x2_t test_vrecpe_f32(float32x2_t a) {
1870   //CHECK: test_vrecpe_f32
1871   return vrecpe_f32(a);
1872   // CHECK: frecpe v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1873 }
1874 
1875 float32x4_t test_vrecpeq_f32(float32x4_t a) {
1876   //CHECK: test_vrecpeq_f32
1877   return vrecpeq_f32(a);
1878   // CHECK: frecpe v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1879 }
1880 
1881 float64x2_t test_vrecpeq_f64(float64x2_t a) {
1882   //CHECK: test_vrecpeq_f64
1883   return vrecpeq_f64(a);
1884   // CHECK: frecpe v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1885 }
1886 
1887 uint32x2_t test_vrecpe_u32(uint32x2_t a) {
1888   //CHECK: test_vrecpe_u32
1889   return vrecpe_u32(a);
1890   // CHECK: urecpe v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1891 }
1892 
1893 uint32x4_t test_vrecpeq_u32(uint32x4_t a) {
1894   //CHECK: test_vrecpeq_u32
1895   return vrecpeq_u32(a);
1896   // CHECK: urecpe v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1897 }
1898 
1899 float32x2_t test_vsqrt_f32(float32x2_t a) {
1900   //CHECK: test_vsqrt_f32
1901   return vsqrt_f32(a);
1902   // CHECK: fsqrt v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1903 }
1904 
1905 float32x4_t test_vsqrtq_f32(float32x4_t a) {
1906   //CHECK: test_vsqrtq_f32
1907   return vsqrtq_f32(a);
1908   // CHECK: fsqrt v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1909 }
1910 
1911 float64x2_t test_vsqrtq_f64(float64x2_t a) {
1912   //CHECK: test_vsqrtq_f64
1913   return vsqrtq_f64(a);
1914   // CHECK: fsqrt v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1915 }
1916 
1917 float32x2_t test_vcvt_f32_s32(int32x2_t a) {
1918   //CHECK: test_vcvt_f32_s32
1919   return vcvt_f32_s32(a);
1920   //CHECK: scvtf v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1921 }
1922 
1923 float32x2_t test_vcvt_f32_u32(uint32x2_t a) {
1924   //CHECK: test_vcvt_f32_u32
1925   return vcvt_f32_u32(a);
1926   //CHECK: ucvtf v{{[0-9]+}}.2s, v{{[0-9]+}}.2s
1927 }
1928 
1929 float32x4_t test_vcvtq_f32_s32(int32x4_t a) {
1930   //CHECK: test_vcvtq_f32_s32
1931   return vcvtq_f32_s32(a);
1932   //CHECK: scvtf v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1933 }
1934 
1935 float32x4_t test_vcvtq_f32_u32(uint32x4_t a) {
1936   //CHECK: test_vcvtq_f32_u32
1937   return vcvtq_f32_u32(a);
1938   //CHECK: ucvtf v{{[0-9]+}}.4s, v{{[0-9]+}}.4s
1939 }
1940 
1941 float64x2_t test_vcvtq_f64_s64(int64x2_t a) {
1942   //CHECK: test_vcvtq_f64_s64
1943   return vcvtq_f64_s64(a);
1944   //CHECK: scvtf v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1945 }
1946 
1947 float64x2_t test_vcvtq_f64_u64(uint64x2_t a) {
1948   //CHECK: test_vcvtq_f64_u64
1949   return vcvtq_f64_u64(a);
1950   //CHECK: ucvtf v{{[0-9]+}}.2d, v{{[0-9]+}}.2d
1951 }
1952