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