1// RUN: %clang_cc1 -triple thumbv7s-apple-darwin -target-abi apcs-gnu\
2// RUN:  -target-cpu swift -ffreestanding -Os -S -o - %s\
3// RUN:  | FileCheck %s
4
5// REQUIRES: long_tests
6
7#include <arm_neon.h>
8
9// CHECK: test_vaba_s8
10// CHECK: vaba.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11int8x8_t test_vaba_s8(int8x8_t a, int8x8_t b, int8x8_t c) {
12  return vaba_s8(a, b, c);
13}
14
15// CHECK: test_vaba_s16
16// CHECK: vaba.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
17int16x4_t test_vaba_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
18  return vaba_s16(a, b, c);
19}
20
21// CHECK: test_vaba_s32
22// CHECK: vaba.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
23int32x2_t test_vaba_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
24  return vaba_s32(a, b, c);
25}
26
27// CHECK: test_vaba_u8
28// CHECK: vaba.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
29uint8x8_t test_vaba_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
30  return vaba_u8(a, b, c);
31}
32
33// CHECK: test_vaba_u16
34// CHECK: vaba.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
35uint16x4_t test_vaba_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
36  return vaba_u16(a, b, c);
37}
38
39// CHECK: test_vaba_u32
40// CHECK: vaba.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
41uint32x2_t test_vaba_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
42  return vaba_u32(a, b, c);
43}
44
45// CHECK: test_vabaq_s8
46// CHECK: vaba.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
47int8x16_t test_vabaq_s8(int8x16_t a, int8x16_t b, int8x16_t c) {
48  return vabaq_s8(a, b, c);
49}
50
51// CHECK: test_vabaq_s16
52// CHECK: vaba.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
53int16x8_t test_vabaq_s16(int16x8_t a, int16x8_t b, int16x8_t c) {
54  return vabaq_s16(a, b, c);
55}
56
57// CHECK: test_vabaq_s32
58// CHECK: vaba.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
59int32x4_t test_vabaq_s32(int32x4_t a, int32x4_t b, int32x4_t c) {
60  return vabaq_s32(a, b, c);
61}
62
63// CHECK: test_vabaq_u8
64// CHECK: vaba.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
65uint8x16_t test_vabaq_u8(uint8x16_t a, uint8x16_t b, uint8x16_t c) {
66  return vabaq_u8(a, b, c);
67}
68
69// CHECK: test_vabaq_u16
70// CHECK: vaba.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
71uint16x8_t test_vabaq_u16(uint16x8_t a, uint16x8_t b, uint16x8_t c) {
72  return vabaq_u16(a, b, c);
73}
74
75// CHECK: test_vabaq_u32
76// CHECK: vaba.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
77uint32x4_t test_vabaq_u32(uint32x4_t a, uint32x4_t b, uint32x4_t c) {
78  return vabaq_u32(a, b, c);
79}
80
81
82// CHECK: test_vabal_s8
83// CHECK: vabal.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
84int16x8_t test_vabal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
85  return vabal_s8(a, b, c);
86}
87
88// CHECK: test_vabal_s16
89// CHECK: vabal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
90int32x4_t test_vabal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
91  return vabal_s16(a, b, c);
92}
93
94// CHECK: test_vabal_s32
95// CHECK: vabal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
96int64x2_t test_vabal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
97  return vabal_s32(a, b, c);
98}
99
100// CHECK: test_vabal_u8
101// CHECK: vabal.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
102uint16x8_t test_vabal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
103  return vabal_u8(a, b, c);
104}
105
106// CHECK: test_vabal_u16
107// CHECK: vabal.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
108uint32x4_t test_vabal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
109  return vabal_u16(a, b, c);
110}
111
112// CHECK: test_vabal_u32
113// CHECK: vabal.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
114uint64x2_t test_vabal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
115  return vabal_u32(a, b, c);
116}
117
118
119// CHECK: test_vabd_s8
120// CHECK: vabd.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
121int8x8_t test_vabd_s8(int8x8_t a, int8x8_t b) {
122  return vabd_s8(a, b);
123}
124
125// CHECK: test_vabd_s16
126// CHECK: vabd.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
127int16x4_t test_vabd_s16(int16x4_t a, int16x4_t b) {
128  return vabd_s16(a, b);
129}
130
131// CHECK: test_vabd_s32
132// CHECK: vabd.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
133int32x2_t test_vabd_s32(int32x2_t a, int32x2_t b) {
134  return vabd_s32(a, b);
135}
136
137// CHECK: test_vabd_u8
138// CHECK: vabd.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
139uint8x8_t test_vabd_u8(uint8x8_t a, uint8x8_t b) {
140  return vabd_u8(a, b);
141}
142
143// CHECK: test_vabd_u16
144// CHECK: vabd.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
145uint16x4_t test_vabd_u16(uint16x4_t a, uint16x4_t b) {
146  return vabd_u16(a, b);
147}
148
149// CHECK: test_vabd_u32
150// CHECK: vabd.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
151uint32x2_t test_vabd_u32(uint32x2_t a, uint32x2_t b) {
152  return vabd_u32(a, b);
153}
154
155// CHECK: test_vabd_f32
156// CHECK: vabd.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
157float32x2_t test_vabd_f32(float32x2_t a, float32x2_t b) {
158  return vabd_f32(a, b);
159}
160
161// CHECK: test_vabdq_s8
162// CHECK: vabd.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
163int8x16_t test_vabdq_s8(int8x16_t a, int8x16_t b) {
164  return vabdq_s8(a, b);
165}
166
167// CHECK: test_vabdq_s16
168// CHECK: vabd.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
169int16x8_t test_vabdq_s16(int16x8_t a, int16x8_t b) {
170  return vabdq_s16(a, b);
171}
172
173// CHECK: test_vabdq_s32
174// CHECK: vabd.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
175int32x4_t test_vabdq_s32(int32x4_t a, int32x4_t b) {
176  return vabdq_s32(a, b);
177}
178
179// CHECK: test_vabdq_u8
180// CHECK: vabd.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
181uint8x16_t test_vabdq_u8(uint8x16_t a, uint8x16_t b) {
182  return vabdq_u8(a, b);
183}
184
185// CHECK: test_vabdq_u16
186// CHECK: vabd.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
187uint16x8_t test_vabdq_u16(uint16x8_t a, uint16x8_t b) {
188  return vabdq_u16(a, b);
189}
190
191// CHECK: test_vabdq_u32
192// CHECK: vabd.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
193uint32x4_t test_vabdq_u32(uint32x4_t a, uint32x4_t b) {
194  return vabdq_u32(a, b);
195}
196
197// CHECK: test_vabdq_f32
198// CHECK: vabd.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
199float32x4_t test_vabdq_f32(float32x4_t a, float32x4_t b) {
200  return vabdq_f32(a, b);
201}
202
203
204// CHECK: test_vabdl_s8
205// CHECK: vabdl.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
206int16x8_t test_vabdl_s8(int8x8_t a, int8x8_t b) {
207  return vabdl_s8(a, b);
208}
209
210// CHECK: test_vabdl_s16
211// CHECK: vabdl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
212int32x4_t test_vabdl_s16(int16x4_t a, int16x4_t b) {
213  return vabdl_s16(a, b);
214}
215
216// CHECK: test_vabdl_s32
217// CHECK: vabdl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
218int64x2_t test_vabdl_s32(int32x2_t a, int32x2_t b) {
219  return vabdl_s32(a, b);
220}
221
222// CHECK: test_vabdl_u8
223// CHECK: vabdl.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
224uint16x8_t test_vabdl_u8(uint8x8_t a, uint8x8_t b) {
225  return vabdl_u8(a, b);
226}
227
228// CHECK: test_vabdl_u16
229// CHECK: vabdl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
230uint32x4_t test_vabdl_u16(uint16x4_t a, uint16x4_t b) {
231  return vabdl_u16(a, b);
232}
233
234// CHECK: test_vabdl_u32
235// CHECK: vabdl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
236uint64x2_t test_vabdl_u32(uint32x2_t a, uint32x2_t b) {
237  return vabdl_u32(a, b);
238}
239
240
241// CHECK: test_vabs_s8
242// CHECK: vabs.s8 d{{[0-9]+}}, d{{[0-9]+}}
243int8x8_t test_vabs_s8(int8x8_t a) {
244  return vabs_s8(a);
245}
246
247// CHECK: test_vabs_s16
248// CHECK: vabs.s16 d{{[0-9]+}}, d{{[0-9]+}}
249int16x4_t test_vabs_s16(int16x4_t a) {
250  return vabs_s16(a);
251}
252
253// CHECK: test_vabs_s32
254// CHECK: vabs.s32 d{{[0-9]+}}, d{{[0-9]+}}
255int32x2_t test_vabs_s32(int32x2_t a) {
256  return vabs_s32(a);
257}
258
259// CHECK: test_vabs_f32
260// CHECK: vabs.f32 d{{[0-9]+}}, d{{[0-9]+}}
261float32x2_t test_vabs_f32(float32x2_t a) {
262  return vabs_f32(a);
263}
264
265// CHECK: test_vabsq_s8
266// CHECK: vabs.s8 q{{[0-9]+}}, q{{[0-9]+}}
267int8x16_t test_vabsq_s8(int8x16_t a) {
268  return vabsq_s8(a);
269}
270
271// CHECK: test_vabsq_s16
272// CHECK: vabs.s16 q{{[0-9]+}}, q{{[0-9]+}}
273int16x8_t test_vabsq_s16(int16x8_t a) {
274  return vabsq_s16(a);
275}
276
277// CHECK: test_vabsq_s32
278// CHECK: vabs.s32 q{{[0-9]+}}, q{{[0-9]+}}
279int32x4_t test_vabsq_s32(int32x4_t a) {
280  return vabsq_s32(a);
281}
282
283// CHECK: test_vabsq_f32
284// CHECK: vabs.f32 q{{[0-9]+}}, q{{[0-9]+}}
285float32x4_t test_vabsq_f32(float32x4_t a) {
286  return vabsq_f32(a);
287}
288
289
290// CHECK: test_vadd_s8
291// CHECK: vadd.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
292int8x8_t test_vadd_s8(int8x8_t a, int8x8_t b) {
293  return vadd_s8(a, b);
294}
295
296// CHECK: test_vadd_s16
297// CHECK: vadd.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
298int16x4_t test_vadd_s16(int16x4_t a, int16x4_t b) {
299  return vadd_s16(a, b);
300}
301
302// CHECK: test_vadd_s32
303// CHECK: vadd.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
304int32x2_t test_vadd_s32(int32x2_t a, int32x2_t b) {
305  return vadd_s32(a, b);
306}
307
308// CHECK: test_vadd_s64
309// CHECK: vadd.i64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
310int64x1_t test_vadd_s64(int64x1_t a, int64x1_t b) {
311  return vadd_s64(a, b);
312}
313
314// CHECK: test_vadd_f32
315// CHECK: vadd.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
316float32x2_t test_vadd_f32(float32x2_t a, float32x2_t b) {
317  return vadd_f32(a, b);
318}
319
320// CHECK: test_vadd_u8
321// CHECK: vadd.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
322uint8x8_t test_vadd_u8(uint8x8_t a, uint8x8_t b) {
323  return vadd_u8(a, b);
324}
325
326// CHECK: test_vadd_u16
327// CHECK: vadd.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
328uint16x4_t test_vadd_u16(uint16x4_t a, uint16x4_t b) {
329  return vadd_u16(a, b);
330}
331
332// CHECK: test_vadd_u32
333// CHECK: vadd.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
334uint32x2_t test_vadd_u32(uint32x2_t a, uint32x2_t b) {
335  return vadd_u32(a, b);
336}
337
338// CHECK: test_vadd_u64
339// CHECK: vadd.i64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
340uint64x1_t test_vadd_u64(uint64x1_t a, uint64x1_t b) {
341  return vadd_u64(a, b);
342}
343
344// CHECK: test_vaddq_s8
345// CHECK: vadd.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
346int8x16_t test_vaddq_s8(int8x16_t a, int8x16_t b) {
347  return vaddq_s8(a, b);
348}
349
350// CHECK: test_vaddq_s16
351// CHECK: vadd.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
352int16x8_t test_vaddq_s16(int16x8_t a, int16x8_t b) {
353  return vaddq_s16(a, b);
354}
355
356// CHECK: test_vaddq_s32
357// CHECK: vadd.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
358int32x4_t test_vaddq_s32(int32x4_t a, int32x4_t b) {
359  return vaddq_s32(a, b);
360}
361
362// CHECK: test_vaddq_s64
363// CHECK: vadd.i64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
364int64x2_t test_vaddq_s64(int64x2_t a, int64x2_t b) {
365  return vaddq_s64(a, b);
366}
367
368// CHECK: test_vaddq_f32
369// CHECK: vadd.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
370float32x4_t test_vaddq_f32(float32x4_t a, float32x4_t b) {
371  return vaddq_f32(a, b);
372}
373
374// CHECK: test_vaddq_u8
375// CHECK: vadd.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
376uint8x16_t test_vaddq_u8(uint8x16_t a, uint8x16_t b) {
377  return vaddq_u8(a, b);
378}
379
380// CHECK: test_vaddq_u16
381// CHECK: vadd.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
382uint16x8_t test_vaddq_u16(uint16x8_t a, uint16x8_t b) {
383  return vaddq_u16(a, b);
384}
385
386// CHECK: test_vaddq_u32
387// CHECK: vadd.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
388uint32x4_t test_vaddq_u32(uint32x4_t a, uint32x4_t b) {
389  return vaddq_u32(a, b);
390}
391
392// CHECK: test_vaddq_u64
393// CHECK: vadd.i64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
394uint64x2_t test_vaddq_u64(uint64x2_t a, uint64x2_t b) {
395  return vaddq_u64(a, b);
396}
397
398
399// CHECK: test_vaddhn_s16
400// CHECK: vaddhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
401int8x8_t test_vaddhn_s16(int16x8_t a, int16x8_t b) {
402  return vaddhn_s16(a, b);
403}
404
405// CHECK: test_vaddhn_s32
406// CHECK: vaddhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
407int16x4_t test_vaddhn_s32(int32x4_t a, int32x4_t b) {
408  return vaddhn_s32(a, b);
409}
410
411// CHECK: test_vaddhn_s64
412// CHECK: vaddhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
413int32x2_t test_vaddhn_s64(int64x2_t a, int64x2_t b) {
414  return vaddhn_s64(a, b);
415}
416
417// CHECK: test_vaddhn_u16
418// CHECK: vaddhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
419uint8x8_t test_vaddhn_u16(uint16x8_t a, uint16x8_t b) {
420  return vaddhn_u16(a, b);
421}
422
423// CHECK: test_vaddhn_u32
424// CHECK: vaddhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
425uint16x4_t test_vaddhn_u32(uint32x4_t a, uint32x4_t b) {
426  return vaddhn_u32(a, b);
427}
428
429// CHECK: test_vaddhn_u64
430// CHECK: vaddhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
431uint32x2_t test_vaddhn_u64(uint64x2_t a, uint64x2_t b) {
432  return vaddhn_u64(a, b);
433}
434
435
436// CHECK: test_vaddl_s8
437// CHECK: vaddl.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
438int16x8_t test_vaddl_s8(int8x8_t a, int8x8_t b) {
439  return vaddl_s8(a, b);
440}
441
442// CHECK: test_vaddl_s16
443// CHECK: vaddl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
444int32x4_t test_vaddl_s16(int16x4_t a, int16x4_t b) {
445  return vaddl_s16(a, b);
446}
447
448// CHECK: test_vaddl_s32
449// CHECK: vaddl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
450int64x2_t test_vaddl_s32(int32x2_t a, int32x2_t b) {
451  return vaddl_s32(a, b);
452}
453
454// CHECK: test_vaddl_u8
455// CHECK: vaddl.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
456uint16x8_t test_vaddl_u8(uint8x8_t a, uint8x8_t b) {
457  return vaddl_u8(a, b);
458}
459
460// CHECK: test_vaddl_u16
461// CHECK: vaddl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
462uint32x4_t test_vaddl_u16(uint16x4_t a, uint16x4_t b) {
463  return vaddl_u16(a, b);
464}
465
466// CHECK: test_vaddl_u32
467// CHECK: vaddl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
468uint64x2_t test_vaddl_u32(uint32x2_t a, uint32x2_t b) {
469  return vaddl_u32(a, b);
470}
471
472
473// CHECK: test_vaddw_s8
474// CHECK: vaddw.s8 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
475int16x8_t test_vaddw_s8(int16x8_t a, int8x8_t b) {
476  return vaddw_s8(a, b);
477}
478
479// CHECK: test_vaddw_s16
480// CHECK: vaddw.s16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
481int32x4_t test_vaddw_s16(int32x4_t a, int16x4_t b) {
482  return vaddw_s16(a, b);
483}
484
485// CHECK: test_vaddw_s32
486// CHECK: vaddw.s32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
487int64x2_t test_vaddw_s32(int64x2_t a, int32x2_t b) {
488  return vaddw_s32(a, b);
489}
490
491// CHECK: test_vaddw_u8
492// CHECK: vaddw.u8 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
493uint16x8_t test_vaddw_u8(uint16x8_t a, uint8x8_t b) {
494  return vaddw_u8(a, b);
495}
496
497// CHECK: test_vaddw_u16
498// CHECK: vaddw.u16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
499uint32x4_t test_vaddw_u16(uint32x4_t a, uint16x4_t b) {
500  return vaddw_u16(a, b);
501}
502
503// CHECK: test_vaddw_u32
504// CHECK: vaddw.u32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
505uint64x2_t test_vaddw_u32(uint64x2_t a, uint32x2_t b) {
506  return vaddw_u32(a, b);
507}
508
509
510// CHECK: test_vand_s8
511// CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
512int8x8_t test_vand_s8(int8x8_t a, int8x8_t b) {
513  return vand_s8(a, b);
514}
515
516// CHECK: test_vand_s16
517// CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
518int16x4_t test_vand_s16(int16x4_t a, int16x4_t b) {
519  return vand_s16(a, b);
520}
521
522// CHECK: test_vand_s32
523// CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
524int32x2_t test_vand_s32(int32x2_t a, int32x2_t b) {
525  return vand_s32(a, b);
526}
527
528// CHECK: test_vand_s64
529// CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
530int64x1_t test_vand_s64(int64x1_t a, int64x1_t b) {
531  return vand_s64(a, b);
532}
533
534// CHECK: test_vand_u8
535// CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
536uint8x8_t test_vand_u8(uint8x8_t a, uint8x8_t b) {
537  return vand_u8(a, b);
538}
539
540// CHECK: test_vand_u16
541// CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
542uint16x4_t test_vand_u16(uint16x4_t a, uint16x4_t b) {
543  return vand_u16(a, b);
544}
545
546// CHECK: test_vand_u32
547// CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
548uint32x2_t test_vand_u32(uint32x2_t a, uint32x2_t b) {
549  return vand_u32(a, b);
550}
551
552// CHECK: test_vand_u64
553// CHECK: vand d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
554uint64x1_t test_vand_u64(uint64x1_t a, uint64x1_t b) {
555  return vand_u64(a, b);
556}
557
558// CHECK: test_vandq_s8
559// CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
560int8x16_t test_vandq_s8(int8x16_t a, int8x16_t b) {
561  return vandq_s8(a, b);
562}
563
564// CHECK: test_vandq_s16
565// CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
566int16x8_t test_vandq_s16(int16x8_t a, int16x8_t b) {
567  return vandq_s16(a, b);
568}
569
570// CHECK: test_vandq_s32
571// CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
572int32x4_t test_vandq_s32(int32x4_t a, int32x4_t b) {
573  return vandq_s32(a, b);
574}
575
576// CHECK: test_vandq_s64
577// CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
578int64x2_t test_vandq_s64(int64x2_t a, int64x2_t b) {
579  return vandq_s64(a, b);
580}
581
582// CHECK: test_vandq_u8
583// CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
584uint8x16_t test_vandq_u8(uint8x16_t a, uint8x16_t b) {
585  return vandq_u8(a, b);
586}
587
588// CHECK: test_vandq_u16
589// CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
590uint16x8_t test_vandq_u16(uint16x8_t a, uint16x8_t b) {
591  return vandq_u16(a, b);
592}
593
594// CHECK: test_vandq_u32
595// CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
596uint32x4_t test_vandq_u32(uint32x4_t a, uint32x4_t b) {
597  return vandq_u32(a, b);
598}
599
600// CHECK: test_vandq_u64
601// CHECK: vand q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
602uint64x2_t test_vandq_u64(uint64x2_t a, uint64x2_t b) {
603  return vandq_u64(a, b);
604}
605
606
607// CHECK: test_vbic_s8
608// CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
609int8x8_t test_vbic_s8(int8x8_t a, int8x8_t b) {
610  return vbic_s8(a, b);
611}
612
613// CHECK: test_vbic_s16
614// CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
615int16x4_t test_vbic_s16(int16x4_t a, int16x4_t b) {
616  return vbic_s16(a, b);
617}
618
619// CHECK: test_vbic_s32
620// CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
621int32x2_t test_vbic_s32(int32x2_t a, int32x2_t b) {
622  return vbic_s32(a, b);
623}
624
625// CHECK: test_vbic_s64
626// CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
627int64x1_t test_vbic_s64(int64x1_t a, int64x1_t b) {
628  return vbic_s64(a, b);
629}
630
631// CHECK: test_vbic_u8
632// CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
633uint8x8_t test_vbic_u8(uint8x8_t a, uint8x8_t b) {
634  return vbic_u8(a, b);
635}
636
637// CHECK: test_vbic_u16
638// CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
639uint16x4_t test_vbic_u16(uint16x4_t a, uint16x4_t b) {
640  return vbic_u16(a, b);
641}
642
643// CHECK: test_vbic_u32
644// CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
645uint32x2_t test_vbic_u32(uint32x2_t a, uint32x2_t b) {
646  return vbic_u32(a, b);
647}
648
649// CHECK: test_vbic_u64
650// CHECK: vbic d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
651uint64x1_t test_vbic_u64(uint64x1_t a, uint64x1_t b) {
652  return vbic_u64(a, b);
653}
654
655// CHECK: test_vbicq_s8
656// CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
657int8x16_t test_vbicq_s8(int8x16_t a, int8x16_t b) {
658  return vbicq_s8(a, b);
659}
660
661// CHECK: test_vbicq_s16
662// CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
663int16x8_t test_vbicq_s16(int16x8_t a, int16x8_t b) {
664  return vbicq_s16(a, b);
665}
666
667// CHECK: test_vbicq_s32
668// CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
669int32x4_t test_vbicq_s32(int32x4_t a, int32x4_t b) {
670  return vbicq_s32(a, b);
671}
672
673// CHECK: test_vbicq_s64
674// CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
675int64x2_t test_vbicq_s64(int64x2_t a, int64x2_t b) {
676  return vbicq_s64(a, b);
677}
678
679// CHECK: test_vbicq_u8
680// CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
681uint8x16_t test_vbicq_u8(uint8x16_t a, uint8x16_t b) {
682  return vbicq_u8(a, b);
683}
684
685// CHECK: test_vbicq_u16
686// CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
687uint16x8_t test_vbicq_u16(uint16x8_t a, uint16x8_t b) {
688  return vbicq_u16(a, b);
689}
690
691// CHECK: test_vbicq_u32
692// CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
693uint32x4_t test_vbicq_u32(uint32x4_t a, uint32x4_t b) {
694  return vbicq_u32(a, b);
695}
696
697// CHECK: test_vbicq_u64
698// CHECK: vbic q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
699uint64x2_t test_vbicq_u64(uint64x2_t a, uint64x2_t b) {
700  return vbicq_u64(a, b);
701}
702
703
704// CHECK: test_vbsl_s8
705// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
706int8x8_t test_vbsl_s8(uint8x8_t a, int8x8_t b, int8x8_t c) {
707  return vbsl_s8(a, b, c);
708}
709
710// CHECK: test_vbsl_s16
711// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
712int16x4_t test_vbsl_s16(uint16x4_t a, int16x4_t b, int16x4_t c) {
713  return vbsl_s16(a, b, c);
714}
715
716// CHECK: test_vbsl_s32
717// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
718int32x2_t test_vbsl_s32(uint32x2_t a, int32x2_t b, int32x2_t c) {
719  return vbsl_s32(a, b, c);
720}
721
722// CHECK: test_vbsl_s64
723// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
724int64x1_t test_vbsl_s64(uint64x1_t a, int64x1_t b, int64x1_t c) {
725  return vbsl_s64(a, b, c);
726}
727
728// CHECK: test_vbsl_u8
729// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
730uint8x8_t test_vbsl_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
731  return vbsl_u8(a, b, c);
732}
733
734// CHECK: test_vbsl_u16
735// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
736uint16x4_t test_vbsl_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
737  return vbsl_u16(a, b, c);
738}
739
740// CHECK: test_vbsl_u32
741// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
742uint32x2_t test_vbsl_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
743  return vbsl_u32(a, b, c);
744}
745
746// CHECK: test_vbsl_u64
747// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
748uint64x1_t test_vbsl_u64(uint64x1_t a, uint64x1_t b, uint64x1_t c) {
749  return vbsl_u64(a, b, c);
750}
751
752// CHECK: test_vbsl_f32
753// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
754float32x2_t test_vbsl_f32(uint32x2_t a, float32x2_t b, float32x2_t c) {
755  return vbsl_f32(a, b, c);
756}
757
758// CHECK: test_vbsl_p8
759// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
760poly8x8_t test_vbsl_p8(uint8x8_t a, poly8x8_t b, poly8x8_t c) {
761  return vbsl_p8(a, b, c);
762}
763
764// CHECK: test_vbsl_p16
765// CHECK: vbsl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
766poly16x4_t test_vbsl_p16(uint16x4_t a, poly16x4_t b, poly16x4_t c) {
767  return vbsl_p16(a, b, c);
768}
769
770// CHECK: test_vbslq_s8
771// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
772int8x16_t test_vbslq_s8(uint8x16_t a, int8x16_t b, int8x16_t c) {
773  return vbslq_s8(a, b, c);
774}
775
776// CHECK: test_vbslq_s16
777// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
778int16x8_t test_vbslq_s16(uint16x8_t a, int16x8_t b, int16x8_t c) {
779  return vbslq_s16(a, b, c);
780}
781
782// CHECK: test_vbslq_s32
783// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
784int32x4_t test_vbslq_s32(uint32x4_t a, int32x4_t b, int32x4_t c) {
785  return vbslq_s32(a, b, c);
786}
787
788// CHECK: test_vbslq_s64
789// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
790int64x2_t test_vbslq_s64(uint64x2_t a, int64x2_t b, int64x2_t c) {
791  return vbslq_s64(a, b, c);
792}
793
794// CHECK: test_vbslq_u8
795// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
796uint8x16_t test_vbslq_u8(uint8x16_t a, uint8x16_t b, uint8x16_t c) {
797  return vbslq_u8(a, b, c);
798}
799
800// CHECK: test_vbslq_u16
801// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
802uint16x8_t test_vbslq_u16(uint16x8_t a, uint16x8_t b, uint16x8_t c) {
803  return vbslq_u16(a, b, c);
804}
805
806// CHECK: test_vbslq_u32
807// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
808uint32x4_t test_vbslq_u32(uint32x4_t a, uint32x4_t b, uint32x4_t c) {
809  return vbslq_u32(a, b, c);
810}
811
812// CHECK: test_vbslq_u64
813// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
814uint64x2_t test_vbslq_u64(uint64x2_t a, uint64x2_t b, uint64x2_t c) {
815  return vbslq_u64(a, b, c);
816}
817
818// CHECK: test_vbslq_f32
819// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
820float32x4_t test_vbslq_f32(uint32x4_t a, float32x4_t b, float32x4_t c) {
821  return vbslq_f32(a, b, c);
822}
823
824// CHECK: test_vbslq_p8
825// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
826poly8x16_t test_vbslq_p8(uint8x16_t a, poly8x16_t b, poly8x16_t c) {
827  return vbslq_p8(a, b, c);
828}
829
830// CHECK: test_vbslq_p16
831// CHECK: vbsl q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
832poly16x8_t test_vbslq_p16(uint16x8_t a, poly16x8_t b, poly16x8_t c) {
833  return vbslq_p16(a, b, c);
834}
835
836
837// CHECK: test_vcage_f32
838// CHECK: vacge.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
839uint32x2_t test_vcage_f32(float32x2_t a, float32x2_t b) {
840  return vcage_f32(a, b);
841}
842
843// CHECK: test_vcageq_f32
844// CHECK: vacge.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
845uint32x4_t test_vcageq_f32(float32x4_t a, float32x4_t b) {
846  return vcageq_f32(a, b);
847}
848
849
850// CHECK: test_vcagt_f32
851// CHECK: vacgt.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
852uint32x2_t test_vcagt_f32(float32x2_t a, float32x2_t b) {
853  return vcagt_f32(a, b);
854}
855
856// CHECK: test_vcagtq_f32
857// CHECK: vacgt.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
858uint32x4_t test_vcagtq_f32(float32x4_t a, float32x4_t b) {
859  return vcagtq_f32(a, b);
860}
861
862
863// CHECK: test_vcale_f32
864// CHECK: vacge.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
865uint32x2_t test_vcale_f32(float32x2_t a, float32x2_t b) {
866  return vcale_f32(a, b);
867}
868
869// CHECK: test_vcaleq_f32
870// CHECK: vacge.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
871uint32x4_t test_vcaleq_f32(float32x4_t a, float32x4_t b) {
872  return vcaleq_f32(a, b);
873}
874
875
876// CHECK: test_vcalt_f32
877// CHECK: vacgt.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
878uint32x2_t test_vcalt_f32(float32x2_t a, float32x2_t b) {
879  return vcalt_f32(a, b);
880}
881
882// CHECK: test_vcaltq_f32
883// CHECK: vacgt.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
884uint32x4_t test_vcaltq_f32(float32x4_t a, float32x4_t b) {
885  return vcaltq_f32(a, b);
886}
887
888
889// CHECK: test_vceq_s8
890// CHECK: vceq.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
891uint8x8_t test_vceq_s8(int8x8_t a, int8x8_t b) {
892  return vceq_s8(a, b);
893}
894
895// CHECK: test_vceq_s16
896// CHECK: vceq.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
897uint16x4_t test_vceq_s16(int16x4_t a, int16x4_t b) {
898  return vceq_s16(a, b);
899}
900
901// CHECK: test_vceq_s32
902// CHECK: vceq.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
903uint32x2_t test_vceq_s32(int32x2_t a, int32x2_t b) {
904  return vceq_s32(a, b);
905}
906
907// CHECK: test_vceq_f32
908// CHECK: vceq.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
909uint32x2_t test_vceq_f32(float32x2_t a, float32x2_t b) {
910  return vceq_f32(a, b);
911}
912
913// CHECK: test_vceq_u8
914// CHECK: vceq.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
915uint8x8_t test_vceq_u8(uint8x8_t a, uint8x8_t b) {
916  return vceq_u8(a, b);
917}
918
919// CHECK: test_vceq_u16
920// CHECK: vceq.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
921uint16x4_t test_vceq_u16(uint16x4_t a, uint16x4_t b) {
922  return vceq_u16(a, b);
923}
924
925// CHECK: test_vceq_u32
926// CHECK: vceq.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
927uint32x2_t test_vceq_u32(uint32x2_t a, uint32x2_t b) {
928  return vceq_u32(a, b);
929}
930
931// CHECK: test_vceq_p8
932// CHECK: vceq.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
933uint8x8_t test_vceq_p8(poly8x8_t a, poly8x8_t b) {
934  return vceq_p8(a, b);
935}
936
937// CHECK: test_vceqq_s8
938// CHECK: vceq.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
939uint8x16_t test_vceqq_s8(int8x16_t a, int8x16_t b) {
940  return vceqq_s8(a, b);
941}
942
943// CHECK: test_vceqq_s16
944// CHECK: vceq.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
945uint16x8_t test_vceqq_s16(int16x8_t a, int16x8_t b) {
946  return vceqq_s16(a, b);
947}
948
949// CHECK: test_vceqq_s32
950// CHECK: vceq.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
951uint32x4_t test_vceqq_s32(int32x4_t a, int32x4_t b) {
952  return vceqq_s32(a, b);
953}
954
955// CHECK: test_vceqq_f32
956// CHECK: vceq.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
957uint32x4_t test_vceqq_f32(float32x4_t a, float32x4_t b) {
958  return vceqq_f32(a, b);
959}
960
961// CHECK: test_vceqq_u8
962// CHECK: vceq.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
963uint8x16_t test_vceqq_u8(uint8x16_t a, uint8x16_t b) {
964  return vceqq_u8(a, b);
965}
966
967// CHECK: test_vceqq_u16
968// CHECK: vceq.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
969uint16x8_t test_vceqq_u16(uint16x8_t a, uint16x8_t b) {
970  return vceqq_u16(a, b);
971}
972
973// CHECK: test_vceqq_u32
974// CHECK: vceq.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
975uint32x4_t test_vceqq_u32(uint32x4_t a, uint32x4_t b) {
976  return vceqq_u32(a, b);
977}
978
979// CHECK: test_vceqq_p8
980// CHECK: vceq.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
981uint8x16_t test_vceqq_p8(poly8x16_t a, poly8x16_t b) {
982  return vceqq_p8(a, b);
983}
984
985
986// CHECK: test_vcge_s8
987// CHECK: vcge.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
988uint8x8_t test_vcge_s8(int8x8_t a, int8x8_t b) {
989  return vcge_s8(a, b);
990}
991
992// CHECK: test_vcge_s16
993// CHECK: vcge.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
994uint16x4_t test_vcge_s16(int16x4_t a, int16x4_t b) {
995  return vcge_s16(a, b);
996}
997
998// CHECK: test_vcge_s32
999// CHECK: vcge.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1000uint32x2_t test_vcge_s32(int32x2_t a, int32x2_t b) {
1001  return vcge_s32(a, b);
1002}
1003
1004// CHECK: test_vcge_f32
1005// CHECK: vcge.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1006uint32x2_t test_vcge_f32(float32x2_t a, float32x2_t b) {
1007  return vcge_f32(a, b);
1008}
1009
1010// CHECK: test_vcge_u8
1011// CHECK: vcge.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1012uint8x8_t test_vcge_u8(uint8x8_t a, uint8x8_t b) {
1013  return vcge_u8(a, b);
1014}
1015
1016// CHECK: test_vcge_u16
1017// CHECK: vcge.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1018uint16x4_t test_vcge_u16(uint16x4_t a, uint16x4_t b) {
1019  return vcge_u16(a, b);
1020}
1021
1022// CHECK: test_vcge_u32
1023// CHECK: vcge.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1024uint32x2_t test_vcge_u32(uint32x2_t a, uint32x2_t b) {
1025  return vcge_u32(a, b);
1026}
1027
1028// CHECK: test_vcgeq_s8
1029// CHECK: vcge.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1030uint8x16_t test_vcgeq_s8(int8x16_t a, int8x16_t b) {
1031  return vcgeq_s8(a, b);
1032}
1033
1034// CHECK: test_vcgeq_s16
1035// CHECK: vcge.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1036uint16x8_t test_vcgeq_s16(int16x8_t a, int16x8_t b) {
1037  return vcgeq_s16(a, b);
1038}
1039
1040// CHECK: test_vcgeq_s32
1041// CHECK: vcge.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1042uint32x4_t test_vcgeq_s32(int32x4_t a, int32x4_t b) {
1043  return vcgeq_s32(a, b);
1044}
1045
1046// CHECK: test_vcgeq_f32
1047// CHECK: vcge.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1048uint32x4_t test_vcgeq_f32(float32x4_t a, float32x4_t b) {
1049  return vcgeq_f32(a, b);
1050}
1051
1052// CHECK: test_vcgeq_u8
1053// CHECK: vcge.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1054uint8x16_t test_vcgeq_u8(uint8x16_t a, uint8x16_t b) {
1055  return vcgeq_u8(a, b);
1056}
1057
1058// CHECK: test_vcgeq_u16
1059// CHECK: vcge.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1060uint16x8_t test_vcgeq_u16(uint16x8_t a, uint16x8_t b) {
1061  return vcgeq_u16(a, b);
1062}
1063
1064// CHECK: test_vcgeq_u32
1065// CHECK: vcge.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1066uint32x4_t test_vcgeq_u32(uint32x4_t a, uint32x4_t b) {
1067  return vcgeq_u32(a, b);
1068}
1069
1070
1071// CHECK: test_vcgt_s8
1072// CHECK: vcgt.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1073uint8x8_t test_vcgt_s8(int8x8_t a, int8x8_t b) {
1074  return vcgt_s8(a, b);
1075}
1076
1077// CHECK: test_vcgt_s16
1078// CHECK: vcgt.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1079uint16x4_t test_vcgt_s16(int16x4_t a, int16x4_t b) {
1080  return vcgt_s16(a, b);
1081}
1082
1083// CHECK: test_vcgt_s32
1084// CHECK: vcgt.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1085uint32x2_t test_vcgt_s32(int32x2_t a, int32x2_t b) {
1086  return vcgt_s32(a, b);
1087}
1088
1089// CHECK: test_vcgt_f32
1090// CHECK: vcgt.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1091uint32x2_t test_vcgt_f32(float32x2_t a, float32x2_t b) {
1092  return vcgt_f32(a, b);
1093}
1094
1095// CHECK: test_vcgt_u8
1096// CHECK: vcgt.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1097uint8x8_t test_vcgt_u8(uint8x8_t a, uint8x8_t b) {
1098  return vcgt_u8(a, b);
1099}
1100
1101// CHECK: test_vcgt_u16
1102// CHECK: vcgt.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1103uint16x4_t test_vcgt_u16(uint16x4_t a, uint16x4_t b) {
1104  return vcgt_u16(a, b);
1105}
1106
1107// CHECK: test_vcgt_u32
1108// CHECK: vcgt.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1109uint32x2_t test_vcgt_u32(uint32x2_t a, uint32x2_t b) {
1110  return vcgt_u32(a, b);
1111}
1112
1113// CHECK: test_vcgtq_s8
1114// CHECK: vcgt.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1115uint8x16_t test_vcgtq_s8(int8x16_t a, int8x16_t b) {
1116  return vcgtq_s8(a, b);
1117}
1118
1119// CHECK: test_vcgtq_s16
1120// CHECK: vcgt.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1121uint16x8_t test_vcgtq_s16(int16x8_t a, int16x8_t b) {
1122  return vcgtq_s16(a, b);
1123}
1124
1125// CHECK: test_vcgtq_s32
1126// CHECK: vcgt.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1127uint32x4_t test_vcgtq_s32(int32x4_t a, int32x4_t b) {
1128  return vcgtq_s32(a, b);
1129}
1130
1131// CHECK: test_vcgtq_f32
1132// CHECK: vcgt.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1133uint32x4_t test_vcgtq_f32(float32x4_t a, float32x4_t b) {
1134  return vcgtq_f32(a, b);
1135}
1136
1137// CHECK: test_vcgtq_u8
1138// CHECK: vcgt.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1139uint8x16_t test_vcgtq_u8(uint8x16_t a, uint8x16_t b) {
1140  return vcgtq_u8(a, b);
1141}
1142
1143// CHECK: test_vcgtq_u16
1144// CHECK: vcgt.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1145uint16x8_t test_vcgtq_u16(uint16x8_t a, uint16x8_t b) {
1146  return vcgtq_u16(a, b);
1147}
1148
1149// CHECK: test_vcgtq_u32
1150// CHECK: vcgt.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1151uint32x4_t test_vcgtq_u32(uint32x4_t a, uint32x4_t b) {
1152  return vcgtq_u32(a, b);
1153}
1154
1155
1156// CHECK: test_vcle_s8
1157// CHECK: vcge.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1158uint8x8_t test_vcle_s8(int8x8_t a, int8x8_t b) {
1159  return vcle_s8(a, b);
1160}
1161
1162// CHECK: test_vcle_s16
1163// CHECK: vcge.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1164uint16x4_t test_vcle_s16(int16x4_t a, int16x4_t b) {
1165  return vcle_s16(a, b);
1166}
1167
1168// CHECK: test_vcle_s32
1169// CHECK: vcge.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1170uint32x2_t test_vcle_s32(int32x2_t a, int32x2_t b) {
1171  return vcle_s32(a, b);
1172}
1173
1174// CHECK: test_vcle_f32
1175// CHECK: vcge.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1176uint32x2_t test_vcle_f32(float32x2_t a, float32x2_t b) {
1177  return vcle_f32(a, b);
1178}
1179
1180// CHECK: test_vcle_u8
1181// CHECK: vcge.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1182uint8x8_t test_vcle_u8(uint8x8_t a, uint8x8_t b) {
1183  return vcle_u8(a, b);
1184}
1185
1186// CHECK: test_vcle_u16
1187// CHECK: vcge.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1188uint16x4_t test_vcle_u16(uint16x4_t a, uint16x4_t b) {
1189  return vcle_u16(a, b);
1190}
1191
1192// CHECK: test_vcle_u32
1193// CHECK: vcge.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1194uint32x2_t test_vcle_u32(uint32x2_t a, uint32x2_t b) {
1195  return vcle_u32(a, b);
1196}
1197
1198// CHECK: test_vcleq_s8
1199// CHECK: vcge.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1200uint8x16_t test_vcleq_s8(int8x16_t a, int8x16_t b) {
1201  return vcleq_s8(a, b);
1202}
1203
1204// CHECK: test_vcleq_s16
1205// CHECK: vcge.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1206uint16x8_t test_vcleq_s16(int16x8_t a, int16x8_t b) {
1207  return vcleq_s16(a, b);
1208}
1209
1210// CHECK: test_vcleq_s32
1211// CHECK: vcge.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1212uint32x4_t test_vcleq_s32(int32x4_t a, int32x4_t b) {
1213  return vcleq_s32(a, b);
1214}
1215
1216// CHECK: test_vcleq_f32
1217// CHECK: vcge.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1218uint32x4_t test_vcleq_f32(float32x4_t a, float32x4_t b) {
1219  return vcleq_f32(a, b);
1220}
1221
1222// CHECK: test_vcleq_u8
1223// CHECK: vcge.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1224uint8x16_t test_vcleq_u8(uint8x16_t a, uint8x16_t b) {
1225  return vcleq_u8(a, b);
1226}
1227
1228// CHECK: test_vcleq_u16
1229// CHECK: vcge.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1230uint16x8_t test_vcleq_u16(uint16x8_t a, uint16x8_t b) {
1231  return vcleq_u16(a, b);
1232}
1233
1234// CHECK: test_vcleq_u32
1235// CHECK: vcge.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1236uint32x4_t test_vcleq_u32(uint32x4_t a, uint32x4_t b) {
1237  return vcleq_u32(a, b);
1238}
1239
1240
1241// CHECK: test_vcls_s8
1242// CHECK: vcls.s8 d{{[0-9]+}}, d{{[0-9]+}}
1243int8x8_t test_vcls_s8(int8x8_t a) {
1244  return vcls_s8(a);
1245}
1246
1247// CHECK: test_vcls_s16
1248// CHECK: vcls.s16 d{{[0-9]+}}, d{{[0-9]+}}
1249int16x4_t test_vcls_s16(int16x4_t a) {
1250  return vcls_s16(a);
1251}
1252
1253// CHECK: test_vcls_s32
1254// CHECK: vcls.s32 d{{[0-9]+}}, d{{[0-9]+}}
1255int32x2_t test_vcls_s32(int32x2_t a) {
1256  return vcls_s32(a);
1257}
1258
1259// CHECK: test_vclsq_s8
1260// CHECK: vcls.s8 q{{[0-9]+}}, q{{[0-9]+}}
1261int8x16_t test_vclsq_s8(int8x16_t a) {
1262  return vclsq_s8(a);
1263}
1264
1265// CHECK: test_vclsq_s16
1266// CHECK: vcls.s16 q{{[0-9]+}}, q{{[0-9]+}}
1267int16x8_t test_vclsq_s16(int16x8_t a) {
1268  return vclsq_s16(a);
1269}
1270
1271// CHECK: test_vclsq_s32
1272// CHECK: vcls.s32 q{{[0-9]+}}, q{{[0-9]+}}
1273int32x4_t test_vclsq_s32(int32x4_t a) {
1274  return vclsq_s32(a);
1275}
1276
1277
1278// CHECK: test_vclt_s8
1279// CHECK: vcgt.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1280uint8x8_t test_vclt_s8(int8x8_t a, int8x8_t b) {
1281  return vclt_s8(a, b);
1282}
1283
1284// CHECK: test_vclt_s16
1285// CHECK: vcgt.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1286uint16x4_t test_vclt_s16(int16x4_t a, int16x4_t b) {
1287  return vclt_s16(a, b);
1288}
1289
1290// CHECK: test_vclt_s32
1291// CHECK: vcgt.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1292uint32x2_t test_vclt_s32(int32x2_t a, int32x2_t b) {
1293  return vclt_s32(a, b);
1294}
1295
1296// CHECK: test_vclt_f32
1297// CHECK: vcgt.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1298uint32x2_t test_vclt_f32(float32x2_t a, float32x2_t b) {
1299  return vclt_f32(a, b);
1300}
1301
1302// CHECK: test_vclt_u8
1303// CHECK: vcgt.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1304uint8x8_t test_vclt_u8(uint8x8_t a, uint8x8_t b) {
1305  return vclt_u8(a, b);
1306}
1307
1308// CHECK: test_vclt_u16
1309// CHECK: vcgt.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1310uint16x4_t test_vclt_u16(uint16x4_t a, uint16x4_t b) {
1311  return vclt_u16(a, b);
1312}
1313
1314// CHECK: test_vclt_u32
1315// CHECK: vcgt.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1316uint32x2_t test_vclt_u32(uint32x2_t a, uint32x2_t b) {
1317  return vclt_u32(a, b);
1318}
1319
1320// CHECK: test_vcltq_s8
1321// CHECK: vcgt.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1322uint8x16_t test_vcltq_s8(int8x16_t a, int8x16_t b) {
1323  return vcltq_s8(a, b);
1324}
1325
1326// CHECK: test_vcltq_s16
1327// CHECK: vcgt.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1328uint16x8_t test_vcltq_s16(int16x8_t a, int16x8_t b) {
1329  return vcltq_s16(a, b);
1330}
1331
1332// CHECK: test_vcltq_s32
1333// CHECK: vcgt.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1334uint32x4_t test_vcltq_s32(int32x4_t a, int32x4_t b) {
1335  return vcltq_s32(a, b);
1336}
1337
1338// CHECK: test_vcltq_f32
1339// CHECK: vcgt.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1340uint32x4_t test_vcltq_f32(float32x4_t a, float32x4_t b) {
1341  return vcltq_f32(a, b);
1342}
1343
1344// CHECK: test_vcltq_u8
1345// CHECK: vcgt.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1346uint8x16_t test_vcltq_u8(uint8x16_t a, uint8x16_t b) {
1347  return vcltq_u8(a, b);
1348}
1349
1350// CHECK: test_vcltq_u16
1351// CHECK: vcgt.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1352uint16x8_t test_vcltq_u16(uint16x8_t a, uint16x8_t b) {
1353  return vcltq_u16(a, b);
1354}
1355
1356// CHECK: test_vcltq_u32
1357// CHECK: vcgt.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
1358uint32x4_t test_vcltq_u32(uint32x4_t a, uint32x4_t b) {
1359  return vcltq_u32(a, b);
1360}
1361
1362
1363// CHECK: test_vclz_s8
1364// CHECK: vclz.i8 d{{[0-9]+}}, d{{[0-9]+}}
1365int8x8_t test_vclz_s8(int8x8_t a) {
1366  return vclz_s8(a);
1367}
1368
1369// CHECK: test_vclz_s16
1370// CHECK: vclz.i16 d{{[0-9]+}}, d{{[0-9]+}}
1371int16x4_t test_vclz_s16(int16x4_t a) {
1372  return vclz_s16(a);
1373}
1374
1375// CHECK: test_vclz_s32
1376// CHECK: vclz.i32 d{{[0-9]+}}, d{{[0-9]+}}
1377int32x2_t test_vclz_s32(int32x2_t a) {
1378  return vclz_s32(a);
1379}
1380
1381// CHECK: test_vclz_u8
1382// CHECK: vclz.i8 d{{[0-9]+}}, d{{[0-9]+}}
1383uint8x8_t test_vclz_u8(uint8x8_t a) {
1384  return vclz_u8(a);
1385}
1386
1387// CHECK: test_vclz_u16
1388// CHECK: vclz.i16 d{{[0-9]+}}, d{{[0-9]+}}
1389uint16x4_t test_vclz_u16(uint16x4_t a) {
1390  return vclz_u16(a);
1391}
1392
1393// CHECK: test_vclz_u32
1394// CHECK: vclz.i32 d{{[0-9]+}}, d{{[0-9]+}}
1395uint32x2_t test_vclz_u32(uint32x2_t a) {
1396  return vclz_u32(a);
1397}
1398
1399// CHECK: test_vclzq_s8
1400// CHECK: vclz.i8 q{{[0-9]+}}, q{{[0-9]+}}
1401int8x16_t test_vclzq_s8(int8x16_t a) {
1402  return vclzq_s8(a);
1403}
1404
1405// CHECK: test_vclzq_s16
1406// CHECK: vclz.i16 q{{[0-9]+}}, q{{[0-9]+}}
1407int16x8_t test_vclzq_s16(int16x8_t a) {
1408  return vclzq_s16(a);
1409}
1410
1411// CHECK: test_vclzq_s32
1412// CHECK: vclz.i32 q{{[0-9]+}}, q{{[0-9]+}}
1413int32x4_t test_vclzq_s32(int32x4_t a) {
1414  return vclzq_s32(a);
1415}
1416
1417// CHECK: test_vclzq_u8
1418// CHECK: vclz.i8 q{{[0-9]+}}, q{{[0-9]+}}
1419uint8x16_t test_vclzq_u8(uint8x16_t a) {
1420  return vclzq_u8(a);
1421}
1422
1423// CHECK: test_vclzq_u16
1424// CHECK: vclz.i16 q{{[0-9]+}}, q{{[0-9]+}}
1425uint16x8_t test_vclzq_u16(uint16x8_t a) {
1426  return vclzq_u16(a);
1427}
1428
1429// CHECK: test_vclzq_u32
1430// CHECK: vclz.i32 q{{[0-9]+}}, q{{[0-9]+}}
1431uint32x4_t test_vclzq_u32(uint32x4_t a) {
1432  return vclzq_u32(a);
1433}
1434
1435
1436// CHECK: test_vcnt_u8
1437// CHECK: vcnt.8 d{{[0-9]+}}, d{{[0-9]+}}
1438uint8x8_t test_vcnt_u8(uint8x8_t a) {
1439  return vcnt_u8(a);
1440}
1441
1442// CHECK: test_vcnt_s8
1443// CHECK: vcnt.8 d{{[0-9]+}}, d{{[0-9]+}}
1444int8x8_t test_vcnt_s8(int8x8_t a) {
1445  return vcnt_s8(a);
1446}
1447
1448// CHECK: test_vcnt_p8
1449// CHECK: vcnt.8 d{{[0-9]+}}, d{{[0-9]+}}
1450poly8x8_t test_vcnt_p8(poly8x8_t a) {
1451  return vcnt_p8(a);
1452}
1453
1454// CHECK: test_vcntq_u8
1455// CHECK: vcnt.8 q{{[0-9]+}}, q{{[0-9]+}}
1456uint8x16_t test_vcntq_u8(uint8x16_t a) {
1457  return vcntq_u8(a);
1458}
1459
1460// CHECK: test_vcntq_s8
1461// CHECK: vcnt.8 q{{[0-9]+}}, q{{[0-9]+}}
1462int8x16_t test_vcntq_s8(int8x16_t a) {
1463  return vcntq_s8(a);
1464}
1465
1466// CHECK: test_vcntq_p8
1467// CHECK: vcnt.8 q{{[0-9]+}}, q{{[0-9]+}}
1468poly8x16_t test_vcntq_p8(poly8x16_t a) {
1469  return vcntq_p8(a);
1470}
1471
1472
1473// CHECK: test_vcombine_s8
1474int8x16_t test_vcombine_s8(int8x8_t a, int8x8_t b) {
1475  return vcombine_s8(a, b);
1476}
1477
1478// CHECK: test_vcombine_s16
1479int16x8_t test_vcombine_s16(int16x4_t a, int16x4_t b) {
1480  return vcombine_s16(a, b);
1481}
1482
1483// CHECK: test_vcombine_s32
1484int32x4_t test_vcombine_s32(int32x2_t a, int32x2_t b) {
1485  return vcombine_s32(a, b);
1486}
1487
1488// CHECK: test_vcombine_s64
1489int64x2_t test_vcombine_s64(int64x1_t a, int64x1_t b) {
1490  return vcombine_s64(a, b);
1491}
1492
1493// CHECK: test_vcombine_f16
1494float16x8_t test_vcombine_f16(float16x4_t a, float16x4_t b) {
1495  return vcombine_f16(a, b);
1496}
1497
1498// CHECK: test_vcombine_f32
1499float32x4_t test_vcombine_f32(float32x2_t a, float32x2_t b) {
1500  return vcombine_f32(a, b);
1501}
1502
1503// CHECK: test_vcombine_u8
1504uint8x16_t test_vcombine_u8(uint8x8_t a, uint8x8_t b) {
1505  return vcombine_u8(a, b);
1506}
1507
1508// CHECK: test_vcombine_u16
1509uint16x8_t test_vcombine_u16(uint16x4_t a, uint16x4_t b) {
1510  return vcombine_u16(a, b);
1511}
1512
1513// CHECK: test_vcombine_u32
1514uint32x4_t test_vcombine_u32(uint32x2_t a, uint32x2_t b) {
1515  return vcombine_u32(a, b);
1516}
1517
1518// CHECK: test_vcombine_u64
1519uint64x2_t test_vcombine_u64(uint64x1_t a, uint64x1_t b) {
1520  return vcombine_u64(a, b);
1521}
1522
1523// CHECK: test_vcombine_p8
1524poly8x16_t test_vcombine_p8(poly8x8_t a, poly8x8_t b) {
1525  return vcombine_p8(a, b);
1526}
1527
1528// CHECK: test_vcombine_p16
1529poly16x8_t test_vcombine_p16(poly16x4_t a, poly16x4_t b) {
1530  return vcombine_p16(a, b);
1531}
1532
1533
1534// CHECK: test_vcreate_s8
1535int8x8_t test_vcreate_s8(uint64_t a) {
1536  return vcreate_s8(a);
1537}
1538
1539// CHECK: test_vcreate_s16
1540int16x4_t test_vcreate_s16(uint64_t a) {
1541  return vcreate_s16(a);
1542}
1543
1544// CHECK: test_vcreate_s32
1545int32x2_t test_vcreate_s32(uint64_t a) {
1546  return vcreate_s32(a);
1547}
1548
1549// CHECK: test_vcreate_f16
1550float16x4_t test_vcreate_f16(uint64_t a) {
1551  return vcreate_f16(a);
1552}
1553
1554// CHECK: test_vcreate_f32
1555float32x2_t test_vcreate_f32(uint64_t a) {
1556  return vcreate_f32(a);
1557}
1558
1559// CHECK: test_vcreate_u8
1560uint8x8_t test_vcreate_u8(uint64_t a) {
1561  return vcreate_u8(a);
1562}
1563
1564// CHECK: test_vcreate_u16
1565uint16x4_t test_vcreate_u16(uint64_t a) {
1566  return vcreate_u16(a);
1567}
1568
1569// CHECK: test_vcreate_u32
1570uint32x2_t test_vcreate_u32(uint64_t a) {
1571  return vcreate_u32(a);
1572}
1573
1574// CHECK: test_vcreate_u64
1575uint64x1_t test_vcreate_u64(uint64_t a) {
1576  return vcreate_u64(a);
1577}
1578
1579// CHECK: test_vcreate_p8
1580poly8x8_t test_vcreate_p8(uint64_t a) {
1581  return vcreate_p8(a);
1582}
1583
1584// CHECK: test_vcreate_p16
1585poly16x4_t test_vcreate_p16(uint64_t a) {
1586  return vcreate_p16(a);
1587}
1588
1589// CHECK: test_vcreate_s64
1590int64x1_t test_vcreate_s64(uint64_t a) {
1591  return vcreate_s64(a);
1592}
1593
1594
1595// CHECK: test_vcvt_f16_f32
1596// CHECK: vcvt.f16.f32 d{{[0-9]+}}, q{{[0-9]+}}
1597float16x4_t test_vcvt_f16_f32(float32x4_t a) {
1598  return vcvt_f16_f32(a);
1599}
1600
1601
1602// CHECK: test_vcvt_f32_s32
1603// CHECK: vcvt.f32.s32 d{{[0-9]+}}, d{{[0-9]+}}
1604float32x2_t test_vcvt_f32_s32(int32x2_t a) {
1605  return vcvt_f32_s32(a);
1606}
1607
1608// CHECK: test_vcvt_f32_u32
1609// CHECK: vcvt.f32.u32 d{{[0-9]+}}, d{{[0-9]+}}
1610float32x2_t test_vcvt_f32_u32(uint32x2_t a) {
1611  return vcvt_f32_u32(a);
1612}
1613
1614// CHECK: test_vcvtq_f32_s32
1615// CHECK: vcvt.f32.s32 q{{[0-9]+}}, q{{[0-9]+}}
1616float32x4_t test_vcvtq_f32_s32(int32x4_t a) {
1617  return vcvtq_f32_s32(a);
1618}
1619
1620// CHECK: test_vcvtq_f32_u32
1621// CHECK: vcvt.f32.u32 q{{[0-9]+}}, q{{[0-9]+}}
1622float32x4_t test_vcvtq_f32_u32(uint32x4_t a) {
1623  return vcvtq_f32_u32(a);
1624}
1625
1626
1627// CHECK: test_vcvt_f32_f16
1628// CHECK: vcvt.f32.f16
1629float32x4_t test_vcvt_f32_f16(float16x4_t a) {
1630  return vcvt_f32_f16(a);
1631}
1632
1633
1634// CHECK: test_vcvt_n_f32_s32
1635// CHECK: vcvt.f32.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
1636float32x2_t test_vcvt_n_f32_s32(int32x2_t a) {
1637  return vcvt_n_f32_s32(a, 1);
1638}
1639
1640// CHECK: test_vcvt_n_f32_u32
1641// CHECK: vcvt.f32.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
1642float32x2_t test_vcvt_n_f32_u32(uint32x2_t a) {
1643  return vcvt_n_f32_u32(a, 1);
1644}
1645
1646// CHECK: test_vcvtq_n_f32_s32
1647// CHECK: vcvt.f32.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
1648float32x4_t test_vcvtq_n_f32_s32(int32x4_t a) {
1649  return vcvtq_n_f32_s32(a, 3);
1650}
1651
1652// CHECK: test_vcvtq_n_f32_u32
1653// CHECK: vcvt.f32.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
1654float32x4_t test_vcvtq_n_f32_u32(uint32x4_t a) {
1655  return vcvtq_n_f32_u32(a, 3);
1656}
1657
1658
1659// CHECK: test_vcvt_n_s32_f32
1660// CHECK: vcvt.s32.f32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
1661int32x2_t test_vcvt_n_s32_f32(float32x2_t a) {
1662  return vcvt_n_s32_f32(a, 1);
1663}
1664
1665// CHECK: test_vcvtq_n_s32_f32
1666// CHECK: vcvt.s32.f32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
1667int32x4_t test_vcvtq_n_s32_f32(float32x4_t a) {
1668  return vcvtq_n_s32_f32(a, 3);
1669}
1670
1671
1672// CHECK: test_vcvt_n_u32_f32
1673// CHECK: vcvt.u32.f32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
1674uint32x2_t test_vcvt_n_u32_f32(float32x2_t a) {
1675  return vcvt_n_u32_f32(a, 1);
1676}
1677
1678// CHECK: test_vcvtq_n_u32_f32
1679// CHECK: vcvt.u32.f32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
1680uint32x4_t test_vcvtq_n_u32_f32(float32x4_t a) {
1681  return vcvtq_n_u32_f32(a, 3);
1682}
1683
1684
1685// CHECK: test_vcvt_s32_f32
1686// CHECK: vcvt.s32.f32 d{{[0-9]+}}, d{{[0-9]+}}
1687int32x2_t test_vcvt_s32_f32(float32x2_t a) {
1688  return vcvt_s32_f32(a);
1689}
1690
1691// CHECK: test_vcvtq_s32_f32
1692// CHECK: vcvt.s32.f32 q{{[0-9]+}}, q{{[0-9]+}}
1693int32x4_t test_vcvtq_s32_f32(float32x4_t a) {
1694  return vcvtq_s32_f32(a);
1695}
1696
1697
1698// CHECK: test_vcvt_u32_f32
1699// CHECK: vcvt.u32.f32 d{{[0-9]+}}, d{{[0-9]+}}
1700uint32x2_t test_vcvt_u32_f32(float32x2_t a) {
1701  return vcvt_u32_f32(a);
1702}
1703
1704// CHECK: test_vcvtq_u32_f32
1705// CHECK: vcvt.u32.f32 q{{[0-9]+}}, q{{[0-9]+}}
1706uint32x4_t test_vcvtq_u32_f32(float32x4_t a) {
1707  return vcvtq_u32_f32(a);
1708}
1709
1710
1711// CHECK: test_vdup_lane_u8
1712// CHECK: vdup.8 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1713uint8x8_t test_vdup_lane_u8(uint8x8_t a) {
1714  return vdup_lane_u8(a, 7);
1715}
1716
1717// CHECK: test_vdup_lane_u16
1718// CHECK: vdup.16 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1719uint16x4_t test_vdup_lane_u16(uint16x4_t a) {
1720  return vdup_lane_u16(a, 3);
1721}
1722
1723// CHECK: test_vdup_lane_u32
1724// CHECK: vdup.32 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1725uint32x2_t test_vdup_lane_u32(uint32x2_t a) {
1726  return vdup_lane_u32(a, 1);
1727}
1728
1729// CHECK: test_vdup_lane_s8
1730// CHECK: vdup.8 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1731int8x8_t test_vdup_lane_s8(int8x8_t a) {
1732  return vdup_lane_s8(a, 7);
1733}
1734
1735// CHECK: test_vdup_lane_s16
1736// CHECK: vdup.16 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1737int16x4_t test_vdup_lane_s16(int16x4_t a) {
1738  return vdup_lane_s16(a, 3);
1739}
1740
1741// CHECK: test_vdup_lane_s32
1742// CHECK: vdup.32 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1743int32x2_t test_vdup_lane_s32(int32x2_t a) {
1744  return vdup_lane_s32(a, 1);
1745}
1746
1747// CHECK: test_vdup_lane_p8
1748// CHECK: vdup.8 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1749poly8x8_t test_vdup_lane_p8(poly8x8_t a) {
1750  return vdup_lane_p8(a, 7);
1751}
1752
1753// CHECK: test_vdup_lane_p16
1754// CHECK: vdup.16 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1755poly16x4_t test_vdup_lane_p16(poly16x4_t a) {
1756  return vdup_lane_p16(a, 3);
1757}
1758
1759// CHECK: test_vdup_lane_f32
1760// CHECK: vdup.32 d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1761float32x2_t test_vdup_lane_f32(float32x2_t a) {
1762  return vdup_lane_f32(a, 1);
1763}
1764
1765// CHECK: test_vdupq_lane_u8
1766// CHECK: vdup.8 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1767uint8x16_t test_vdupq_lane_u8(uint8x8_t a) {
1768  return vdupq_lane_u8(a, 7);
1769}
1770
1771// CHECK: test_vdupq_lane_u16
1772// CHECK: vdup.16 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1773uint16x8_t test_vdupq_lane_u16(uint16x4_t a) {
1774  return vdupq_lane_u16(a, 3);
1775}
1776
1777// CHECK: test_vdupq_lane_u32
1778// CHECK: vdup.32 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1779uint32x4_t test_vdupq_lane_u32(uint32x2_t a) {
1780  return vdupq_lane_u32(a, 1);
1781}
1782
1783// CHECK: test_vdupq_lane_s8
1784// CHECK: vdup.8 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1785int8x16_t test_vdupq_lane_s8(int8x8_t a) {
1786  return vdupq_lane_s8(a, 7);
1787}
1788
1789// CHECK: test_vdupq_lane_s16
1790// CHECK: vdup.16 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1791int16x8_t test_vdupq_lane_s16(int16x4_t a) {
1792  return vdupq_lane_s16(a, 3);
1793}
1794
1795// CHECK: test_vdupq_lane_s32
1796// CHECK: vdup.32 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1797int32x4_t test_vdupq_lane_s32(int32x2_t a) {
1798  return vdupq_lane_s32(a, 1);
1799}
1800
1801// CHECK: test_vdupq_lane_p8
1802// CHECK: vdup.8 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1803poly8x16_t test_vdupq_lane_p8(poly8x8_t a) {
1804  return vdupq_lane_p8(a, 7);
1805}
1806
1807// CHECK: test_vdupq_lane_p16
1808// CHECK: vdup.16 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1809poly16x8_t test_vdupq_lane_p16(poly16x4_t a) {
1810  return vdupq_lane_p16(a, 3);
1811}
1812
1813// CHECK: test_vdupq_lane_f32
1814// CHECK: vdup.32 q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
1815float32x4_t test_vdupq_lane_f32(float32x2_t a) {
1816  return vdupq_lane_f32(a, 1);
1817}
1818
1819// CHECK: test_vdup_lane_s64
1820int64x1_t test_vdup_lane_s64(int64x1_t a) {
1821  return vdup_lane_s64(a, 0);
1822}
1823
1824// CHECK: test_vdup_lane_u64
1825uint64x1_t test_vdup_lane_u64(uint64x1_t a) {
1826  return vdup_lane_u64(a, 0);
1827}
1828
1829// CHECK: test_vdupq_lane_s64
1830// CHECK: {{vmov|vdup}}
1831int64x2_t test_vdupq_lane_s64(int64x1_t a) {
1832  return vdupq_lane_s64(a, 0);
1833}
1834
1835// CHECK: test_vdupq_lane_u64
1836// CHECK: {{vmov|vdup}}
1837uint64x2_t test_vdupq_lane_u64(uint64x1_t a) {
1838  return vdupq_lane_u64(a, 0);
1839}
1840
1841
1842// CHECK: test_vdup_n_u8
1843// CHECK: vmov
1844uint8x8_t test_vdup_n_u8(uint8_t a) {
1845  return vdup_n_u8(a);
1846}
1847
1848// CHECK: test_vdup_n_u16
1849// CHECK: vmov
1850uint16x4_t test_vdup_n_u16(uint16_t a) {
1851  return vdup_n_u16(a);
1852}
1853
1854// CHECK: test_vdup_n_u32
1855// CHECK: vmov
1856uint32x2_t test_vdup_n_u32(uint32_t a) {
1857  return vdup_n_u32(a);
1858}
1859
1860// CHECK: test_vdup_n_s8
1861// CHECK: vmov
1862int8x8_t test_vdup_n_s8(int8_t a) {
1863  return vdup_n_s8(a);
1864}
1865
1866// CHECK: test_vdup_n_s16
1867// CHECK: vmov
1868int16x4_t test_vdup_n_s16(int16_t a) {
1869  return vdup_n_s16(a);
1870}
1871
1872// CHECK: test_vdup_n_s32
1873// CHECK: vmov
1874int32x2_t test_vdup_n_s32(int32_t a) {
1875  return vdup_n_s32(a);
1876}
1877
1878// CHECK: test_vdup_n_p8
1879// CHECK: vmov
1880poly8x8_t test_vdup_n_p8(poly8_t a) {
1881  return vdup_n_p8(a);
1882}
1883
1884// CHECK: test_vdup_n_p16
1885// CHECK: vmov
1886poly16x4_t test_vdup_n_p16(poly16_t a) {
1887  return vdup_n_p16(a);
1888}
1889
1890// CHECK: test_vdup_n_f32
1891// CHECK: vmov
1892float32x2_t test_vdup_n_f32(float32_t a) {
1893  return vdup_n_f32(a);
1894}
1895
1896// CHECK: test_vdupq_n_u8
1897// CHECK: vmov
1898uint8x16_t test_vdupq_n_u8(uint8_t a) {
1899  return vdupq_n_u8(a);
1900}
1901
1902// CHECK: test_vdupq_n_u16
1903// CHECK: vmov
1904uint16x8_t test_vdupq_n_u16(uint16_t a) {
1905  return vdupq_n_u16(a);
1906}
1907
1908// CHECK: test_vdupq_n_u32
1909// CHECK: vmov
1910uint32x4_t test_vdupq_n_u32(uint32_t a) {
1911  return vdupq_n_u32(a);
1912}
1913
1914// CHECK: test_vdupq_n_s8
1915// CHECK: vmov
1916int8x16_t test_vdupq_n_s8(int8_t a) {
1917  return vdupq_n_s8(a);
1918}
1919
1920// CHECK: test_vdupq_n_s16
1921// CHECK: vmov
1922int16x8_t test_vdupq_n_s16(int16_t a) {
1923  return vdupq_n_s16(a);
1924}
1925
1926// CHECK: test_vdupq_n_s32
1927// CHECK: vmov
1928int32x4_t test_vdupq_n_s32(int32_t a) {
1929  return vdupq_n_s32(a);
1930}
1931
1932// CHECK: test_vdupq_n_p8
1933// CHECK: vmov
1934poly8x16_t test_vdupq_n_p8(poly8_t a) {
1935  return vdupq_n_p8(a);
1936}
1937
1938// CHECK: test_vdupq_n_p16
1939// CHECK: vmov
1940poly16x8_t test_vdupq_n_p16(poly16_t a) {
1941  return vdupq_n_p16(a);
1942}
1943
1944// CHECK: test_vdupq_n_f32
1945// CHECK: vmov
1946float32x4_t test_vdupq_n_f32(float32_t a) {
1947  return vdupq_n_f32(a);
1948}
1949
1950// CHECK: test_vdup_n_s64
1951// CHECK: vmov
1952int64x1_t test_vdup_n_s64(int64_t a) {
1953  return vdup_n_s64(a);
1954}
1955
1956// CHECK: test_vdup_n_u64
1957// CHECK: vmov
1958uint64x1_t test_vdup_n_u64(uint64_t a) {
1959  return vdup_n_u64(a);
1960}
1961
1962// CHECK: test_vdupq_n_s64
1963// CHECK: vmov
1964int64x2_t test_vdupq_n_s64(int64_t a) {
1965  return vdupq_n_s64(a);
1966}
1967
1968// CHECK: test_vdupq_n_u64
1969// CHECK: vmov
1970uint64x2_t test_vdupq_n_u64(uint64_t a) {
1971  return vdupq_n_u64(a);
1972}
1973
1974
1975// CHECK: test_veor_s8
1976// CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1977int8x8_t test_veor_s8(int8x8_t a, int8x8_t b) {
1978  return veor_s8(a, b);
1979}
1980
1981// CHECK: test_veor_s16
1982// CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1983int16x4_t test_veor_s16(int16x4_t a, int16x4_t b) {
1984  return veor_s16(a, b);
1985}
1986
1987// CHECK: test_veor_s32
1988// CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1989int32x2_t test_veor_s32(int32x2_t a, int32x2_t b) {
1990  return veor_s32(a, b);
1991}
1992
1993// CHECK: test_veor_s64
1994// CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1995int64x1_t test_veor_s64(int64x1_t a, int64x1_t b) {
1996  return veor_s64(a, b);
1997}
1998
1999// CHECK: test_veor_u8
2000// CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2001uint8x8_t test_veor_u8(uint8x8_t a, uint8x8_t b) {
2002  return veor_u8(a, b);
2003}
2004
2005// CHECK: test_veor_u16
2006// CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2007uint16x4_t test_veor_u16(uint16x4_t a, uint16x4_t b) {
2008  return veor_u16(a, b);
2009}
2010
2011// CHECK: test_veor_u32
2012// CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2013uint32x2_t test_veor_u32(uint32x2_t a, uint32x2_t b) {
2014  return veor_u32(a, b);
2015}
2016
2017// CHECK: test_veor_u64
2018// CHECK: veor d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2019uint64x1_t test_veor_u64(uint64x1_t a, uint64x1_t b) {
2020  return veor_u64(a, b);
2021}
2022
2023// CHECK: test_veorq_s8
2024// CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2025int8x16_t test_veorq_s8(int8x16_t a, int8x16_t b) {
2026  return veorq_s8(a, b);
2027}
2028
2029// CHECK: test_veorq_s16
2030// CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2031int16x8_t test_veorq_s16(int16x8_t a, int16x8_t b) {
2032  return veorq_s16(a, b);
2033}
2034
2035// CHECK: test_veorq_s32
2036// CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2037int32x4_t test_veorq_s32(int32x4_t a, int32x4_t b) {
2038  return veorq_s32(a, b);
2039}
2040
2041// CHECK: test_veorq_s64
2042// CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2043int64x2_t test_veorq_s64(int64x2_t a, int64x2_t b) {
2044  return veorq_s64(a, b);
2045}
2046
2047// CHECK: test_veorq_u8
2048// CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2049uint8x16_t test_veorq_u8(uint8x16_t a, uint8x16_t b) {
2050  return veorq_u8(a, b);
2051}
2052
2053// CHECK: test_veorq_u16
2054// CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2055uint16x8_t test_veorq_u16(uint16x8_t a, uint16x8_t b) {
2056  return veorq_u16(a, b);
2057}
2058
2059// CHECK: test_veorq_u32
2060// CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2061uint32x4_t test_veorq_u32(uint32x4_t a, uint32x4_t b) {
2062  return veorq_u32(a, b);
2063}
2064
2065// CHECK: test_veorq_u64
2066// CHECK: veor q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2067uint64x2_t test_veorq_u64(uint64x2_t a, uint64x2_t b) {
2068  return veorq_u64(a, b);
2069}
2070
2071
2072// CHECK: test_vext_s8
2073// CHECK: vext.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
2074int8x8_t test_vext_s8(int8x8_t a, int8x8_t b) {
2075  return vext_s8(a, b, 7);
2076}
2077
2078// CHECK: test_vext_u8
2079// CHECK: vext.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
2080uint8x8_t test_vext_u8(uint8x8_t a, uint8x8_t b) {
2081  return vext_u8(a, b, 7);
2082}
2083
2084// CHECK: test_vext_p8
2085// CHECK: vext.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
2086poly8x8_t test_vext_p8(poly8x8_t a, poly8x8_t b) {
2087  return vext_p8(a, b, 7);
2088}
2089
2090// CHECK: test_vext_s16
2091// CHECK: vext.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
2092int16x4_t test_vext_s16(int16x4_t a, int16x4_t b) {
2093  return vext_s16(a, b, 3);
2094}
2095
2096// CHECK: test_vext_u16
2097// CHECK: vext.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
2098uint16x4_t test_vext_u16(uint16x4_t a, uint16x4_t b) {
2099  return vext_u16(a, b, 3);
2100}
2101
2102// CHECK: test_vext_p16
2103// CHECK: vext.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
2104poly16x4_t test_vext_p16(poly16x4_t a, poly16x4_t b) {
2105  return vext_p16(a, b, 3);
2106}
2107
2108// CHECK: test_vext_s32
2109// CHECK: vext.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
2110int32x2_t test_vext_s32(int32x2_t a, int32x2_t b) {
2111  return vext_s32(a, b, 1);
2112}
2113
2114// CHECK: test_vext_u32
2115// CHECK: vext.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
2116uint32x2_t test_vext_u32(uint32x2_t a, uint32x2_t b) {
2117  return vext_u32(a, b, 1);
2118}
2119
2120// CHECK: test_vext_s64
2121int64x1_t test_vext_s64(int64x1_t a, int64x1_t b) {
2122  return vext_s64(a, b, 0);
2123}
2124
2125// CHECK: test_vext_u64
2126uint64x1_t test_vext_u64(uint64x1_t a, uint64x1_t b) {
2127  return vext_u64(a, b, 0);
2128}
2129
2130// CHECK: test_vext_f32
2131// CHECK: vext.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
2132float32x2_t test_vext_f32(float32x2_t a, float32x2_t b) {
2133  return vext_f32(a, b, 1);
2134}
2135
2136// CHECK: test_vextq_s8
2137// CHECK: vext.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
2138int8x16_t test_vextq_s8(int8x16_t a, int8x16_t b) {
2139  return vextq_s8(a, b, 15);
2140}
2141
2142// CHECK: test_vextq_u8
2143// CHECK: vext.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
2144uint8x16_t test_vextq_u8(uint8x16_t a, uint8x16_t b) {
2145  return vextq_u8(a, b, 15);
2146}
2147
2148// CHECK: test_vextq_p8
2149// CHECK: vext.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
2150poly8x16_t test_vextq_p8(poly8x16_t a, poly8x16_t b) {
2151  return vextq_p8(a, b, 15);
2152}
2153
2154// CHECK: test_vextq_s16
2155// CHECK: vext.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
2156int16x8_t test_vextq_s16(int16x8_t a, int16x8_t b) {
2157  return vextq_s16(a, b, 7);
2158}
2159
2160// CHECK: test_vextq_u16
2161// CHECK: vext.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
2162uint16x8_t test_vextq_u16(uint16x8_t a, uint16x8_t b) {
2163  return vextq_u16(a, b, 7);
2164}
2165
2166// CHECK: test_vextq_p16
2167// CHECK: vext.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
2168poly16x8_t test_vextq_p16(poly16x8_t a, poly16x8_t b) {
2169  return vextq_p16(a, b, 7);
2170}
2171
2172// CHECK: test_vextq_s32
2173// CHECK: vext.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
2174int32x4_t test_vextq_s32(int32x4_t a, int32x4_t b) {
2175  return vextq_s32(a, b, 3);
2176}
2177
2178// CHECK: test_vextq_u32
2179// CHECK: vext.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
2180uint32x4_t test_vextq_u32(uint32x4_t a, uint32x4_t b) {
2181  return vextq_u32(a, b, 3);
2182}
2183
2184// CHECK: test_vextq_s64
2185// CHECK: {{vmov|vdup}}
2186int64x2_t test_vextq_s64(int64x2_t a, int64x2_t b) {
2187  return vextq_s64(a, b, 1);
2188}
2189
2190// CHECK: test_vextq_u64
2191// CHECK: {{vmov|vdup}}
2192uint64x2_t test_vextq_u64(uint64x2_t a, uint64x2_t b) {
2193  return vextq_u64(a, b, 1);
2194}
2195
2196// CHECK: test_vextq_f32
2197// CHECK: vext.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
2198float32x4_t test_vextq_f32(float32x4_t a, float32x4_t b) {
2199  return vextq_f32(a, b, 3);
2200}
2201
2202
2203// CHECK: test_vfma_f32
2204// CHECK: vfma.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2205float32x2_t test_vfma_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
2206  return vfma_f32(a, b, c);
2207}
2208
2209// CHECK: test_vfmaq_f32
2210// CHECK: vfma.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2211float32x4_t test_vfmaq_f32(float32x4_t a, float32x4_t b, float32x4_t c) {
2212  return vfmaq_f32(a, b, c);
2213}
2214
2215
2216// CHECK: test_vget_high_s8
2217int8x8_t test_vget_high_s8(int8x16_t a) {
2218  return vget_high_s8(a);
2219}
2220
2221// CHECK: test_vget_high_s16
2222int16x4_t test_vget_high_s16(int16x8_t a) {
2223  return vget_high_s16(a);
2224}
2225
2226// CHECK: test_vget_high_s32
2227int32x2_t test_vget_high_s32(int32x4_t a) {
2228  return vget_high_s32(a);
2229}
2230
2231// CHECK: test_vget_high_s64
2232int64x1_t test_vget_high_s64(int64x2_t a) {
2233  return vget_high_s64(a);
2234}
2235
2236// CHECK: test_vget_high_f16
2237float16x4_t test_vget_high_f16(float16x8_t a) {
2238  return vget_high_f16(a);
2239}
2240
2241// CHECK: test_vget_high_f32
2242float32x2_t test_vget_high_f32(float32x4_t a) {
2243  return vget_high_f32(a);
2244}
2245
2246// CHECK: test_vget_high_u8
2247uint8x8_t test_vget_high_u8(uint8x16_t a) {
2248  return vget_high_u8(a);
2249}
2250
2251// CHECK: test_vget_high_u16
2252uint16x4_t test_vget_high_u16(uint16x8_t a) {
2253  return vget_high_u16(a);
2254}
2255
2256// CHECK: test_vget_high_u32
2257uint32x2_t test_vget_high_u32(uint32x4_t a) {
2258  return vget_high_u32(a);
2259}
2260
2261// CHECK: test_vget_high_u64
2262uint64x1_t test_vget_high_u64(uint64x2_t a) {
2263  return vget_high_u64(a);
2264}
2265
2266// CHECK: test_vget_high_p8
2267poly8x8_t test_vget_high_p8(poly8x16_t a) {
2268  return vget_high_p8(a);
2269}
2270
2271// CHECK: test_vget_high_p16
2272poly16x4_t test_vget_high_p16(poly16x8_t a) {
2273  return vget_high_p16(a);
2274}
2275
2276
2277// CHECK: test_vget_lane_u8
2278// CHECK: vmov
2279uint8_t test_vget_lane_u8(uint8x8_t a) {
2280  return vget_lane_u8(a, 7);
2281}
2282
2283// CHECK: test_vget_lane_u16
2284// CHECK: vmov
2285uint16_t test_vget_lane_u16(uint16x4_t a) {
2286  return vget_lane_u16(a, 3);
2287}
2288
2289// CHECK: test_vget_lane_u32
2290// CHECK: vmov
2291uint32_t test_vget_lane_u32(uint32x2_t a) {
2292  return vget_lane_u32(a, 1);
2293}
2294
2295// CHECK: test_vget_lane_s8
2296// CHECK: vmov
2297int8_t test_vget_lane_s8(int8x8_t a) {
2298  return vget_lane_s8(a, 7);
2299}
2300
2301// CHECK: test_vget_lane_s16
2302// CHECK: vmov
2303int16_t test_vget_lane_s16(int16x4_t a) {
2304  return vget_lane_s16(a, 3);
2305}
2306
2307// CHECK: test_vget_lane_s32
2308// CHECK: vmov
2309int32_t test_vget_lane_s32(int32x2_t a) {
2310  return vget_lane_s32(a, 1);
2311}
2312
2313// CHECK: test_vget_lane_p8
2314// CHECK: vmov
2315poly8_t test_vget_lane_p8(poly8x8_t a) {
2316  return vget_lane_p8(a, 7);
2317}
2318
2319// CHECK: test_vget_lane_p16
2320// CHECK: vmov
2321poly16_t test_vget_lane_p16(poly16x4_t a) {
2322  return vget_lane_p16(a, 3);
2323}
2324
2325// CHECK: test_vget_lane_f32
2326// CHECK: vmov
2327float32_t test_vget_lane_f32(float32x2_t a) {
2328  return vget_lane_f32(a, 1);
2329}
2330
2331// CHECK: test_vgetq_lane_u8
2332// CHECK: vmov
2333uint8_t test_vgetq_lane_u8(uint8x16_t a) {
2334  return vgetq_lane_u8(a, 15);
2335}
2336
2337// CHECK: test_vgetq_lane_u16
2338// CHECK: vmov
2339uint16_t test_vgetq_lane_u16(uint16x8_t a) {
2340  return vgetq_lane_u16(a, 7);
2341}
2342
2343// CHECK: test_vgetq_lane_u32
2344// CHECK: vmov
2345uint32_t test_vgetq_lane_u32(uint32x4_t a) {
2346  return vgetq_lane_u32(a, 3);
2347}
2348
2349// CHECK: test_vgetq_lane_s8
2350// CHECK: vmov
2351int8_t test_vgetq_lane_s8(int8x16_t a) {
2352  return vgetq_lane_s8(a, 15);
2353}
2354
2355// CHECK: test_vgetq_lane_s16
2356// CHECK: vmov
2357int16_t test_vgetq_lane_s16(int16x8_t a) {
2358  return vgetq_lane_s16(a, 7);
2359}
2360
2361// CHECK: test_vgetq_lane_s32
2362// CHECK: vmov
2363int32_t test_vgetq_lane_s32(int32x4_t a) {
2364  return vgetq_lane_s32(a, 3);
2365}
2366
2367// CHECK: test_vgetq_lane_p8
2368// CHECK: vmov
2369poly8_t test_vgetq_lane_p8(poly8x16_t a) {
2370  return vgetq_lane_p8(a, 15);
2371}
2372
2373// CHECK: test_vgetq_lane_p16
2374// CHECK: vmov
2375poly16_t test_vgetq_lane_p16(poly16x8_t a) {
2376  return vgetq_lane_p16(a, 7);
2377}
2378
2379// CHECK: test_vgetq_lane_f32
2380// CHECK: vmov
2381float32_t test_vgetq_lane_f32(float32x4_t a) {
2382  return vgetq_lane_f32(a, 3);
2383}
2384
2385// CHECK: test_vget_lane_s64
2386// CHECK: vmov
2387int64_t test_vget_lane_s64(int64x1_t a) {
2388  return vget_lane_s64(a, 0);
2389}
2390
2391// CHECK: test_vget_lane_u64
2392// CHECK: vmov
2393uint64_t test_vget_lane_u64(uint64x1_t a) {
2394  return vget_lane_u64(a, 0);
2395}
2396
2397// CHECK: test_vgetq_lane_s64
2398// CHECK: vmov
2399int64_t test_vgetq_lane_s64(int64x2_t a) {
2400  return vgetq_lane_s64(a, 1);
2401}
2402
2403// CHECK: test_vgetq_lane_u64
2404// CHECK: vmov
2405uint64_t test_vgetq_lane_u64(uint64x2_t a) {
2406  return vgetq_lane_u64(a, 1);
2407}
2408
2409
2410// CHECK: test_vget_low_s8
2411int8x8_t test_vget_low_s8(int8x16_t a) {
2412  return vget_low_s8(a);
2413}
2414
2415// CHECK: test_vget_low_s16
2416int16x4_t test_vget_low_s16(int16x8_t a) {
2417  return vget_low_s16(a);
2418}
2419
2420// CHECK: test_vget_low_s32
2421int32x2_t test_vget_low_s32(int32x4_t a) {
2422  return vget_low_s32(a);
2423}
2424
2425// CHECK: test_vget_low_s64
2426int64x1_t test_vget_low_s64(int64x2_t a) {
2427  return vget_low_s64(a);
2428}
2429
2430// CHECK: test_vget_low_f16
2431float16x4_t test_vget_low_f16(float16x8_t a) {
2432  return vget_low_f16(a);
2433}
2434
2435// CHECK: test_vget_low_f32
2436float32x2_t test_vget_low_f32(float32x4_t a) {
2437  return vget_low_f32(a);
2438}
2439
2440// CHECK: test_vget_low_u8
2441uint8x8_t test_vget_low_u8(uint8x16_t a) {
2442  return vget_low_u8(a);
2443}
2444
2445// CHECK: test_vget_low_u16
2446uint16x4_t test_vget_low_u16(uint16x8_t a) {
2447  return vget_low_u16(a);
2448}
2449
2450// CHECK: test_vget_low_u32
2451uint32x2_t test_vget_low_u32(uint32x4_t a) {
2452  return vget_low_u32(a);
2453}
2454
2455// CHECK: test_vget_low_u64
2456uint64x1_t test_vget_low_u64(uint64x2_t a) {
2457  return vget_low_u64(a);
2458}
2459
2460// CHECK: test_vget_low_p8
2461poly8x8_t test_vget_low_p8(poly8x16_t a) {
2462  return vget_low_p8(a);
2463}
2464
2465// CHECK: test_vget_low_p16
2466poly16x4_t test_vget_low_p16(poly16x8_t a) {
2467  return vget_low_p16(a);
2468}
2469
2470
2471// CHECK: test_vhadd_s8
2472// CHECK: vhadd.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2473int8x8_t test_vhadd_s8(int8x8_t a, int8x8_t b) {
2474  return vhadd_s8(a, b);
2475}
2476
2477// CHECK: test_vhadd_s16
2478// CHECK: vhadd.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2479int16x4_t test_vhadd_s16(int16x4_t a, int16x4_t b) {
2480  return vhadd_s16(a, b);
2481}
2482
2483// CHECK: test_vhadd_s32
2484// CHECK: vhadd.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2485int32x2_t test_vhadd_s32(int32x2_t a, int32x2_t b) {
2486  return vhadd_s32(a, b);
2487}
2488
2489// CHECK: test_vhadd_u8
2490// CHECK: vhadd.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2491uint8x8_t test_vhadd_u8(uint8x8_t a, uint8x8_t b) {
2492  return vhadd_u8(a, b);
2493}
2494
2495// CHECK: test_vhadd_u16
2496// CHECK: vhadd.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2497uint16x4_t test_vhadd_u16(uint16x4_t a, uint16x4_t b) {
2498  return vhadd_u16(a, b);
2499}
2500
2501// CHECK: test_vhadd_u32
2502// CHECK: vhadd.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2503uint32x2_t test_vhadd_u32(uint32x2_t a, uint32x2_t b) {
2504  return vhadd_u32(a, b);
2505}
2506
2507// CHECK: test_vhaddq_s8
2508// CHECK: vhadd.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2509int8x16_t test_vhaddq_s8(int8x16_t a, int8x16_t b) {
2510  return vhaddq_s8(a, b);
2511}
2512
2513// CHECK: test_vhaddq_s16
2514// CHECK: vhadd.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2515int16x8_t test_vhaddq_s16(int16x8_t a, int16x8_t b) {
2516  return vhaddq_s16(a, b);
2517}
2518
2519// CHECK: test_vhaddq_s32
2520// CHECK: vhadd.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2521int32x4_t test_vhaddq_s32(int32x4_t a, int32x4_t b) {
2522  return vhaddq_s32(a, b);
2523}
2524
2525// CHECK: test_vhaddq_u8
2526// CHECK: vhadd.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2527uint8x16_t test_vhaddq_u8(uint8x16_t a, uint8x16_t b) {
2528  return vhaddq_u8(a, b);
2529}
2530
2531// CHECK: test_vhaddq_u16
2532// CHECK: vhadd.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2533uint16x8_t test_vhaddq_u16(uint16x8_t a, uint16x8_t b) {
2534  return vhaddq_u16(a, b);
2535}
2536
2537// CHECK: test_vhaddq_u32
2538// CHECK: vhadd.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2539uint32x4_t test_vhaddq_u32(uint32x4_t a, uint32x4_t b) {
2540  return vhaddq_u32(a, b);
2541}
2542
2543
2544// CHECK: test_vhsub_s8
2545// CHECK: vhsub.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2546int8x8_t test_vhsub_s8(int8x8_t a, int8x8_t b) {
2547  return vhsub_s8(a, b);
2548}
2549
2550// CHECK: test_vhsub_s16
2551// CHECK: vhsub.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2552int16x4_t test_vhsub_s16(int16x4_t a, int16x4_t b) {
2553  return vhsub_s16(a, b);
2554}
2555
2556// CHECK: test_vhsub_s32
2557// CHECK: vhsub.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2558int32x2_t test_vhsub_s32(int32x2_t a, int32x2_t b) {
2559  return vhsub_s32(a, b);
2560}
2561
2562// CHECK: test_vhsub_u8
2563// CHECK: vhsub.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2564uint8x8_t test_vhsub_u8(uint8x8_t a, uint8x8_t b) {
2565  return vhsub_u8(a, b);
2566}
2567
2568// CHECK: test_vhsub_u16
2569// CHECK: vhsub.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2570uint16x4_t test_vhsub_u16(uint16x4_t a, uint16x4_t b) {
2571  return vhsub_u16(a, b);
2572}
2573
2574// CHECK: test_vhsub_u32
2575// CHECK: vhsub.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
2576uint32x2_t test_vhsub_u32(uint32x2_t a, uint32x2_t b) {
2577  return vhsub_u32(a, b);
2578}
2579
2580// CHECK: test_vhsubq_s8
2581// CHECK: vhsub.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2582int8x16_t test_vhsubq_s8(int8x16_t a, int8x16_t b) {
2583  return vhsubq_s8(a, b);
2584}
2585
2586// CHECK: test_vhsubq_s16
2587// CHECK: vhsub.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2588int16x8_t test_vhsubq_s16(int16x8_t a, int16x8_t b) {
2589  return vhsubq_s16(a, b);
2590}
2591
2592// CHECK: test_vhsubq_s32
2593// CHECK: vhsub.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2594int32x4_t test_vhsubq_s32(int32x4_t a, int32x4_t b) {
2595  return vhsubq_s32(a, b);
2596}
2597
2598// CHECK: test_vhsubq_u8
2599// CHECK: vhsub.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2600uint8x16_t test_vhsubq_u8(uint8x16_t a, uint8x16_t b) {
2601  return vhsubq_u8(a, b);
2602}
2603
2604// CHECK: test_vhsubq_u16
2605// CHECK: vhsub.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2606uint16x8_t test_vhsubq_u16(uint16x8_t a, uint16x8_t b) {
2607  return vhsubq_u16(a, b);
2608}
2609
2610// CHECK: test_vhsubq_u32
2611// CHECK: vhsub.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
2612uint32x4_t test_vhsubq_u32(uint32x4_t a, uint32x4_t b) {
2613  return vhsubq_u32(a, b);
2614}
2615
2616
2617// CHECK: test_vld1q_u8
2618// CHECK: vld1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2619uint8x16_t test_vld1q_u8(uint8_t const * a) {
2620  return vld1q_u8(a);
2621}
2622
2623// CHECK: test_vld1q_u16
2624// CHECK: vld1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2625uint16x8_t test_vld1q_u16(uint16_t const * a) {
2626  return vld1q_u16(a);
2627}
2628
2629// CHECK: test_vld1q_u32
2630// CHECK: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2631uint32x4_t test_vld1q_u32(uint32_t const * a) {
2632  return vld1q_u32(a);
2633}
2634
2635// CHECK: test_vld1q_u64
2636// CHECK: vld1.64 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2637uint64x2_t test_vld1q_u64(uint64_t const * a) {
2638  return vld1q_u64(a);
2639}
2640
2641// CHECK: test_vld1q_s8
2642// CHECK: vld1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2643int8x16_t test_vld1q_s8(int8_t const * a) {
2644  return vld1q_s8(a);
2645}
2646
2647// CHECK: test_vld1q_s16
2648// CHECK: vld1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2649int16x8_t test_vld1q_s16(int16_t const * a) {
2650  return vld1q_s16(a);
2651}
2652
2653// CHECK: test_vld1q_s32
2654// CHECK: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2655int32x4_t test_vld1q_s32(int32_t const * a) {
2656  return vld1q_s32(a);
2657}
2658
2659// CHECK: test_vld1q_s64
2660// CHECK: vld1.64 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2661int64x2_t test_vld1q_s64(int64_t const * a) {
2662  return vld1q_s64(a);
2663}
2664
2665// CHECK: test_vld1q_f16
2666// CHECK: vld1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2667float16x8_t test_vld1q_f16(float16_t const * a) {
2668  return vld1q_f16(a);
2669}
2670
2671// CHECK: test_vld1q_f32
2672// CHECK: vld1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2673float32x4_t test_vld1q_f32(float32_t const * a) {
2674  return vld1q_f32(a);
2675}
2676
2677// CHECK: test_vld1q_p8
2678// CHECK: vld1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2679poly8x16_t test_vld1q_p8(poly8_t const * a) {
2680  return vld1q_p8(a);
2681}
2682
2683// CHECK: test_vld1q_p16
2684// CHECK: vld1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
2685poly16x8_t test_vld1q_p16(poly16_t const * a) {
2686  return vld1q_p16(a);
2687}
2688
2689// CHECK: test_vld1_u8
2690// CHECK: vld1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2691uint8x8_t test_vld1_u8(uint8_t const * a) {
2692  return vld1_u8(a);
2693}
2694
2695// CHECK: test_vld1_u16
2696// CHECK: vld1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2697uint16x4_t test_vld1_u16(uint16_t const * a) {
2698  return vld1_u16(a);
2699}
2700
2701// CHECK: test_vld1_u32
2702// CHECK: vld1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2703uint32x2_t test_vld1_u32(uint32_t const * a) {
2704  return vld1_u32(a);
2705}
2706
2707// CHECK: test_vld1_u64
2708// CHECK: vld1.64 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2709uint64x1_t test_vld1_u64(uint64_t const * a) {
2710  return vld1_u64(a);
2711}
2712
2713// CHECK: test_vld1_s8
2714// CHECK: vld1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2715int8x8_t test_vld1_s8(int8_t const * a) {
2716  return vld1_s8(a);
2717}
2718
2719// CHECK: test_vld1_s16
2720// CHECK: vld1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2721int16x4_t test_vld1_s16(int16_t const * a) {
2722  return vld1_s16(a);
2723}
2724
2725// CHECK: test_vld1_s32
2726// CHECK: vld1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2727int32x2_t test_vld1_s32(int32_t const * a) {
2728  return vld1_s32(a);
2729}
2730
2731// CHECK: test_vld1_s64
2732// CHECK: vld1.64 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2733int64x1_t test_vld1_s64(int64_t const * a) {
2734  return vld1_s64(a);
2735}
2736
2737// CHECK: test_vld1_f16
2738// CHECK: vld1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2739float16x4_t test_vld1_f16(float16_t const * a) {
2740  return vld1_f16(a);
2741}
2742
2743// CHECK: test_vld1_f32
2744// CHECK: vld1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2745float32x2_t test_vld1_f32(float32_t const * a) {
2746  return vld1_f32(a);
2747}
2748
2749// CHECK: test_vld1_p8
2750// CHECK: vld1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2751poly8x8_t test_vld1_p8(poly8_t const * a) {
2752  return vld1_p8(a);
2753}
2754
2755// CHECK: test_vld1_p16
2756// CHECK: vld1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
2757poly16x4_t test_vld1_p16(poly16_t const * a) {
2758  return vld1_p16(a);
2759}
2760
2761
2762// CHECK: test_vld1q_dup_u8
2763// CHECK: vld1.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
2764uint8x16_t test_vld1q_dup_u8(uint8_t const * a) {
2765  return vld1q_dup_u8(a);
2766}
2767
2768// CHECK: test_vld1q_dup_u16
2769// CHECK: vld1.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
2770uint16x8_t test_vld1q_dup_u16(uint16_t const * a) {
2771  return vld1q_dup_u16(a);
2772}
2773
2774// CHECK: test_vld1q_dup_u32
2775// CHECK: vld1.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
2776uint32x4_t test_vld1q_dup_u32(uint32_t const * a) {
2777  return vld1q_dup_u32(a);
2778}
2779
2780// CHECK: test_vld1q_dup_u64
2781// CHECK: {{ldr|vldr|vmov}}
2782uint64x2_t test_vld1q_dup_u64(uint64_t const * a) {
2783  return vld1q_dup_u64(a);
2784}
2785
2786// CHECK: test_vld1q_dup_s8
2787// CHECK: vld1.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
2788int8x16_t test_vld1q_dup_s8(int8_t const * a) {
2789  return vld1q_dup_s8(a);
2790}
2791
2792// CHECK: test_vld1q_dup_s16
2793// CHECK: vld1.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
2794int16x8_t test_vld1q_dup_s16(int16_t const * a) {
2795  return vld1q_dup_s16(a);
2796}
2797
2798// CHECK: test_vld1q_dup_s32
2799// CHECK: vld1.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
2800int32x4_t test_vld1q_dup_s32(int32_t const * a) {
2801  return vld1q_dup_s32(a);
2802}
2803
2804// CHECK: test_vld1q_dup_s64
2805// CHECK: {{ldr|vldr|vmov}}
2806int64x2_t test_vld1q_dup_s64(int64_t const * a) {
2807  return vld1q_dup_s64(a);
2808}
2809
2810// CHECK: test_vld1q_dup_f16
2811// CHECK: vld1.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
2812float16x8_t test_vld1q_dup_f16(float16_t const * a) {
2813  return vld1q_dup_f16(a);
2814}
2815
2816// CHECK: test_vld1q_dup_f32
2817// CHECK: vld1.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
2818float32x4_t test_vld1q_dup_f32(float32_t const * a) {
2819  return vld1q_dup_f32(a);
2820}
2821
2822// CHECK: test_vld1q_dup_p8
2823// CHECK: vld1.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
2824poly8x16_t test_vld1q_dup_p8(poly8_t const * a) {
2825  return vld1q_dup_p8(a);
2826}
2827
2828// CHECK: test_vld1q_dup_p16
2829// CHECK: vld1.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
2830poly16x8_t test_vld1q_dup_p16(poly16_t const * a) {
2831  return vld1q_dup_p16(a);
2832}
2833
2834// CHECK: test_vld1_dup_u8
2835// CHECK: vld1.8 {d{{[0-9]+}}[]}, [r{{[0-9]+}}]
2836uint8x8_t test_vld1_dup_u8(uint8_t const * a) {
2837  return vld1_dup_u8(a);
2838}
2839
2840// CHECK: test_vld1_dup_u16
2841// CHECK: vld1.16 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
2842uint16x4_t test_vld1_dup_u16(uint16_t const * a) {
2843  return vld1_dup_u16(a);
2844}
2845
2846// CHECK: test_vld1_dup_u32
2847// CHECK: vld1.32 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
2848uint32x2_t test_vld1_dup_u32(uint32_t const * a) {
2849  return vld1_dup_u32(a);
2850}
2851
2852// CHECK: test_vld1_dup_u64
2853// CHECK: {{ldr|vldr|vmov}}
2854uint64x1_t test_vld1_dup_u64(uint64_t const * a) {
2855  return vld1_dup_u64(a);
2856}
2857
2858// CHECK: test_vld1_dup_s8
2859// CHECK: vld1.8 {d{{[0-9]+}}[]}, [r{{[0-9]+}}]
2860int8x8_t test_vld1_dup_s8(int8_t const * a) {
2861  return vld1_dup_s8(a);
2862}
2863
2864// CHECK: test_vld1_dup_s16
2865// CHECK: vld1.16 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
2866int16x4_t test_vld1_dup_s16(int16_t const * a) {
2867  return vld1_dup_s16(a);
2868}
2869
2870// CHECK: test_vld1_dup_s32
2871// CHECK: vld1.32 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
2872int32x2_t test_vld1_dup_s32(int32_t const * a) {
2873  return vld1_dup_s32(a);
2874}
2875
2876// CHECK: test_vld1_dup_s64
2877// CHECK: {{ldr|vldr|vmov}}
2878int64x1_t test_vld1_dup_s64(int64_t const * a) {
2879  return vld1_dup_s64(a);
2880}
2881
2882// CHECK: test_vld1_dup_f16
2883// CHECK: vld1.16 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
2884float16x4_t test_vld1_dup_f16(float16_t const * a) {
2885  return vld1_dup_f16(a);
2886}
2887
2888// CHECK: test_vld1_dup_f32
2889// CHECK: vld1.32 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:32]
2890float32x2_t test_vld1_dup_f32(float32_t const * a) {
2891  return vld1_dup_f32(a);
2892}
2893
2894// CHECK: test_vld1_dup_p8
2895// CHECK: vld1.8 {d{{[0-9]+}}[]}, [r{{[0-9]+}}]
2896poly8x8_t test_vld1_dup_p8(poly8_t const * a) {
2897  return vld1_dup_p8(a);
2898}
2899
2900// CHECK: test_vld1_dup_p16
2901// CHECK: vld1.16 {d{{[0-9]+}}[]}, [r{{[0-9]+}}:16]
2902poly16x4_t test_vld1_dup_p16(poly16_t const * a) {
2903  return vld1_dup_p16(a);
2904}
2905
2906
2907// CHECK: test_vld1q_lane_u8
2908// CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
2909uint8x16_t test_vld1q_lane_u8(uint8_t const * a, uint8x16_t b) {
2910  return vld1q_lane_u8(a, b, 15);
2911}
2912
2913// CHECK: test_vld1q_lane_u16
2914// CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
2915uint16x8_t test_vld1q_lane_u16(uint16_t const * a, uint16x8_t b) {
2916  return vld1q_lane_u16(a, b, 7);
2917}
2918
2919// CHECK: test_vld1q_lane_u32
2920// CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
2921uint32x4_t test_vld1q_lane_u32(uint32_t const * a, uint32x4_t b) {
2922  return vld1q_lane_u32(a, b, 3);
2923}
2924
2925// CHECK: test_vld1q_lane_u64
2926// CHECK: {{ldr|vldr|vmov}}
2927uint64x2_t test_vld1q_lane_u64(uint64_t const * a, uint64x2_t b) {
2928  return vld1q_lane_u64(a, b, 1);
2929}
2930
2931// CHECK: test_vld1q_lane_s8
2932// CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
2933int8x16_t test_vld1q_lane_s8(int8_t const * a, int8x16_t b) {
2934  return vld1q_lane_s8(a, b, 15);
2935}
2936
2937// CHECK: test_vld1q_lane_s16
2938// CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
2939int16x8_t test_vld1q_lane_s16(int16_t const * a, int16x8_t b) {
2940  return vld1q_lane_s16(a, b, 7);
2941}
2942
2943// CHECK: test_vld1q_lane_s32
2944// CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
2945int32x4_t test_vld1q_lane_s32(int32_t const * a, int32x4_t b) {
2946  return vld1q_lane_s32(a, b, 3);
2947}
2948
2949// CHECK: test_vld1q_lane_s64
2950// CHECK: {{ldr|vldr|vmov}}
2951int64x2_t test_vld1q_lane_s64(int64_t const * a, int64x2_t b) {
2952  return vld1q_lane_s64(a, b, 1);
2953}
2954
2955// CHECK: test_vld1q_lane_f16
2956// CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
2957float16x8_t test_vld1q_lane_f16(float16_t const * a, float16x8_t b) {
2958  return vld1q_lane_f16(a, b, 7);
2959}
2960
2961// CHECK: test_vld1q_lane_f32
2962// CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
2963float32x4_t test_vld1q_lane_f32(float32_t const * a, float32x4_t b) {
2964  return vld1q_lane_f32(a, b, 3);
2965}
2966
2967// CHECK: test_vld1q_lane_p8
2968// CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
2969poly8x16_t test_vld1q_lane_p8(poly8_t const * a, poly8x16_t b) {
2970  return vld1q_lane_p8(a, b, 15);
2971}
2972
2973// CHECK: test_vld1q_lane_p16
2974// CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
2975poly16x8_t test_vld1q_lane_p16(poly16_t const * a, poly16x8_t b) {
2976  return vld1q_lane_p16(a, b, 7);
2977}
2978
2979// CHECK: test_vld1_lane_u8
2980// CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
2981uint8x8_t test_vld1_lane_u8(uint8_t const * a, uint8x8_t b) {
2982  return vld1_lane_u8(a, b, 7);
2983}
2984
2985// CHECK: test_vld1_lane_u16
2986// CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
2987uint16x4_t test_vld1_lane_u16(uint16_t const * a, uint16x4_t b) {
2988  return vld1_lane_u16(a, b, 3);
2989}
2990
2991// CHECK: test_vld1_lane_u32
2992// CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
2993uint32x2_t test_vld1_lane_u32(uint32_t const * a, uint32x2_t b) {
2994  return vld1_lane_u32(a, b, 1);
2995}
2996
2997// CHECK: test_vld1_lane_u64
2998// CHECK: {{ldr|vldr|vmov}}
2999uint64x1_t test_vld1_lane_u64(uint64_t const * a, uint64x1_t b) {
3000  return vld1_lane_u64(a, b, 0);
3001}
3002
3003// CHECK: test_vld1_lane_s8
3004// CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3005int8x8_t test_vld1_lane_s8(int8_t const * a, int8x8_t b) {
3006  return vld1_lane_s8(a, b, 7);
3007}
3008
3009// CHECK: test_vld1_lane_s16
3010// CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
3011int16x4_t test_vld1_lane_s16(int16_t const * a, int16x4_t b) {
3012  return vld1_lane_s16(a, b, 3);
3013}
3014
3015// CHECK: test_vld1_lane_s32
3016// CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
3017int32x2_t test_vld1_lane_s32(int32_t const * a, int32x2_t b) {
3018  return vld1_lane_s32(a, b, 1);
3019}
3020
3021// CHECK: test_vld1_lane_s64
3022// CHECK: {{ldr|vldr|vmov}}
3023int64x1_t test_vld1_lane_s64(int64_t const * a, int64x1_t b) {
3024  return vld1_lane_s64(a, b, 0);
3025}
3026
3027// CHECK: test_vld1_lane_f16
3028// CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
3029float16x4_t test_vld1_lane_f16(float16_t const * a, float16x4_t b) {
3030  return vld1_lane_f16(a, b, 3);
3031}
3032
3033// CHECK: test_vld1_lane_f32
3034// CHECK: vld1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
3035float32x2_t test_vld1_lane_f32(float32_t const * a, float32x2_t b) {
3036  return vld1_lane_f32(a, b, 1);
3037}
3038
3039// CHECK: test_vld1_lane_p8
3040// CHECK: vld1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3041poly8x8_t test_vld1_lane_p8(poly8_t const * a, poly8x8_t b) {
3042  return vld1_lane_p8(a, b, 7);
3043}
3044
3045// CHECK: test_vld1_lane_p16
3046// CHECK: vld1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
3047poly16x4_t test_vld1_lane_p16(poly16_t const * a, poly16x4_t b) {
3048  return vld1_lane_p16(a, b, 3);
3049}
3050
3051
3052// CHECK: test_vld2q_u8
3053// CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3054uint8x16x2_t test_vld2q_u8(uint8_t const * a) {
3055  return vld2q_u8(a);
3056}
3057
3058// CHECK: test_vld2q_u16
3059// CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3060uint16x8x2_t test_vld2q_u16(uint16_t const * a) {
3061  return vld2q_u16(a);
3062}
3063
3064// CHECK: test_vld2q_u32
3065// CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3066uint32x4x2_t test_vld2q_u32(uint32_t const * a) {
3067  return vld2q_u32(a);
3068}
3069
3070// CHECK: test_vld2q_s8
3071// CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3072int8x16x2_t test_vld2q_s8(int8_t const * a) {
3073  return vld2q_s8(a);
3074}
3075
3076// CHECK: test_vld2q_s16
3077// CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3078int16x8x2_t test_vld2q_s16(int16_t const * a) {
3079  return vld2q_s16(a);
3080}
3081
3082// CHECK: test_vld2q_s32
3083// CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3084int32x4x2_t test_vld2q_s32(int32_t const * a) {
3085  return vld2q_s32(a);
3086}
3087
3088// CHECK: test_vld2q_f16
3089// CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3090float16x8x2_t test_vld2q_f16(float16_t const * a) {
3091  return vld2q_f16(a);
3092}
3093
3094// CHECK: test_vld2q_f32
3095// CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3096float32x4x2_t test_vld2q_f32(float32_t const * a) {
3097  return vld2q_f32(a);
3098}
3099
3100// CHECK: test_vld2q_p8
3101// CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3102poly8x16x2_t test_vld2q_p8(poly8_t const * a) {
3103  return vld2q_p8(a);
3104}
3105
3106// CHECK: test_vld2q_p16
3107// CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3108poly16x8x2_t test_vld2q_p16(poly16_t const * a) {
3109  return vld2q_p16(a);
3110}
3111
3112// CHECK: test_vld2_u8
3113// CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3114uint8x8x2_t test_vld2_u8(uint8_t const * a) {
3115  return vld2_u8(a);
3116}
3117
3118// CHECK: test_vld2_u16
3119// CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3120uint16x4x2_t test_vld2_u16(uint16_t const * a) {
3121  return vld2_u16(a);
3122}
3123
3124// CHECK: test_vld2_u32
3125// CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3126uint32x2x2_t test_vld2_u32(uint32_t const * a) {
3127  return vld2_u32(a);
3128}
3129
3130// CHECK: test_vld2_u64
3131// CHECK: vld1.64
3132uint64x1x2_t test_vld2_u64(uint64_t const * a) {
3133  return vld2_u64(a);
3134}
3135
3136// CHECK: test_vld2_s8
3137// CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3138int8x8x2_t test_vld2_s8(int8_t const * a) {
3139  return vld2_s8(a);
3140}
3141
3142// CHECK: test_vld2_s16
3143// CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3144int16x4x2_t test_vld2_s16(int16_t const * a) {
3145  return vld2_s16(a);
3146}
3147
3148// CHECK: test_vld2_s32
3149// CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3150int32x2x2_t test_vld2_s32(int32_t const * a) {
3151  return vld2_s32(a);
3152}
3153
3154// CHECK: test_vld2_s64
3155// CHECK: vld1.64
3156int64x1x2_t test_vld2_s64(int64_t const * a) {
3157  return vld2_s64(a);
3158}
3159
3160// CHECK: test_vld2_f16
3161// CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3162float16x4x2_t test_vld2_f16(float16_t const * a) {
3163  return vld2_f16(a);
3164}
3165
3166// CHECK: test_vld2_f32
3167// CHECK: vld2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3168float32x2x2_t test_vld2_f32(float32_t const * a) {
3169  return vld2_f32(a);
3170}
3171
3172// CHECK: test_vld2_p8
3173// CHECK: vld2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3174poly8x8x2_t test_vld2_p8(poly8_t const * a) {
3175  return vld2_p8(a);
3176}
3177
3178// CHECK: test_vld2_p16
3179// CHECK: vld2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3180poly16x4x2_t test_vld2_p16(poly16_t const * a) {
3181  return vld2_p16(a);
3182}
3183
3184
3185// CHECK: test_vld2_dup_u8
3186// CHECK: vld2.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3187uint8x8x2_t test_vld2_dup_u8(uint8_t const * a) {
3188  return vld2_dup_u8(a);
3189}
3190
3191// CHECK: test_vld2_dup_u16
3192// CHECK: vld2.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3193uint16x4x2_t test_vld2_dup_u16(uint16_t const * a) {
3194  return vld2_dup_u16(a);
3195}
3196
3197// CHECK: test_vld2_dup_u32
3198// CHECK: vld2.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3199uint32x2x2_t test_vld2_dup_u32(uint32_t const * a) {
3200  return vld2_dup_u32(a);
3201}
3202
3203// CHECK: test_vld2_dup_u64
3204// CHECK: vld1.64
3205uint64x1x2_t test_vld2_dup_u64(uint64_t const * a) {
3206  return vld2_dup_u64(a);
3207}
3208
3209// CHECK: test_vld2_dup_s8
3210// CHECK: vld2.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3211int8x8x2_t test_vld2_dup_s8(int8_t const * a) {
3212  return vld2_dup_s8(a);
3213}
3214
3215// CHECK: test_vld2_dup_s16
3216// CHECK: vld2.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3217int16x4x2_t test_vld2_dup_s16(int16_t const * a) {
3218  return vld2_dup_s16(a);
3219}
3220
3221// CHECK: test_vld2_dup_s32
3222// CHECK: vld2.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3223int32x2x2_t test_vld2_dup_s32(int32_t const * a) {
3224  return vld2_dup_s32(a);
3225}
3226
3227// CHECK: test_vld2_dup_s64
3228// CHECK: vld1.64
3229int64x1x2_t test_vld2_dup_s64(int64_t const * a) {
3230  return vld2_dup_s64(a);
3231}
3232
3233// CHECK: test_vld2_dup_f16
3234// CHECK: vld2.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3235float16x4x2_t test_vld2_dup_f16(float16_t const * a) {
3236  return vld2_dup_f16(a);
3237}
3238
3239// CHECK: test_vld2_dup_f32
3240// CHECK: vld2.32 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3241float32x2x2_t test_vld2_dup_f32(float32_t const * a) {
3242  return vld2_dup_f32(a);
3243}
3244
3245// CHECK: test_vld2_dup_p8
3246// CHECK: vld2.8 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3247poly8x8x2_t test_vld2_dup_p8(poly8_t const * a) {
3248  return vld2_dup_p8(a);
3249}
3250
3251// CHECK: test_vld2_dup_p16
3252// CHECK: vld2.16 {d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3253poly16x4x2_t test_vld2_dup_p16(poly16_t const * a) {
3254  return vld2_dup_p16(a);
3255}
3256
3257
3258// CHECK: test_vld2q_lane_u16
3259// CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3260uint16x8x2_t test_vld2q_lane_u16(uint16_t const * a, uint16x8x2_t b) {
3261  return vld2q_lane_u16(a, b, 7);
3262}
3263
3264// CHECK: test_vld2q_lane_u32
3265// CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3266uint32x4x2_t test_vld2q_lane_u32(uint32_t const * a, uint32x4x2_t b) {
3267  return vld2q_lane_u32(a, b, 3);
3268}
3269
3270// CHECK: test_vld2q_lane_s16
3271// CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3272int16x8x2_t test_vld2q_lane_s16(int16_t const * a, int16x8x2_t b) {
3273  return vld2q_lane_s16(a, b, 7);
3274}
3275
3276// CHECK: test_vld2q_lane_s32
3277// CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3278int32x4x2_t test_vld2q_lane_s32(int32_t const * a, int32x4x2_t b) {
3279  return vld2q_lane_s32(a, b, 3);
3280}
3281
3282// CHECK: test_vld2q_lane_f16
3283// CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3284float16x8x2_t test_vld2q_lane_f16(float16_t const * a, float16x8x2_t b) {
3285  return vld2q_lane_f16(a, b, 7);
3286}
3287
3288// CHECK: test_vld2q_lane_f32
3289// CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3290float32x4x2_t test_vld2q_lane_f32(float32_t const * a, float32x4x2_t b) {
3291  return vld2q_lane_f32(a, b, 3);
3292}
3293
3294// CHECK: test_vld2q_lane_p16
3295// CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3296poly16x8x2_t test_vld2q_lane_p16(poly16_t const * a, poly16x8x2_t b) {
3297  return vld2q_lane_p16(a, b, 7);
3298}
3299
3300// CHECK: test_vld2_lane_u8
3301// CHECK: vld2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3302uint8x8x2_t test_vld2_lane_u8(uint8_t const * a, uint8x8x2_t b) {
3303  return vld2_lane_u8(a, b, 7);
3304}
3305
3306// CHECK: test_vld2_lane_u16
3307// CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3308uint16x4x2_t test_vld2_lane_u16(uint16_t const * a, uint16x4x2_t b) {
3309  return vld2_lane_u16(a, b, 3);
3310}
3311
3312// CHECK: test_vld2_lane_u32
3313// CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3314uint32x2x2_t test_vld2_lane_u32(uint32_t const * a, uint32x2x2_t b) {
3315  return vld2_lane_u32(a, b, 1);
3316}
3317
3318// CHECK: test_vld2_lane_s8
3319// CHECK: vld2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3320int8x8x2_t test_vld2_lane_s8(int8_t const * a, int8x8x2_t b) {
3321  return vld2_lane_s8(a, b, 7);
3322}
3323
3324// CHECK: test_vld2_lane_s16
3325// CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3326int16x4x2_t test_vld2_lane_s16(int16_t const * a, int16x4x2_t b) {
3327  return vld2_lane_s16(a, b, 3);
3328}
3329
3330// CHECK: test_vld2_lane_s32
3331// CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3332int32x2x2_t test_vld2_lane_s32(int32_t const * a, int32x2x2_t b) {
3333  return vld2_lane_s32(a, b, 1);
3334}
3335
3336// CHECK: test_vld2_lane_f16
3337// CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3338float16x4x2_t test_vld2_lane_f16(float16_t const * a, float16x4x2_t b) {
3339  return vld2_lane_f16(a, b, 3);
3340}
3341
3342// CHECK: test_vld2_lane_f32
3343// CHECK: vld2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3344float32x2x2_t test_vld2_lane_f32(float32_t const * a, float32x2x2_t b) {
3345  return vld2_lane_f32(a, b, 1);
3346}
3347
3348// CHECK: test_vld2_lane_p8
3349// CHECK: vld2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3350poly8x8x2_t test_vld2_lane_p8(poly8_t const * a, poly8x8x2_t b) {
3351  return vld2_lane_p8(a, b, 7);
3352}
3353
3354// CHECK: test_vld2_lane_p16
3355// CHECK: vld2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3356poly16x4x2_t test_vld2_lane_p16(poly16_t const * a, poly16x4x2_t b) {
3357  return vld2_lane_p16(a, b, 3);
3358}
3359
3360
3361// CHECK: test_vld3q_u8
3362// CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3363uint8x16x3_t test_vld3q_u8(uint8_t const * a) {
3364  return vld3q_u8(a);
3365}
3366
3367// CHECK: test_vld3q_u16
3368// CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3369uint16x8x3_t test_vld3q_u16(uint16_t const * a) {
3370  return vld3q_u16(a);
3371}
3372
3373// CHECK: test_vld3q_u32
3374// CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3375uint32x4x3_t test_vld3q_u32(uint32_t const * a) {
3376  return vld3q_u32(a);
3377}
3378
3379// CHECK: test_vld3q_s8
3380// CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3381int8x16x3_t test_vld3q_s8(int8_t const * a) {
3382  return vld3q_s8(a);
3383}
3384
3385// CHECK: test_vld3q_s16
3386// CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3387int16x8x3_t test_vld3q_s16(int16_t const * a) {
3388  return vld3q_s16(a);
3389}
3390
3391// CHECK: test_vld3q_s32
3392// CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3393int32x4x3_t test_vld3q_s32(int32_t const * a) {
3394  return vld3q_s32(a);
3395}
3396
3397// CHECK: test_vld3q_f16
3398// CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3399float16x8x3_t test_vld3q_f16(float16_t const * a) {
3400  return vld3q_f16(a);
3401}
3402
3403// CHECK: test_vld3q_f32
3404// CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3405float32x4x3_t test_vld3q_f32(float32_t const * a) {
3406  return vld3q_f32(a);
3407}
3408
3409// CHECK: test_vld3q_p8
3410// CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3411poly8x16x3_t test_vld3q_p8(poly8_t const * a) {
3412  return vld3q_p8(a);
3413}
3414
3415// CHECK: test_vld3q_p16
3416// CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3417poly16x8x3_t test_vld3q_p16(poly16_t const * a) {
3418  return vld3q_p16(a);
3419}
3420
3421// CHECK: test_vld3_u8
3422// CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3423uint8x8x3_t test_vld3_u8(uint8_t const * a) {
3424  return vld3_u8(a);
3425}
3426
3427// CHECK: test_vld3_u16
3428// CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3429uint16x4x3_t test_vld3_u16(uint16_t const * a) {
3430  return vld3_u16(a);
3431}
3432
3433// CHECK: test_vld3_u32
3434// CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3435uint32x2x3_t test_vld3_u32(uint32_t const * a) {
3436  return vld3_u32(a);
3437}
3438
3439// CHECK: test_vld3_u64
3440// CHECK: vld1.64
3441uint64x1x3_t test_vld3_u64(uint64_t const * a) {
3442  return vld3_u64(a);
3443}
3444
3445// CHECK: test_vld3_s8
3446// CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3447int8x8x3_t test_vld3_s8(int8_t const * a) {
3448  return vld3_s8(a);
3449}
3450
3451// CHECK: test_vld3_s16
3452// CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3453int16x4x3_t test_vld3_s16(int16_t const * a) {
3454  return vld3_s16(a);
3455}
3456
3457// CHECK: test_vld3_s32
3458// CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3459int32x2x3_t test_vld3_s32(int32_t const * a) {
3460  return vld3_s32(a);
3461}
3462
3463// CHECK: test_vld3_s64
3464// CHECK: vld1.64
3465int64x1x3_t test_vld3_s64(int64_t const * a) {
3466  return vld3_s64(a);
3467}
3468
3469// CHECK: test_vld3_f16
3470// CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3471float16x4x3_t test_vld3_f16(float16_t const * a) {
3472  return vld3_f16(a);
3473}
3474
3475// CHECK: test_vld3_f32
3476// CHECK: vld3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3477float32x2x3_t test_vld3_f32(float32_t const * a) {
3478  return vld3_f32(a);
3479}
3480
3481// CHECK: test_vld3_p8
3482// CHECK: vld3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3483poly8x8x3_t test_vld3_p8(poly8_t const * a) {
3484  return vld3_p8(a);
3485}
3486
3487// CHECK: test_vld3_p16
3488// CHECK: vld3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3489poly16x4x3_t test_vld3_p16(poly16_t const * a) {
3490  return vld3_p16(a);
3491}
3492
3493
3494// CHECK: test_vld3_dup_u8
3495// CHECK: vld3.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3496uint8x8x3_t test_vld3_dup_u8(uint8_t const * a) {
3497  return vld3_dup_u8(a);
3498}
3499
3500// CHECK: test_vld3_dup_u16
3501// CHECK: vld3.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3502uint16x4x3_t test_vld3_dup_u16(uint16_t const * a) {
3503  return vld3_dup_u16(a);
3504}
3505
3506// CHECK: test_vld3_dup_u32
3507// CHECK: vld3.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3508uint32x2x3_t test_vld3_dup_u32(uint32_t const * a) {
3509  return vld3_dup_u32(a);
3510}
3511
3512// CHECK: test_vld3_dup_u64
3513// CHECK: vld1.64
3514uint64x1x3_t test_vld3_dup_u64(uint64_t const * a) {
3515  return vld3_dup_u64(a);
3516}
3517
3518// CHECK: test_vld3_dup_s8
3519// CHECK: vld3.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3520int8x8x3_t test_vld3_dup_s8(int8_t const * a) {
3521  return vld3_dup_s8(a);
3522}
3523
3524// CHECK: test_vld3_dup_s16
3525// CHECK: vld3.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3526int16x4x3_t test_vld3_dup_s16(int16_t const * a) {
3527  return vld3_dup_s16(a);
3528}
3529
3530// CHECK: test_vld3_dup_s32
3531// CHECK: vld3.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3532int32x2x3_t test_vld3_dup_s32(int32_t const * a) {
3533  return vld3_dup_s32(a);
3534}
3535
3536// CHECK: test_vld3_dup_s64
3537// CHECK: vld1.64
3538int64x1x3_t test_vld3_dup_s64(int64_t const * a) {
3539  return vld3_dup_s64(a);
3540}
3541
3542// CHECK: test_vld3_dup_f16
3543// CHECK: vld3.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3544float16x4x3_t test_vld3_dup_f16(float16_t const * a) {
3545  return vld3_dup_f16(a);
3546}
3547
3548// CHECK: test_vld3_dup_f32
3549// CHECK: vld3.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3550float32x2x3_t test_vld3_dup_f32(float32_t const * a) {
3551  return vld3_dup_f32(a);
3552}
3553
3554// CHECK: test_vld3_dup_p8
3555// CHECK: vld3.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3556poly8x8x3_t test_vld3_dup_p8(poly8_t const * a) {
3557  return vld3_dup_p8(a);
3558}
3559
3560// CHECK: test_vld3_dup_p16
3561// CHECK: vld3.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3562poly16x4x3_t test_vld3_dup_p16(poly16_t const * a) {
3563  return vld3_dup_p16(a);
3564}
3565
3566
3567// CHECK: test_vld3q_lane_u16
3568// CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3569uint16x8x3_t test_vld3q_lane_u16(uint16_t const * a, uint16x8x3_t b) {
3570  return vld3q_lane_u16(a, b, 7);
3571}
3572
3573// CHECK: test_vld3q_lane_u32
3574// CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3575uint32x4x3_t test_vld3q_lane_u32(uint32_t const * a, uint32x4x3_t b) {
3576  return vld3q_lane_u32(a, b, 3);
3577}
3578
3579// CHECK: test_vld3q_lane_s16
3580// CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3581int16x8x3_t test_vld3q_lane_s16(int16_t const * a, int16x8x3_t b) {
3582  return vld3q_lane_s16(a, b, 7);
3583}
3584
3585// CHECK: test_vld3q_lane_s32
3586// CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3587int32x4x3_t test_vld3q_lane_s32(int32_t const * a, int32x4x3_t b) {
3588  return vld3q_lane_s32(a, b, 3);
3589}
3590
3591// CHECK: test_vld3q_lane_f16
3592// CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3593float16x8x3_t test_vld3q_lane_f16(float16_t const * a, float16x8x3_t b) {
3594  return vld3q_lane_f16(a, b, 7);
3595}
3596
3597// CHECK: test_vld3q_lane_f32
3598// CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3599float32x4x3_t test_vld3q_lane_f32(float32_t const * a, float32x4x3_t b) {
3600  return vld3q_lane_f32(a, b, 3);
3601}
3602
3603// CHECK: test_vld3q_lane_p16
3604// CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3605poly16x8x3_t test_vld3q_lane_p16(poly16_t const * a, poly16x8x3_t b) {
3606  return vld3q_lane_p16(a, b, 7);
3607}
3608
3609// CHECK: test_vld3_lane_u8
3610// CHECK: vld3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3611uint8x8x3_t test_vld3_lane_u8(uint8_t const * a, uint8x8x3_t b) {
3612  return vld3_lane_u8(a, b, 7);
3613}
3614
3615// CHECK: test_vld3_lane_u16
3616// CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3617uint16x4x3_t test_vld3_lane_u16(uint16_t const * a, uint16x4x3_t b) {
3618  return vld3_lane_u16(a, b, 3);
3619}
3620
3621// CHECK: test_vld3_lane_u32
3622// CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3623uint32x2x3_t test_vld3_lane_u32(uint32_t const * a, uint32x2x3_t b) {
3624  return vld3_lane_u32(a, b, 1);
3625}
3626
3627// CHECK: test_vld3_lane_s8
3628// CHECK: vld3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3629int8x8x3_t test_vld3_lane_s8(int8_t const * a, int8x8x3_t b) {
3630  return vld3_lane_s8(a, b, 7);
3631}
3632
3633// CHECK: test_vld3_lane_s16
3634// CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3635int16x4x3_t test_vld3_lane_s16(int16_t const * a, int16x4x3_t b) {
3636  return vld3_lane_s16(a, b, 3);
3637}
3638
3639// CHECK: test_vld3_lane_s32
3640// CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3641int32x2x3_t test_vld3_lane_s32(int32_t const * a, int32x2x3_t b) {
3642  return vld3_lane_s32(a, b, 1);
3643}
3644
3645// CHECK: test_vld3_lane_f16
3646// CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3647float16x4x3_t test_vld3_lane_f16(float16_t const * a, float16x4x3_t b) {
3648  return vld3_lane_f16(a, b, 3);
3649}
3650
3651// CHECK: test_vld3_lane_f32
3652// CHECK: vld3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3653float32x2x3_t test_vld3_lane_f32(float32_t const * a, float32x2x3_t b) {
3654  return vld3_lane_f32(a, b, 1);
3655}
3656
3657// CHECK: test_vld3_lane_p8
3658// CHECK: vld3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3659poly8x8x3_t test_vld3_lane_p8(poly8_t const * a, poly8x8x3_t b) {
3660  return vld3_lane_p8(a, b, 7);
3661}
3662
3663// CHECK: test_vld3_lane_p16
3664// CHECK: vld3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3665poly16x4x3_t test_vld3_lane_p16(poly16_t const * a, poly16x4x3_t b) {
3666  return vld3_lane_p16(a, b, 3);
3667}
3668
3669
3670// CHECK: test_vld4q_u8
3671// CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3672uint8x16x4_t test_vld4q_u8(uint8_t const * a) {
3673  return vld4q_u8(a);
3674}
3675
3676// CHECK: test_vld4q_u16
3677// CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3678uint16x8x4_t test_vld4q_u16(uint16_t const * a) {
3679  return vld4q_u16(a);
3680}
3681
3682// CHECK: test_vld4q_u32
3683// CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3684uint32x4x4_t test_vld4q_u32(uint32_t const * a) {
3685  return vld4q_u32(a);
3686}
3687
3688// CHECK: test_vld4q_s8
3689// CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3690int8x16x4_t test_vld4q_s8(int8_t const * a) {
3691  return vld4q_s8(a);
3692}
3693
3694// CHECK: test_vld4q_s16
3695// CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3696int16x8x4_t test_vld4q_s16(int16_t const * a) {
3697  return vld4q_s16(a);
3698}
3699
3700// CHECK: test_vld4q_s32
3701// CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3702int32x4x4_t test_vld4q_s32(int32_t const * a) {
3703  return vld4q_s32(a);
3704}
3705
3706// CHECK: test_vld4q_f16
3707// CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3708float16x8x4_t test_vld4q_f16(float16_t const * a) {
3709  return vld4q_f16(a);
3710}
3711
3712// CHECK: test_vld4q_f32
3713// CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3714float32x4x4_t test_vld4q_f32(float32_t const * a) {
3715  return vld4q_f32(a);
3716}
3717
3718// CHECK: test_vld4q_p8
3719// CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3720poly8x16x4_t test_vld4q_p8(poly8_t const * a) {
3721  return vld4q_p8(a);
3722}
3723
3724// CHECK: test_vld4q_p16
3725// CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
3726poly16x8x4_t test_vld4q_p16(poly16_t const * a) {
3727  return vld4q_p16(a);
3728}
3729
3730// CHECK: test_vld4_u8
3731// CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3732uint8x8x4_t test_vld4_u8(uint8_t const * a) {
3733  return vld4_u8(a);
3734}
3735
3736// CHECK: test_vld4_u16
3737// CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3738uint16x4x4_t test_vld4_u16(uint16_t const * a) {
3739  return vld4_u16(a);
3740}
3741
3742// CHECK: test_vld4_u32
3743// CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3744uint32x2x4_t test_vld4_u32(uint32_t const * a) {
3745  return vld4_u32(a);
3746}
3747
3748// CHECK: test_vld4_u64
3749// CHECK: vld1.64
3750uint64x1x4_t test_vld4_u64(uint64_t const * a) {
3751  return vld4_u64(a);
3752}
3753
3754// CHECK: test_vld4_s8
3755// CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3756int8x8x4_t test_vld4_s8(int8_t const * a) {
3757  return vld4_s8(a);
3758}
3759
3760// CHECK: test_vld4_s16
3761// CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3762int16x4x4_t test_vld4_s16(int16_t const * a) {
3763  return vld4_s16(a);
3764}
3765
3766// CHECK: test_vld4_s32
3767// CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3768int32x2x4_t test_vld4_s32(int32_t const * a) {
3769  return vld4_s32(a);
3770}
3771
3772// CHECK: test_vld4_s64
3773// CHECK: vld1.64
3774int64x1x4_t test_vld4_s64(int64_t const * a) {
3775  return vld4_s64(a);
3776}
3777
3778// CHECK: test_vld4_f16
3779// CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3780float16x4x4_t test_vld4_f16(float16_t const * a) {
3781  return vld4_f16(a);
3782}
3783
3784// CHECK: test_vld4_f32
3785// CHECK: vld4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3786float32x2x4_t test_vld4_f32(float32_t const * a) {
3787  return vld4_f32(a);
3788}
3789
3790// CHECK: test_vld4_p8
3791// CHECK: vld4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3792poly8x8x4_t test_vld4_p8(poly8_t const * a) {
3793  return vld4_p8(a);
3794}
3795
3796// CHECK: test_vld4_p16
3797// CHECK: vld4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
3798poly16x4x4_t test_vld4_p16(poly16_t const * a) {
3799  return vld4_p16(a);
3800}
3801
3802
3803// CHECK: test_vld4_dup_u8
3804// CHECK: vld4.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3805uint8x8x4_t test_vld4_dup_u8(uint8_t const * a) {
3806  return vld4_dup_u8(a);
3807}
3808
3809// CHECK: test_vld4_dup_u16
3810// CHECK: vld4.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3811uint16x4x4_t test_vld4_dup_u16(uint16_t const * a) {
3812  return vld4_dup_u16(a);
3813}
3814
3815// CHECK: test_vld4_dup_u32
3816// CHECK: vld4.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3817uint32x2x4_t test_vld4_dup_u32(uint32_t const * a) {
3818  return vld4_dup_u32(a);
3819}
3820
3821// CHECK: test_vld4_dup_u64
3822// CHECK: vld1.64
3823uint64x1x4_t test_vld4_dup_u64(uint64_t const * a) {
3824  return vld4_dup_u64(a);
3825}
3826
3827// CHECK: test_vld4_dup_s8
3828// CHECK: vld4.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3829int8x8x4_t test_vld4_dup_s8(int8_t const * a) {
3830  return vld4_dup_s8(a);
3831}
3832
3833// CHECK: test_vld4_dup_s16
3834// CHECK: vld4.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3835int16x4x4_t test_vld4_dup_s16(int16_t const * a) {
3836  return vld4_dup_s16(a);
3837}
3838
3839// CHECK: test_vld4_dup_s32
3840// CHECK: vld4.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3841int32x2x4_t test_vld4_dup_s32(int32_t const * a) {
3842  return vld4_dup_s32(a);
3843}
3844
3845// CHECK: test_vld4_dup_s64
3846// CHECK: vld1.64
3847int64x1x4_t test_vld4_dup_s64(int64_t const * a) {
3848  return vld4_dup_s64(a);
3849}
3850
3851// CHECK: test_vld4_dup_f16
3852// CHECK: vld4.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3853float16x4x4_t test_vld4_dup_f16(float16_t const * a) {
3854  return vld4_dup_f16(a);
3855}
3856
3857// CHECK: test_vld4_dup_f32
3858// CHECK: vld4.32 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3859float32x2x4_t test_vld4_dup_f32(float32_t const * a) {
3860  return vld4_dup_f32(a);
3861}
3862
3863// CHECK: test_vld4_dup_p8
3864// CHECK: vld4.8 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3865poly8x8x4_t test_vld4_dup_p8(poly8_t const * a) {
3866  return vld4_dup_p8(a);
3867}
3868
3869// CHECK: test_vld4_dup_p16
3870// CHECK: vld4.16 {d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[], d{{[0-9]+}}[]}, [r{{[0-9]+}}]
3871poly16x4x4_t test_vld4_dup_p16(poly16_t const * a) {
3872  return vld4_dup_p16(a);
3873}
3874
3875
3876// CHECK: test_vld4q_lane_u16
3877// CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3878uint16x8x4_t test_vld4q_lane_u16(uint16_t const * a, uint16x8x4_t b) {
3879  return vld4q_lane_u16(a, b, 7);
3880}
3881
3882// CHECK: test_vld4q_lane_u32
3883// CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3884uint32x4x4_t test_vld4q_lane_u32(uint32_t const * a, uint32x4x4_t b) {
3885  return vld4q_lane_u32(a, b, 3);
3886}
3887
3888// CHECK: test_vld4q_lane_s16
3889// CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3890int16x8x4_t test_vld4q_lane_s16(int16_t const * a, int16x8x4_t b) {
3891  return vld4q_lane_s16(a, b, 7);
3892}
3893
3894// CHECK: test_vld4q_lane_s32
3895// CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3896int32x4x4_t test_vld4q_lane_s32(int32_t const * a, int32x4x4_t b) {
3897  return vld4q_lane_s32(a, b, 3);
3898}
3899
3900// CHECK: test_vld4q_lane_f16
3901// CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3902float16x8x4_t test_vld4q_lane_f16(float16_t const * a, float16x8x4_t b) {
3903  return vld4q_lane_f16(a, b, 7);
3904}
3905
3906// CHECK: test_vld4q_lane_f32
3907// CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3908float32x4x4_t test_vld4q_lane_f32(float32_t const * a, float32x4x4_t b) {
3909  return vld4q_lane_f32(a, b, 3);
3910}
3911
3912// CHECK: test_vld4q_lane_p16
3913// CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
3914poly16x8x4_t test_vld4q_lane_p16(poly16_t const * a, poly16x8x4_t b) {
3915  return vld4q_lane_p16(a, b, 7);
3916}
3917
3918// CHECK: test_vld4_lane_u8
3919// CHECK: vld4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3920uint8x8x4_t test_vld4_lane_u8(uint8_t const * a, uint8x8x4_t b) {
3921  return vld4_lane_u8(a, b, 7);
3922}
3923
3924// CHECK: test_vld4_lane_u16
3925// CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3926uint16x4x4_t test_vld4_lane_u16(uint16_t const * a, uint16x4x4_t b) {
3927  return vld4_lane_u16(a, b, 3);
3928}
3929
3930// CHECK: test_vld4_lane_u32
3931// CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3932uint32x2x4_t test_vld4_lane_u32(uint32_t const * a, uint32x2x4_t b) {
3933  return vld4_lane_u32(a, b, 1);
3934}
3935
3936// CHECK: test_vld4_lane_s8
3937// CHECK: vld4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3938int8x8x4_t test_vld4_lane_s8(int8_t const * a, int8x8x4_t b) {
3939  return vld4_lane_s8(a, b, 7);
3940}
3941
3942// CHECK: test_vld4_lane_s16
3943// CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3944int16x4x4_t test_vld4_lane_s16(int16_t const * a, int16x4x4_t b) {
3945  return vld4_lane_s16(a, b, 3);
3946}
3947
3948// CHECK: test_vld4_lane_s32
3949// CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3950int32x2x4_t test_vld4_lane_s32(int32_t const * a, int32x2x4_t b) {
3951  return vld4_lane_s32(a, b, 1);
3952}
3953
3954// CHECK: test_vld4_lane_f16
3955// CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3956float16x4x4_t test_vld4_lane_f16(float16_t const * a, float16x4x4_t b) {
3957  return vld4_lane_f16(a, b, 3);
3958}
3959
3960// CHECK: test_vld4_lane_f32
3961// CHECK: vld4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3962float32x2x4_t test_vld4_lane_f32(float32_t const * a, float32x2x4_t b) {
3963  return vld4_lane_f32(a, b, 1);
3964}
3965
3966// CHECK: test_vld4_lane_p8
3967// CHECK: vld4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3968poly8x8x4_t test_vld4_lane_p8(poly8_t const * a, poly8x8x4_t b) {
3969  return vld4_lane_p8(a, b, 7);
3970}
3971
3972// CHECK: test_vld4_lane_p16
3973// CHECK: vld4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
3974poly16x4x4_t test_vld4_lane_p16(poly16_t const * a, poly16x4x4_t b) {
3975  return vld4_lane_p16(a, b, 3);
3976}
3977
3978
3979// CHECK: test_vmax_s8
3980// CHECK: vmax.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
3981int8x8_t test_vmax_s8(int8x8_t a, int8x8_t b) {
3982  return vmax_s8(a, b);
3983}
3984
3985// CHECK: test_vmax_s16
3986// CHECK: vmax.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
3987int16x4_t test_vmax_s16(int16x4_t a, int16x4_t b) {
3988  return vmax_s16(a, b);
3989}
3990
3991// CHECK: test_vmax_s32
3992// CHECK: vmax.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
3993int32x2_t test_vmax_s32(int32x2_t a, int32x2_t b) {
3994  return vmax_s32(a, b);
3995}
3996
3997// CHECK: test_vmax_u8
3998// CHECK: vmax.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
3999uint8x8_t test_vmax_u8(uint8x8_t a, uint8x8_t b) {
4000  return vmax_u8(a, b);
4001}
4002
4003// CHECK: test_vmax_u16
4004// CHECK: vmax.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4005uint16x4_t test_vmax_u16(uint16x4_t a, uint16x4_t b) {
4006  return vmax_u16(a, b);
4007}
4008
4009// CHECK: test_vmax_u32
4010// CHECK: vmax.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4011uint32x2_t test_vmax_u32(uint32x2_t a, uint32x2_t b) {
4012  return vmax_u32(a, b);
4013}
4014
4015// CHECK: test_vmax_f32
4016// CHECK: vmax.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4017float32x2_t test_vmax_f32(float32x2_t a, float32x2_t b) {
4018  return vmax_f32(a, b);
4019}
4020
4021// CHECK: test_vmaxq_s8
4022// CHECK: vmax.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4023int8x16_t test_vmaxq_s8(int8x16_t a, int8x16_t b) {
4024  return vmaxq_s8(a, b);
4025}
4026
4027// CHECK: test_vmaxq_s16
4028// CHECK: vmax.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4029int16x8_t test_vmaxq_s16(int16x8_t a, int16x8_t b) {
4030  return vmaxq_s16(a, b);
4031}
4032
4033// CHECK: test_vmaxq_s32
4034// CHECK: vmax.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4035int32x4_t test_vmaxq_s32(int32x4_t a, int32x4_t b) {
4036  return vmaxq_s32(a, b);
4037}
4038
4039// CHECK: test_vmaxq_u8
4040// CHECK: vmax.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4041uint8x16_t test_vmaxq_u8(uint8x16_t a, uint8x16_t b) {
4042  return vmaxq_u8(a, b);
4043}
4044
4045// CHECK: test_vmaxq_u16
4046// CHECK: vmax.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4047uint16x8_t test_vmaxq_u16(uint16x8_t a, uint16x8_t b) {
4048  return vmaxq_u16(a, b);
4049}
4050
4051// CHECK: test_vmaxq_u32
4052// CHECK: vmax.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4053uint32x4_t test_vmaxq_u32(uint32x4_t a, uint32x4_t b) {
4054  return vmaxq_u32(a, b);
4055}
4056
4057// CHECK: test_vmaxq_f32
4058// CHECK: vmax.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4059float32x4_t test_vmaxq_f32(float32x4_t a, float32x4_t b) {
4060  return vmaxq_f32(a, b);
4061}
4062
4063
4064// CHECK: test_vmin_s8
4065// CHECK: vmin.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4066int8x8_t test_vmin_s8(int8x8_t a, int8x8_t b) {
4067  return vmin_s8(a, b);
4068}
4069
4070// CHECK: test_vmin_s16
4071// CHECK: vmin.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4072int16x4_t test_vmin_s16(int16x4_t a, int16x4_t b) {
4073  return vmin_s16(a, b);
4074}
4075
4076// CHECK: test_vmin_s32
4077// CHECK: vmin.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4078int32x2_t test_vmin_s32(int32x2_t a, int32x2_t b) {
4079  return vmin_s32(a, b);
4080}
4081
4082// CHECK: test_vmin_u8
4083// CHECK: vmin.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4084uint8x8_t test_vmin_u8(uint8x8_t a, uint8x8_t b) {
4085  return vmin_u8(a, b);
4086}
4087
4088// CHECK: test_vmin_u16
4089// CHECK: vmin.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4090uint16x4_t test_vmin_u16(uint16x4_t a, uint16x4_t b) {
4091  return vmin_u16(a, b);
4092}
4093
4094// CHECK: test_vmin_u32
4095// CHECK: vmin.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4096uint32x2_t test_vmin_u32(uint32x2_t a, uint32x2_t b) {
4097  return vmin_u32(a, b);
4098}
4099
4100// CHECK: test_vmin_f32
4101// CHECK: vmin.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4102float32x2_t test_vmin_f32(float32x2_t a, float32x2_t b) {
4103  return vmin_f32(a, b);
4104}
4105
4106// CHECK: test_vminq_s8
4107// CHECK: vmin.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4108int8x16_t test_vminq_s8(int8x16_t a, int8x16_t b) {
4109  return vminq_s8(a, b);
4110}
4111
4112// CHECK: test_vminq_s16
4113// CHECK: vmin.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4114int16x8_t test_vminq_s16(int16x8_t a, int16x8_t b) {
4115  return vminq_s16(a, b);
4116}
4117
4118// CHECK: test_vminq_s32
4119// CHECK: vmin.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4120int32x4_t test_vminq_s32(int32x4_t a, int32x4_t b) {
4121  return vminq_s32(a, b);
4122}
4123
4124// CHECK: test_vminq_u8
4125// CHECK: vmin.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4126uint8x16_t test_vminq_u8(uint8x16_t a, uint8x16_t b) {
4127  return vminq_u8(a, b);
4128}
4129
4130// CHECK: test_vminq_u16
4131// CHECK: vmin.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4132uint16x8_t test_vminq_u16(uint16x8_t a, uint16x8_t b) {
4133  return vminq_u16(a, b);
4134}
4135
4136// CHECK: test_vminq_u32
4137// CHECK: vmin.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4138uint32x4_t test_vminq_u32(uint32x4_t a, uint32x4_t b) {
4139  return vminq_u32(a, b);
4140}
4141
4142// CHECK: test_vminq_f32
4143// CHECK: vmin.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4144float32x4_t test_vminq_f32(float32x4_t a, float32x4_t b) {
4145  return vminq_f32(a, b);
4146}
4147
4148
4149// CHECK: test_vmla_s8
4150// CHECK: vmla.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4151int8x8_t test_vmla_s8(int8x8_t a, int8x8_t b, int8x8_t c) {
4152  return vmla_s8(a, b, c);
4153}
4154
4155// CHECK: test_vmla_s16
4156// CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4157int16x4_t test_vmla_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
4158  return vmla_s16(a, b, c);
4159}
4160
4161// CHECK: test_vmla_s32
4162// CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4163int32x2_t test_vmla_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
4164  return vmla_s32(a, b, c);
4165}
4166
4167// CHECK: test_vmla_f32
4168// CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4169// CHECK: vadd.f32
4170float32x2_t test_vmla_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
4171  return vmla_f32(a, b, c);
4172}
4173
4174// CHECK: test_vmla_u8
4175// CHECK: vmla.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4176uint8x8_t test_vmla_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
4177  return vmla_u8(a, b, c);
4178}
4179
4180// CHECK: test_vmla_u16
4181// CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4182uint16x4_t test_vmla_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
4183  return vmla_u16(a, b, c);
4184}
4185
4186// CHECK: test_vmla_u32
4187// CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4188uint32x2_t test_vmla_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
4189  return vmla_u32(a, b, c);
4190}
4191
4192// CHECK: test_vmlaq_s8
4193// CHECK: vmla.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4194int8x16_t test_vmlaq_s8(int8x16_t a, int8x16_t b, int8x16_t c) {
4195  return vmlaq_s8(a, b, c);
4196}
4197
4198// CHECK: test_vmlaq_s16
4199// CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4200int16x8_t test_vmlaq_s16(int16x8_t a, int16x8_t b, int16x8_t c) {
4201  return vmlaq_s16(a, b, c);
4202}
4203
4204// CHECK: test_vmlaq_s32
4205// CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4206int32x4_t test_vmlaq_s32(int32x4_t a, int32x4_t b, int32x4_t c) {
4207  return vmlaq_s32(a, b, c);
4208}
4209
4210// CHECK: test_vmlaq_f32
4211// CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4212// CHECK: vadd.f32
4213float32x4_t test_vmlaq_f32(float32x4_t a, float32x4_t b, float32x4_t c) {
4214  return vmlaq_f32(a, b, c);
4215}
4216
4217// CHECK: test_vmlaq_u8
4218// CHECK: vmla.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4219uint8x16_t test_vmlaq_u8(uint8x16_t a, uint8x16_t b, uint8x16_t c) {
4220  return vmlaq_u8(a, b, c);
4221}
4222
4223// CHECK: test_vmlaq_u16
4224// CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4225uint16x8_t test_vmlaq_u16(uint16x8_t a, uint16x8_t b, uint16x8_t c) {
4226  return vmlaq_u16(a, b, c);
4227}
4228
4229// CHECK: test_vmlaq_u32
4230// CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4231uint32x4_t test_vmlaq_u32(uint32x4_t a, uint32x4_t b, uint32x4_t c) {
4232  return vmlaq_u32(a, b, c);
4233}
4234
4235
4236// CHECK: test_vmlal_s8
4237// CHECK: vmlal.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4238int16x8_t test_vmlal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
4239  return vmlal_s8(a, b, c);
4240}
4241
4242// CHECK: test_vmlal_s16
4243// CHECK: vmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4244int32x4_t test_vmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
4245  return vmlal_s16(a, b, c);
4246}
4247
4248// CHECK: test_vmlal_s32
4249// CHECK: vmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4250int64x2_t test_vmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
4251  return vmlal_s32(a, b, c);
4252}
4253
4254// CHECK: test_vmlal_u8
4255// CHECK: vmlal.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4256uint16x8_t test_vmlal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
4257  return vmlal_u8(a, b, c);
4258}
4259
4260// CHECK: test_vmlal_u16
4261// CHECK: vmlal.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4262uint32x4_t test_vmlal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
4263  return vmlal_u16(a, b, c);
4264}
4265
4266// CHECK: test_vmlal_u32
4267// CHECK: vmlal.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4268uint64x2_t test_vmlal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
4269  return vmlal_u32(a, b, c);
4270}
4271
4272
4273// CHECK: test_vmlal_lane_s16
4274// CHECK: vmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4275int32x4_t test_vmlal_lane_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
4276  return vmlal_lane_s16(a, b, c, 3);
4277}
4278
4279// CHECK: test_vmlal_lane_s32
4280// CHECK: vmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4281int64x2_t test_vmlal_lane_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
4282  return vmlal_lane_s32(a, b, c, 1);
4283}
4284
4285// CHECK: test_vmlal_lane_u16
4286// CHECK: vmlal.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4287uint32x4_t test_vmlal_lane_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
4288  return vmlal_lane_u16(a, b, c, 3);
4289}
4290
4291// CHECK: test_vmlal_lane_u32
4292// CHECK: vmlal.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4293uint64x2_t test_vmlal_lane_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
4294  return vmlal_lane_u32(a, b, c, 1);
4295}
4296
4297
4298// CHECK: test_vmlal_n_s16
4299// CHECK: vmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4300int32x4_t test_vmlal_n_s16(int32x4_t a, int16x4_t b, int16_t c) {
4301  return vmlal_n_s16(a, b, c);
4302}
4303
4304// CHECK: test_vmlal_n_s32
4305// CHECK: vmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4306int64x2_t test_vmlal_n_s32(int64x2_t a, int32x2_t b, int32_t c) {
4307  return vmlal_n_s32(a, b, c);
4308}
4309
4310// CHECK: test_vmlal_n_u16
4311// CHECK: vmlal.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4312uint32x4_t test_vmlal_n_u16(uint32x4_t a, uint16x4_t b, uint16_t c) {
4313  return vmlal_n_u16(a, b, c);
4314}
4315
4316// CHECK: test_vmlal_n_u32
4317// CHECK: vmlal.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4318uint64x2_t test_vmlal_n_u32(uint64x2_t a, uint32x2_t b, uint32_t c) {
4319  return vmlal_n_u32(a, b, c);
4320}
4321
4322
4323// CHECK: test_vmla_lane_s16
4324// CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4325int16x4_t test_vmla_lane_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
4326  return vmla_lane_s16(a, b, c, 3);
4327}
4328
4329// CHECK: test_vmla_lane_s32
4330// CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4331int32x2_t test_vmla_lane_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
4332  return vmla_lane_s32(a, b, c, 1);
4333}
4334
4335// CHECK: test_vmla_lane_u16
4336// CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4337uint16x4_t test_vmla_lane_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
4338  return vmla_lane_u16(a, b, c, 3);
4339}
4340
4341// CHECK: test_vmla_lane_u32
4342// CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4343uint32x2_t test_vmla_lane_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
4344  return vmla_lane_u32(a, b, c, 1);
4345}
4346
4347// CHECK: test_vmla_lane_f32
4348// CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4349// CHECK: vadd.f32
4350float32x2_t test_vmla_lane_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
4351  return vmla_lane_f32(a, b, c, 1);
4352}
4353
4354// CHECK: test_vmlaq_lane_s16
4355// CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4356int16x8_t test_vmlaq_lane_s16(int16x8_t a, int16x8_t b, int16x4_t c) {
4357  return vmlaq_lane_s16(a, b, c, 3);
4358}
4359
4360// CHECK: test_vmlaq_lane_s32
4361// CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4362int32x4_t test_vmlaq_lane_s32(int32x4_t a, int32x4_t b, int32x2_t c) {
4363  return vmlaq_lane_s32(a, b, c, 1);
4364}
4365
4366// CHECK: test_vmlaq_lane_u16
4367// CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4368uint16x8_t test_vmlaq_lane_u16(uint16x8_t a, uint16x8_t b, uint16x4_t c) {
4369  return vmlaq_lane_u16(a, b, c, 3);
4370}
4371
4372// CHECK: test_vmlaq_lane_u32
4373// CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4374uint32x4_t test_vmlaq_lane_u32(uint32x4_t a, uint32x4_t b, uint32x2_t c) {
4375  return vmlaq_lane_u32(a, b, c, 1);
4376}
4377
4378// CHECK: test_vmlaq_lane_f32
4379// CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4380// CHECK: vadd.f32
4381float32x4_t test_vmlaq_lane_f32(float32x4_t a, float32x4_t b, float32x2_t c) {
4382  return vmlaq_lane_f32(a, b, c, 1);
4383}
4384
4385
4386// CHECK: test_vmla_n_s16
4387// CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4388int16x4_t test_vmla_n_s16(int16x4_t a, int16x4_t b, int16_t c) {
4389  return vmla_n_s16(a, b, c);
4390}
4391
4392// CHECK: test_vmla_n_s32
4393// CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4394int32x2_t test_vmla_n_s32(int32x2_t a, int32x2_t b, int32_t c) {
4395  return vmla_n_s32(a, b, c);
4396}
4397
4398// CHECK: test_vmla_n_u16
4399// CHECK: vmla.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4400uint16x4_t test_vmla_n_u16(uint16x4_t a, uint16x4_t b, uint16_t c) {
4401  return vmla_n_u16(a, b, c);
4402}
4403
4404// CHECK: test_vmla_n_u32
4405// CHECK: vmla.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4406uint32x2_t test_vmla_n_u32(uint32x2_t a, uint32x2_t b, uint32_t c) {
4407  return vmla_n_u32(a, b, c);
4408}
4409
4410// CHECK: test_vmla_n_f32
4411// CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4412// CHECK: vadd.f32
4413float32x2_t test_vmla_n_f32(float32x2_t a, float32x2_t b, float32_t c) {
4414  return vmla_n_f32(a, b, c);
4415}
4416
4417// CHECK: test_vmlaq_n_s16
4418// CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4419int16x8_t test_vmlaq_n_s16(int16x8_t a, int16x8_t b, int16_t c) {
4420  return vmlaq_n_s16(a, b, c);
4421}
4422
4423// CHECK: test_vmlaq_n_s32
4424// CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4425int32x4_t test_vmlaq_n_s32(int32x4_t a, int32x4_t b, int32_t c) {
4426  return vmlaq_n_s32(a, b, c);
4427}
4428
4429// CHECK: test_vmlaq_n_u16
4430// CHECK: vmla.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4431uint16x8_t test_vmlaq_n_u16(uint16x8_t a, uint16x8_t b, uint16_t c) {
4432  return vmlaq_n_u16(a, b, c);
4433}
4434
4435// CHECK: test_vmlaq_n_u32
4436// CHECK: vmla.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4437uint32x4_t test_vmlaq_n_u32(uint32x4_t a, uint32x4_t b, uint32_t c) {
4438  return vmlaq_n_u32(a, b, c);
4439}
4440
4441// CHECK: test_vmlaq_n_f32
4442// CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4443// CHECK: vadd.f32
4444float32x4_t test_vmlaq_n_f32(float32x4_t a, float32x4_t b, float32_t c) {
4445  return vmlaq_n_f32(a, b, c);
4446}
4447
4448
4449// CHECK: test_vmls_s8
4450// CHECK: vmls.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4451int8x8_t test_vmls_s8(int8x8_t a, int8x8_t b, int8x8_t c) {
4452  return vmls_s8(a, b, c);
4453}
4454
4455// CHECK: test_vmls_s16
4456// CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4457int16x4_t test_vmls_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
4458  return vmls_s16(a, b, c);
4459}
4460
4461// CHECK: test_vmls_s32
4462// CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4463int32x2_t test_vmls_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
4464  return vmls_s32(a, b, c);
4465}
4466
4467// CHECK: test_vmls_f32
4468// CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4469// CHECK: vsub.f32
4470float32x2_t test_vmls_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
4471  return vmls_f32(a, b, c);
4472}
4473
4474// CHECK: test_vmls_u8
4475// CHECK: vmls.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4476uint8x8_t test_vmls_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
4477  return vmls_u8(a, b, c);
4478}
4479
4480// CHECK: test_vmls_u16
4481// CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4482uint16x4_t test_vmls_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
4483  return vmls_u16(a, b, c);
4484}
4485
4486// CHECK: test_vmls_u32
4487// CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4488uint32x2_t test_vmls_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
4489  return vmls_u32(a, b, c);
4490}
4491
4492// CHECK: test_vmlsq_s8
4493// CHECK: vmls.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4494int8x16_t test_vmlsq_s8(int8x16_t a, int8x16_t b, int8x16_t c) {
4495  return vmlsq_s8(a, b, c);
4496}
4497
4498// CHECK: test_vmlsq_s16
4499// CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4500int16x8_t test_vmlsq_s16(int16x8_t a, int16x8_t b, int16x8_t c) {
4501  return vmlsq_s16(a, b, c);
4502}
4503
4504// CHECK: test_vmlsq_s32
4505// CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4506int32x4_t test_vmlsq_s32(int32x4_t a, int32x4_t b, int32x4_t c) {
4507  return vmlsq_s32(a, b, c);
4508}
4509
4510// CHECK: test_vmlsq_f32
4511// CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4512// CHECK: vsub.f32
4513float32x4_t test_vmlsq_f32(float32x4_t a, float32x4_t b, float32x4_t c) {
4514  return vmlsq_f32(a, b, c);
4515}
4516
4517// CHECK: test_vmlsq_u8
4518// CHECK: vmls.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4519uint8x16_t test_vmlsq_u8(uint8x16_t a, uint8x16_t b, uint8x16_t c) {
4520  return vmlsq_u8(a, b, c);
4521}
4522
4523// CHECK: test_vmlsq_u16
4524// CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4525uint16x8_t test_vmlsq_u16(uint16x8_t a, uint16x8_t b, uint16x8_t c) {
4526  return vmlsq_u16(a, b, c);
4527}
4528
4529// CHECK: test_vmlsq_u32
4530// CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4531uint32x4_t test_vmlsq_u32(uint32x4_t a, uint32x4_t b, uint32x4_t c) {
4532  return vmlsq_u32(a, b, c);
4533}
4534
4535
4536// CHECK: test_vmlsl_s8
4537// CHECK: vmlsl.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4538int16x8_t test_vmlsl_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
4539  return vmlsl_s8(a, b, c);
4540}
4541
4542// CHECK: test_vmlsl_s16
4543// CHECK: vmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4544int32x4_t test_vmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
4545  return vmlsl_s16(a, b, c);
4546}
4547
4548// CHECK: test_vmlsl_s32
4549// CHECK: vmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4550int64x2_t test_vmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
4551  return vmlsl_s32(a, b, c);
4552}
4553
4554// CHECK: test_vmlsl_u8
4555// CHECK: vmlsl.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4556uint16x8_t test_vmlsl_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
4557  return vmlsl_u8(a, b, c);
4558}
4559
4560// CHECK: test_vmlsl_u16
4561// CHECK: vmlsl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4562uint32x4_t test_vmlsl_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
4563  return vmlsl_u16(a, b, c);
4564}
4565
4566// CHECK: test_vmlsl_u32
4567// CHECK: vmlsl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4568uint64x2_t test_vmlsl_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
4569  return vmlsl_u32(a, b, c);
4570}
4571
4572
4573// CHECK: test_vmlsl_lane_s16
4574// CHECK: vmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4575int32x4_t test_vmlsl_lane_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
4576  return vmlsl_lane_s16(a, b, c, 3);
4577}
4578
4579// CHECK: test_vmlsl_lane_s32
4580// CHECK: vmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4581int64x2_t test_vmlsl_lane_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
4582  return vmlsl_lane_s32(a, b, c, 1);
4583}
4584
4585// CHECK: test_vmlsl_lane_u16
4586// CHECK: vmlsl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4587uint32x4_t test_vmlsl_lane_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
4588  return vmlsl_lane_u16(a, b, c, 3);
4589}
4590
4591// CHECK: test_vmlsl_lane_u32
4592// CHECK: vmlsl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4593uint64x2_t test_vmlsl_lane_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
4594  return vmlsl_lane_u32(a, b, c, 1);
4595}
4596
4597
4598// CHECK: test_vmlsl_n_s16
4599// CHECK: vmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4600int32x4_t test_vmlsl_n_s16(int32x4_t a, int16x4_t b, int16_t c) {
4601  return vmlsl_n_s16(a, b, c);
4602}
4603
4604// CHECK: test_vmlsl_n_s32
4605// CHECK: vmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4606int64x2_t test_vmlsl_n_s32(int64x2_t a, int32x2_t b, int32_t c) {
4607  return vmlsl_n_s32(a, b, c);
4608}
4609
4610// CHECK: test_vmlsl_n_u16
4611// CHECK: vmlsl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4612uint32x4_t test_vmlsl_n_u16(uint32x4_t a, uint16x4_t b, uint16_t c) {
4613  return vmlsl_n_u16(a, b, c);
4614}
4615
4616// CHECK: test_vmlsl_n_u32
4617// CHECK: vmlsl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4618uint64x2_t test_vmlsl_n_u32(uint64x2_t a, uint32x2_t b, uint32_t c) {
4619  return vmlsl_n_u32(a, b, c);
4620}
4621
4622
4623// CHECK: test_vmls_lane_s16
4624// CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4625int16x4_t test_vmls_lane_s16(int16x4_t a, int16x4_t b, int16x4_t c) {
4626  return vmls_lane_s16(a, b, c, 3);
4627}
4628
4629// CHECK: test_vmls_lane_s32
4630// CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4631int32x2_t test_vmls_lane_s32(int32x2_t a, int32x2_t b, int32x2_t c) {
4632  return vmls_lane_s32(a, b, c, 1);
4633}
4634
4635// CHECK: test_vmls_lane_u16
4636// CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4637uint16x4_t test_vmls_lane_u16(uint16x4_t a, uint16x4_t b, uint16x4_t c) {
4638  return vmls_lane_u16(a, b, c, 3);
4639}
4640
4641// CHECK: test_vmls_lane_u32
4642// CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4643uint32x2_t test_vmls_lane_u32(uint32x2_t a, uint32x2_t b, uint32x2_t c) {
4644  return vmls_lane_u32(a, b, c, 1);
4645}
4646
4647// CHECK: test_vmls_lane_f32
4648// CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4649// CHECK: vsub.f32
4650float32x2_t test_vmls_lane_f32(float32x2_t a, float32x2_t b, float32x2_t c) {
4651  return vmls_lane_f32(a, b, c, 1);
4652}
4653
4654// CHECK: test_vmlsq_lane_s16
4655// CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4656int16x8_t test_vmlsq_lane_s16(int16x8_t a, int16x8_t b, int16x4_t c) {
4657  return vmlsq_lane_s16(a, b, c, 3);
4658}
4659
4660// CHECK: test_vmlsq_lane_s32
4661// CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4662int32x4_t test_vmlsq_lane_s32(int32x4_t a, int32x4_t b, int32x2_t c) {
4663  return vmlsq_lane_s32(a, b, c, 1);
4664}
4665
4666// CHECK: test_vmlsq_lane_u16
4667// CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4668uint16x8_t test_vmlsq_lane_u16(uint16x8_t a, uint16x8_t b, uint16x4_t c) {
4669  return vmlsq_lane_u16(a, b, c, 3);
4670}
4671
4672// CHECK: test_vmlsq_lane_u32
4673// CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4674uint32x4_t test_vmlsq_lane_u32(uint32x4_t a, uint32x4_t b, uint32x2_t c) {
4675  return vmlsq_lane_u32(a, b, c, 1);
4676}
4677
4678// CHECK: test_vmlsq_lane_f32
4679// CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
4680// CHECK: vsub.f32
4681float32x4_t test_vmlsq_lane_f32(float32x4_t a, float32x4_t b, float32x2_t c) {
4682  return vmlsq_lane_f32(a, b, c, 1);
4683}
4684
4685
4686// CHECK: test_vmls_n_s16
4687// CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4688int16x4_t test_vmls_n_s16(int16x4_t a, int16x4_t b, int16_t c) {
4689  return vmls_n_s16(a, b, c);
4690}
4691
4692// CHECK: test_vmls_n_s32
4693// CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4694int32x2_t test_vmls_n_s32(int32x2_t a, int32x2_t b, int32_t c) {
4695  return vmls_n_s32(a, b, c);
4696}
4697
4698// CHECK: test_vmls_n_u16
4699// CHECK: vmls.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4700uint16x4_t test_vmls_n_u16(uint16x4_t a, uint16x4_t b, uint16_t c) {
4701  return vmls_n_u16(a, b, c);
4702}
4703
4704// CHECK: test_vmls_n_u32
4705// CHECK: vmls.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4706uint32x2_t test_vmls_n_u32(uint32x2_t a, uint32x2_t b, uint32_t c) {
4707  return vmls_n_u32(a, b, c);
4708}
4709
4710// CHECK: test_vmls_n_f32
4711// CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4712// CHECK: vsub.f32
4713float32x2_t test_vmls_n_f32(float32x2_t a, float32x2_t b, float32_t c) {
4714  return vmls_n_f32(a, b, c);
4715}
4716
4717// CHECK: test_vmlsq_n_s16
4718// CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4719int16x8_t test_vmlsq_n_s16(int16x8_t a, int16x8_t b, int16_t c) {
4720  return vmlsq_n_s16(a, b, c);
4721}
4722
4723// CHECK: test_vmlsq_n_s32
4724// CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4725int32x4_t test_vmlsq_n_s32(int32x4_t a, int32x4_t b, int32_t c) {
4726  return vmlsq_n_s32(a, b, c);
4727}
4728
4729// CHECK: test_vmlsq_n_u16
4730// CHECK: vmls.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4731uint16x8_t test_vmlsq_n_u16(uint16x8_t a, uint16x8_t b, uint16_t c) {
4732  return vmlsq_n_u16(a, b, c);
4733}
4734
4735// CHECK: test_vmlsq_n_u32
4736// CHECK: vmls.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4737uint32x4_t test_vmlsq_n_u32(uint32x4_t a, uint32x4_t b, uint32_t c) {
4738  return vmlsq_n_u32(a, b, c);
4739}
4740
4741// CHECK: test_vmlsq_n_f32
4742// CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
4743// CHECK: vsub.f32
4744float32x4_t test_vmlsq_n_f32(float32x4_t a, float32x4_t b, float32_t c) {
4745  return vmlsq_n_f32(a, b, c);
4746}
4747
4748
4749// CHECK: test_vmovl_s8
4750// CHECK: vmovl.s8 q{{[0-9]+}}, d{{[0-9]+}}
4751int16x8_t test_vmovl_s8(int8x8_t a) {
4752  return vmovl_s8(a);
4753}
4754
4755// CHECK: test_vmovl_s16
4756// CHECK: vmovl.s16 q{{[0-9]+}}, d{{[0-9]+}}
4757int32x4_t test_vmovl_s16(int16x4_t a) {
4758  return vmovl_s16(a);
4759}
4760
4761// CHECK: test_vmovl_s32
4762// CHECK: vmovl.s32 q{{[0-9]+}}, d{{[0-9]+}}
4763int64x2_t test_vmovl_s32(int32x2_t a) {
4764  return vmovl_s32(a);
4765}
4766
4767// CHECK: test_vmovl_u8
4768// CHECK: vmovl.u8 q{{[0-9]+}}, d{{[0-9]+}}
4769uint16x8_t test_vmovl_u8(uint8x8_t a) {
4770  return vmovl_u8(a);
4771}
4772
4773// CHECK: test_vmovl_u16
4774// CHECK: vmovl.u16 q{{[0-9]+}}, d{{[0-9]+}}
4775uint32x4_t test_vmovl_u16(uint16x4_t a) {
4776  return vmovl_u16(a);
4777}
4778
4779// CHECK: test_vmovl_u32
4780// CHECK: vmovl.u32 q{{[0-9]+}}, d{{[0-9]+}}
4781uint64x2_t test_vmovl_u32(uint32x2_t a) {
4782  return vmovl_u32(a);
4783}
4784
4785
4786// CHECK: test_vmovn_s16
4787// CHECK: vmovn.i16 d{{[0-9]+}}, q{{[0-9]+}}
4788int8x8_t test_vmovn_s16(int16x8_t a) {
4789  return vmovn_s16(a);
4790}
4791
4792// CHECK: test_vmovn_s32
4793// CHECK: vmovn.i32 d{{[0-9]+}}, q{{[0-9]+}}
4794int16x4_t test_vmovn_s32(int32x4_t a) {
4795  return vmovn_s32(a);
4796}
4797
4798// CHECK: test_vmovn_s64
4799// CHECK: vmovn.i64 d{{[0-9]+}}, q{{[0-9]+}}
4800int32x2_t test_vmovn_s64(int64x2_t a) {
4801  return vmovn_s64(a);
4802}
4803
4804// CHECK: test_vmovn_u16
4805// CHECK: vmovn.i16 d{{[0-9]+}}, q{{[0-9]+}}
4806uint8x8_t test_vmovn_u16(uint16x8_t a) {
4807  return vmovn_u16(a);
4808}
4809
4810// CHECK: test_vmovn_u32
4811// CHECK: vmovn.i32 d{{[0-9]+}}, q{{[0-9]+}}
4812uint16x4_t test_vmovn_u32(uint32x4_t a) {
4813  return vmovn_u32(a);
4814}
4815
4816// CHECK: test_vmovn_u64
4817// CHECK: vmovn.i64 d{{[0-9]+}}, q{{[0-9]+}}
4818uint32x2_t test_vmovn_u64(uint64x2_t a) {
4819  return vmovn_u64(a);
4820}
4821
4822
4823// CHECK: test_vmov_n_u8
4824// CHECK: vmov
4825uint8x8_t test_vmov_n_u8(uint8_t a) {
4826  return vmov_n_u8(a);
4827}
4828
4829// CHECK: test_vmov_n_u16
4830// CHECK: vmov
4831uint16x4_t test_vmov_n_u16(uint16_t a) {
4832  return vmov_n_u16(a);
4833}
4834
4835// CHECK: test_vmov_n_u32
4836// CHECK: vmov
4837uint32x2_t test_vmov_n_u32(uint32_t a) {
4838  return vmov_n_u32(a);
4839}
4840
4841// CHECK: test_vmov_n_s8
4842// CHECK: vmov
4843int8x8_t test_vmov_n_s8(int8_t a) {
4844  return vmov_n_s8(a);
4845}
4846
4847// CHECK: test_vmov_n_s16
4848// CHECK: vmov
4849int16x4_t test_vmov_n_s16(int16_t a) {
4850  return vmov_n_s16(a);
4851}
4852
4853// CHECK: test_vmov_n_s32
4854// CHECK: vmov
4855int32x2_t test_vmov_n_s32(int32_t a) {
4856  return vmov_n_s32(a);
4857}
4858
4859// CHECK: test_vmov_n_p8
4860// CHECK: vmov
4861poly8x8_t test_vmov_n_p8(poly8_t a) {
4862  return vmov_n_p8(a);
4863}
4864
4865// CHECK: test_vmov_n_p16
4866// CHECK: vmov
4867poly16x4_t test_vmov_n_p16(poly16_t a) {
4868  return vmov_n_p16(a);
4869}
4870
4871// CHECK: test_vmov_n_f32
4872// CHECK: vmov
4873float32x2_t test_vmov_n_f32(float32_t a) {
4874  return vmov_n_f32(a);
4875}
4876
4877// CHECK: test_vmovq_n_u8
4878// CHECK: vmov
4879uint8x16_t test_vmovq_n_u8(uint8_t a) {
4880  return vmovq_n_u8(a);
4881}
4882
4883// CHECK: test_vmovq_n_u16
4884// CHECK: vmov
4885uint16x8_t test_vmovq_n_u16(uint16_t a) {
4886  return vmovq_n_u16(a);
4887}
4888
4889// CHECK: test_vmovq_n_u32
4890// CHECK: vmov
4891uint32x4_t test_vmovq_n_u32(uint32_t a) {
4892  return vmovq_n_u32(a);
4893}
4894
4895// CHECK: test_vmovq_n_s8
4896// CHECK: vmov
4897int8x16_t test_vmovq_n_s8(int8_t a) {
4898  return vmovq_n_s8(a);
4899}
4900
4901// CHECK: test_vmovq_n_s16
4902// CHECK: vmov
4903int16x8_t test_vmovq_n_s16(int16_t a) {
4904  return vmovq_n_s16(a);
4905}
4906
4907// CHECK: test_vmovq_n_s32
4908// CHECK: vmov
4909int32x4_t test_vmovq_n_s32(int32_t a) {
4910  return vmovq_n_s32(a);
4911}
4912
4913// CHECK: test_vmovq_n_p8
4914// CHECK: vmov
4915poly8x16_t test_vmovq_n_p8(poly8_t a) {
4916  return vmovq_n_p8(a);
4917}
4918
4919// CHECK: test_vmovq_n_p16
4920// CHECK: vmov
4921poly16x8_t test_vmovq_n_p16(poly16_t a) {
4922  return vmovq_n_p16(a);
4923}
4924
4925// CHECK: test_vmovq_n_f32
4926// CHECK: vmov
4927float32x4_t test_vmovq_n_f32(float32_t a) {
4928  return vmovq_n_f32(a);
4929}
4930
4931// CHECK: test_vmov_n_s64
4932// CHECK: vmov
4933int64x1_t test_vmov_n_s64(int64_t a) {
4934  return vmov_n_s64(a);
4935}
4936
4937// CHECK: test_vmov_n_u64
4938// CHECK: vmov
4939uint64x1_t test_vmov_n_u64(uint64_t a) {
4940  return vmov_n_u64(a);
4941}
4942
4943// CHECK: test_vmovq_n_s64
4944// CHECK: vmov
4945int64x2_t test_vmovq_n_s64(int64_t a) {
4946  return vmovq_n_s64(a);
4947}
4948
4949// CHECK: test_vmovq_n_u64
4950// CHECK: vmov
4951uint64x2_t test_vmovq_n_u64(uint64_t a) {
4952  return vmovq_n_u64(a);
4953}
4954
4955
4956// CHECK: test_vmul_s8
4957// CHECK: vmul.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4958int8x8_t test_vmul_s8(int8x8_t a, int8x8_t b) {
4959  return vmul_s8(a, b);
4960}
4961
4962// CHECK: test_vmul_s16
4963// CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4964int16x4_t test_vmul_s16(int16x4_t a, int16x4_t b) {
4965  return vmul_s16(a, b);
4966}
4967
4968// CHECK: test_vmul_s32
4969// CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4970int32x2_t test_vmul_s32(int32x2_t a, int32x2_t b) {
4971  return vmul_s32(a, b);
4972}
4973
4974// CHECK: test_vmul_f32
4975// CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4976float32x2_t test_vmul_f32(float32x2_t a, float32x2_t b) {
4977  return vmul_f32(a, b);
4978}
4979
4980// CHECK: test_vmul_u8
4981// CHECK: vmul.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4982uint8x8_t test_vmul_u8(uint8x8_t a, uint8x8_t b) {
4983  return vmul_u8(a, b);
4984}
4985
4986// CHECK: test_vmul_u16
4987// CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4988uint16x4_t test_vmul_u16(uint16x4_t a, uint16x4_t b) {
4989  return vmul_u16(a, b);
4990}
4991
4992// CHECK: test_vmul_u32
4993// CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
4994uint32x2_t test_vmul_u32(uint32x2_t a, uint32x2_t b) {
4995  return vmul_u32(a, b);
4996}
4997
4998// CHECK: test_vmulq_s8
4999// CHECK: vmul.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5000int8x16_t test_vmulq_s8(int8x16_t a, int8x16_t b) {
5001  return vmulq_s8(a, b);
5002}
5003
5004// CHECK: test_vmulq_s16
5005// CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5006int16x8_t test_vmulq_s16(int16x8_t a, int16x8_t b) {
5007  return vmulq_s16(a, b);
5008}
5009
5010// CHECK: test_vmulq_s32
5011// CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5012int32x4_t test_vmulq_s32(int32x4_t a, int32x4_t b) {
5013  return vmulq_s32(a, b);
5014}
5015
5016// CHECK: test_vmulq_f32
5017// CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5018float32x4_t test_vmulq_f32(float32x4_t a, float32x4_t b) {
5019  return vmulq_f32(a, b);
5020}
5021
5022// CHECK: test_vmulq_u8
5023// CHECK: vmul.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5024uint8x16_t test_vmulq_u8(uint8x16_t a, uint8x16_t b) {
5025  return vmulq_u8(a, b);
5026}
5027
5028// CHECK: test_vmulq_u16
5029// CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5030uint16x8_t test_vmulq_u16(uint16x8_t a, uint16x8_t b) {
5031  return vmulq_u16(a, b);
5032}
5033
5034// CHECK: test_vmulq_u32
5035// CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5036uint32x4_t test_vmulq_u32(uint32x4_t a, uint32x4_t b) {
5037  return vmulq_u32(a, b);
5038}
5039
5040
5041// CHECK: test_vmull_s8
5042// CHECK: vmull.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5043int16x8_t test_vmull_s8(int8x8_t a, int8x8_t b) {
5044  return vmull_s8(a, b);
5045}
5046
5047// CHECK: test_vmull_s16
5048// CHECK: vmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5049int32x4_t test_vmull_s16(int16x4_t a, int16x4_t b) {
5050  return vmull_s16(a, b);
5051}
5052
5053// CHECK: test_vmull_s32
5054// CHECK: vmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5055int64x2_t test_vmull_s32(int32x2_t a, int32x2_t b) {
5056  return vmull_s32(a, b);
5057}
5058
5059// CHECK: test_vmull_u8
5060// CHECK: vmull.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5061uint16x8_t test_vmull_u8(uint8x8_t a, uint8x8_t b) {
5062  return vmull_u8(a, b);
5063}
5064
5065// CHECK: test_vmull_u16
5066// CHECK: vmull.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5067uint32x4_t test_vmull_u16(uint16x4_t a, uint16x4_t b) {
5068  return vmull_u16(a, b);
5069}
5070
5071// CHECK: test_vmull_u32
5072// CHECK: vmull.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5073uint64x2_t test_vmull_u32(uint32x2_t a, uint32x2_t b) {
5074  return vmull_u32(a, b);
5075}
5076
5077// CHECK: test_vmull_p8
5078// CHECK: vmull.p8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5079poly16x8_t test_vmull_p8(poly8x8_t a, poly8x8_t b) {
5080  return vmull_p8(a, b);
5081}
5082
5083
5084// CHECK: test_vmull_lane_s16
5085// CHECK: vmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5086int32x4_t test_vmull_lane_s16(int16x4_t a, int16x4_t b) {
5087  return vmull_lane_s16(a, b, 3);
5088}
5089
5090// CHECK: test_vmull_lane_s32
5091// CHECK: vmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5092int64x2_t test_vmull_lane_s32(int32x2_t a, int32x2_t b) {
5093  return vmull_lane_s32(a, b, 1);
5094}
5095
5096// CHECK: test_vmull_lane_u16
5097// CHECK: vmull.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5098uint32x4_t test_vmull_lane_u16(uint16x4_t a, uint16x4_t b) {
5099  return vmull_lane_u16(a, b, 3);
5100}
5101
5102// CHECK: test_vmull_lane_u32
5103// CHECK: vmull.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5104uint64x2_t test_vmull_lane_u32(uint32x2_t a, uint32x2_t b) {
5105  return vmull_lane_u32(a, b, 1);
5106}
5107
5108
5109// CHECK: test_vmull_n_s16
5110// CHECK: vmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5111int32x4_t test_vmull_n_s16(int16x4_t a, int16_t b) {
5112  return vmull_n_s16(a, b);
5113}
5114
5115// CHECK: test_vmull_n_s32
5116// CHECK: vmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5117int64x2_t test_vmull_n_s32(int32x2_t a, int32_t b) {
5118  return vmull_n_s32(a, b);
5119}
5120
5121// CHECK: test_vmull_n_u16
5122// CHECK: vmull.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5123uint32x4_t test_vmull_n_u16(uint16x4_t a, uint16_t b) {
5124  return vmull_n_u16(a, b);
5125}
5126
5127// CHECK: test_vmull_n_u32
5128// CHECK: vmull.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5129uint64x2_t test_vmull_n_u32(uint32x2_t a, uint32_t b) {
5130  return vmull_n_u32(a, b);
5131}
5132
5133
5134// CHECK: test_vmul_p8
5135// CHECK: vmul.p8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5136poly8x8_t test_vmul_p8(poly8x8_t a, poly8x8_t b) {
5137  return vmul_p8(a, b);
5138}
5139
5140// CHECK: test_vmulq_p8
5141// CHECK: vmul.p8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5142poly8x16_t test_vmulq_p8(poly8x16_t a, poly8x16_t b) {
5143  return vmulq_p8(a, b);
5144}
5145
5146
5147// CHECK: test_vmul_lane_s16
5148// CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5149int16x4_t test_vmul_lane_s16(int16x4_t a, int16x4_t b) {
5150  return vmul_lane_s16(a, b, 3);
5151}
5152
5153// CHECK: test_vmul_lane_s32
5154// CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5155int32x2_t test_vmul_lane_s32(int32x2_t a, int32x2_t b) {
5156  return vmul_lane_s32(a, b, 1);
5157}
5158
5159// CHECK: test_vmul_lane_f32
5160// CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5161float32x2_t test_vmul_lane_f32(float32x2_t a, float32x2_t b) {
5162  return vmul_lane_f32(a, b, 1);
5163}
5164
5165// CHECK: test_vmul_lane_u16
5166// CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5167uint16x4_t test_vmul_lane_u16(uint16x4_t a, uint16x4_t b) {
5168  return vmul_lane_u16(a, b, 3);
5169}
5170
5171// CHECK: test_vmul_lane_u32
5172// CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5173uint32x2_t test_vmul_lane_u32(uint32x2_t a, uint32x2_t b) {
5174  return vmul_lane_u32(a, b, 1);
5175}
5176
5177// CHECK: test_vmulq_lane_s16
5178// CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5179int16x8_t test_vmulq_lane_s16(int16x8_t a, int16x4_t b) {
5180  return vmulq_lane_s16(a, b, 3);
5181}
5182
5183// CHECK: test_vmulq_lane_s32
5184// CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5185int32x4_t test_vmulq_lane_s32(int32x4_t a, int32x2_t b) {
5186  return vmulq_lane_s32(a, b, 1);
5187}
5188
5189// CHECK: test_vmulq_lane_f32
5190// CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5191float32x4_t test_vmulq_lane_f32(float32x4_t a, float32x2_t b) {
5192  return vmulq_lane_f32(a, b, 1);
5193}
5194
5195// CHECK: test_vmulq_lane_u16
5196// CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5197uint16x8_t test_vmulq_lane_u16(uint16x8_t a, uint16x4_t b) {
5198  return vmulq_lane_u16(a, b, 3);
5199}
5200
5201// CHECK: test_vmulq_lane_u32
5202// CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
5203uint32x4_t test_vmulq_lane_u32(uint32x4_t a, uint32x2_t b) {
5204  return vmulq_lane_u32(a, b, 1);
5205}
5206
5207
5208// CHECK: test_vmul_n_s16
5209// CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5210int16x4_t test_vmul_n_s16(int16x4_t a, int16_t b) {
5211  return vmul_n_s16(a, b);
5212}
5213
5214// CHECK: test_vmul_n_s32
5215// CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5216int32x2_t test_vmul_n_s32(int32x2_t a, int32_t b) {
5217  return vmul_n_s32(a, b);
5218}
5219
5220// CHECK: test_vmul_n_f32
5221// CHECK: vmul.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5222float32x2_t test_vmul_n_f32(float32x2_t a, float32_t b) {
5223  return vmul_n_f32(a, b);
5224}
5225
5226// CHECK: test_vmul_n_u16
5227// CHECK: vmul.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5228uint16x4_t test_vmul_n_u16(uint16x4_t a, uint16_t b) {
5229  return vmul_n_u16(a, b);
5230}
5231
5232// CHECK: test_vmul_n_u32
5233// CHECK: vmul.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5234uint32x2_t test_vmul_n_u32(uint32x2_t a, uint32_t b) {
5235  return vmul_n_u32(a, b);
5236}
5237
5238// CHECK: test_vmulq_n_s16
5239// CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5240int16x8_t test_vmulq_n_s16(int16x8_t a, int16_t b) {
5241  return vmulq_n_s16(a, b);
5242}
5243
5244// CHECK: test_vmulq_n_s32
5245// CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5246int32x4_t test_vmulq_n_s32(int32x4_t a, int32_t b) {
5247  return vmulq_n_s32(a, b);
5248}
5249
5250// CHECK: test_vmulq_n_f32
5251// CHECK: vmul.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5252float32x4_t test_vmulq_n_f32(float32x4_t a, float32_t b) {
5253  return vmulq_n_f32(a, b);
5254}
5255
5256// CHECK: test_vmulq_n_u16
5257// CHECK: vmul.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5258uint16x8_t test_vmulq_n_u16(uint16x8_t a, uint16_t b) {
5259  return vmulq_n_u16(a, b);
5260}
5261
5262// CHECK: test_vmulq_n_u32
5263// CHECK: vmul.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5264uint32x4_t test_vmulq_n_u32(uint32x4_t a, uint32_t b) {
5265  return vmulq_n_u32(a, b);
5266}
5267
5268
5269// CHECK: test_vmvn_s8
5270// CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
5271int8x8_t test_vmvn_s8(int8x8_t a) {
5272  return vmvn_s8(a);
5273}
5274
5275// CHECK: test_vmvn_s16
5276// CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
5277int16x4_t test_vmvn_s16(int16x4_t a) {
5278  return vmvn_s16(a);
5279}
5280
5281// CHECK: test_vmvn_s32
5282// CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
5283int32x2_t test_vmvn_s32(int32x2_t a) {
5284  return vmvn_s32(a);
5285}
5286
5287// CHECK: test_vmvn_u8
5288// CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
5289uint8x8_t test_vmvn_u8(uint8x8_t a) {
5290  return vmvn_u8(a);
5291}
5292
5293// CHECK: test_vmvn_u16
5294// CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
5295uint16x4_t test_vmvn_u16(uint16x4_t a) {
5296  return vmvn_u16(a);
5297}
5298
5299// CHECK: test_vmvn_u32
5300// CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
5301uint32x2_t test_vmvn_u32(uint32x2_t a) {
5302  return vmvn_u32(a);
5303}
5304
5305// CHECK: test_vmvn_p8
5306// CHECK: vmvn d{{[0-9]+}}, d{{[0-9]+}}
5307poly8x8_t test_vmvn_p8(poly8x8_t a) {
5308  return vmvn_p8(a);
5309}
5310
5311// CHECK: test_vmvnq_s8
5312// CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
5313int8x16_t test_vmvnq_s8(int8x16_t a) {
5314  return vmvnq_s8(a);
5315}
5316
5317// CHECK: test_vmvnq_s16
5318// CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
5319int16x8_t test_vmvnq_s16(int16x8_t a) {
5320  return vmvnq_s16(a);
5321}
5322
5323// CHECK: test_vmvnq_s32
5324// CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
5325int32x4_t test_vmvnq_s32(int32x4_t a) {
5326  return vmvnq_s32(a);
5327}
5328
5329// CHECK: test_vmvnq_u8
5330// CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
5331uint8x16_t test_vmvnq_u8(uint8x16_t a) {
5332  return vmvnq_u8(a);
5333}
5334
5335// CHECK: test_vmvnq_u16
5336// CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
5337uint16x8_t test_vmvnq_u16(uint16x8_t a) {
5338  return vmvnq_u16(a);
5339}
5340
5341// CHECK: test_vmvnq_u32
5342// CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
5343uint32x4_t test_vmvnq_u32(uint32x4_t a) {
5344  return vmvnq_u32(a);
5345}
5346
5347// CHECK: test_vmvnq_p8
5348// CHECK: vmvn q{{[0-9]+}}, q{{[0-9]+}}
5349poly8x16_t test_vmvnq_p8(poly8x16_t a) {
5350  return vmvnq_p8(a);
5351}
5352
5353
5354// CHECK: test_vneg_s8
5355// CHECK: vneg.s8 d{{[0-9]+}}, d{{[0-9]+}}
5356int8x8_t test_vneg_s8(int8x8_t a) {
5357  return vneg_s8(a);
5358}
5359
5360// CHECK: test_vneg_s16
5361// CHECK: vneg.s16 d{{[0-9]+}}, d{{[0-9]+}}
5362int16x4_t test_vneg_s16(int16x4_t a) {
5363  return vneg_s16(a);
5364}
5365
5366// CHECK: test_vneg_s32
5367// CHECK: vneg.s32 d{{[0-9]+}}, d{{[0-9]+}}
5368int32x2_t test_vneg_s32(int32x2_t a) {
5369  return vneg_s32(a);
5370}
5371
5372// CHECK: test_vneg_f32
5373// CHECK: vneg.f32 d{{[0-9]+}}, d{{[0-9]+}}
5374float32x2_t test_vneg_f32(float32x2_t a) {
5375  return vneg_f32(a);
5376}
5377
5378// CHECK: test_vnegq_s8
5379// CHECK: vneg.s8 q{{[0-9]+}}, q{{[0-9]+}}
5380int8x16_t test_vnegq_s8(int8x16_t a) {
5381  return vnegq_s8(a);
5382}
5383
5384// CHECK: test_vnegq_s16
5385// CHECK: vneg.s16 q{{[0-9]+}}, q{{[0-9]+}}
5386int16x8_t test_vnegq_s16(int16x8_t a) {
5387  return vnegq_s16(a);
5388}
5389
5390// CHECK: test_vnegq_s32
5391// CHECK: vneg.s32 q{{[0-9]+}}, q{{[0-9]+}}
5392int32x4_t test_vnegq_s32(int32x4_t a) {
5393  return vnegq_s32(a);
5394}
5395
5396// CHECK: test_vnegq_f32
5397// CHECK: vneg.f32 q{{[0-9]+}}, q{{[0-9]+}}
5398float32x4_t test_vnegq_f32(float32x4_t a) {
5399  return vnegq_f32(a);
5400}
5401
5402
5403// CHECK: test_vorn_s8
5404// CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5405int8x8_t test_vorn_s8(int8x8_t a, int8x8_t b) {
5406  return vorn_s8(a, b);
5407}
5408
5409// CHECK: test_vorn_s16
5410// CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5411int16x4_t test_vorn_s16(int16x4_t a, int16x4_t b) {
5412  return vorn_s16(a, b);
5413}
5414
5415// CHECK: test_vorn_s32
5416// CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5417int32x2_t test_vorn_s32(int32x2_t a, int32x2_t b) {
5418  return vorn_s32(a, b);
5419}
5420
5421// CHECK: test_vorn_s64
5422// CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5423int64x1_t test_vorn_s64(int64x1_t a, int64x1_t b) {
5424  return vorn_s64(a, b);
5425}
5426
5427// CHECK: test_vorn_u8
5428// CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5429uint8x8_t test_vorn_u8(uint8x8_t a, uint8x8_t b) {
5430  return vorn_u8(a, b);
5431}
5432
5433// CHECK: test_vorn_u16
5434// CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5435uint16x4_t test_vorn_u16(uint16x4_t a, uint16x4_t b) {
5436  return vorn_u16(a, b);
5437}
5438
5439// CHECK: test_vorn_u32
5440// CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5441uint32x2_t test_vorn_u32(uint32x2_t a, uint32x2_t b) {
5442  return vorn_u32(a, b);
5443}
5444
5445// CHECK: test_vorn_u64
5446// CHECK: vorn d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5447uint64x1_t test_vorn_u64(uint64x1_t a, uint64x1_t b) {
5448  return vorn_u64(a, b);
5449}
5450
5451// CHECK: test_vornq_s8
5452// CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5453int8x16_t test_vornq_s8(int8x16_t a, int8x16_t b) {
5454  return vornq_s8(a, b);
5455}
5456
5457// CHECK: test_vornq_s16
5458// CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5459int16x8_t test_vornq_s16(int16x8_t a, int16x8_t b) {
5460  return vornq_s16(a, b);
5461}
5462
5463// CHECK: test_vornq_s32
5464// CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5465int32x4_t test_vornq_s32(int32x4_t a, int32x4_t b) {
5466  return vornq_s32(a, b);
5467}
5468
5469// CHECK: test_vornq_s64
5470// CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5471int64x2_t test_vornq_s64(int64x2_t a, int64x2_t b) {
5472  return vornq_s64(a, b);
5473}
5474
5475// CHECK: test_vornq_u8
5476// CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5477uint8x16_t test_vornq_u8(uint8x16_t a, uint8x16_t b) {
5478  return vornq_u8(a, b);
5479}
5480
5481// CHECK: test_vornq_u16
5482// CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5483uint16x8_t test_vornq_u16(uint16x8_t a, uint16x8_t b) {
5484  return vornq_u16(a, b);
5485}
5486
5487// CHECK: test_vornq_u32
5488// CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5489uint32x4_t test_vornq_u32(uint32x4_t a, uint32x4_t b) {
5490  return vornq_u32(a, b);
5491}
5492
5493// CHECK: test_vornq_u64
5494// CHECK: vorn q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5495uint64x2_t test_vornq_u64(uint64x2_t a, uint64x2_t b) {
5496  return vornq_u64(a, b);
5497}
5498
5499
5500// CHECK: test_vorr_s8
5501// CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5502int8x8_t test_vorr_s8(int8x8_t a, int8x8_t b) {
5503  return vorr_s8(a, b);
5504}
5505
5506// CHECK: test_vorr_s16
5507// CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5508int16x4_t test_vorr_s16(int16x4_t a, int16x4_t b) {
5509  return vorr_s16(a, b);
5510}
5511
5512// CHECK: test_vorr_s32
5513// CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5514int32x2_t test_vorr_s32(int32x2_t a, int32x2_t b) {
5515  return vorr_s32(a, b);
5516}
5517
5518// CHECK: test_vorr_s64
5519// CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5520int64x1_t test_vorr_s64(int64x1_t a, int64x1_t b) {
5521  return vorr_s64(a, b);
5522}
5523
5524// CHECK: test_vorr_u8
5525// CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5526uint8x8_t test_vorr_u8(uint8x8_t a, uint8x8_t b) {
5527  return vorr_u8(a, b);
5528}
5529
5530// CHECK: test_vorr_u16
5531// CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5532uint16x4_t test_vorr_u16(uint16x4_t a, uint16x4_t b) {
5533  return vorr_u16(a, b);
5534}
5535
5536// CHECK: test_vorr_u32
5537// CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5538uint32x2_t test_vorr_u32(uint32x2_t a, uint32x2_t b) {
5539  return vorr_u32(a, b);
5540}
5541
5542// CHECK: test_vorr_u64
5543// CHECK: vorr d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5544uint64x1_t test_vorr_u64(uint64x1_t a, uint64x1_t b) {
5545  return vorr_u64(a, b);
5546}
5547
5548// CHECK: test_vorrq_s8
5549// CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5550int8x16_t test_vorrq_s8(int8x16_t a, int8x16_t b) {
5551  return vorrq_s8(a, b);
5552}
5553
5554// CHECK: test_vorrq_s16
5555// CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5556int16x8_t test_vorrq_s16(int16x8_t a, int16x8_t b) {
5557  return vorrq_s16(a, b);
5558}
5559
5560// CHECK: test_vorrq_s32
5561// CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5562int32x4_t test_vorrq_s32(int32x4_t a, int32x4_t b) {
5563  return vorrq_s32(a, b);
5564}
5565
5566// CHECK: test_vorrq_s64
5567// CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5568int64x2_t test_vorrq_s64(int64x2_t a, int64x2_t b) {
5569  return vorrq_s64(a, b);
5570}
5571
5572// CHECK: test_vorrq_u8
5573// CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5574uint8x16_t test_vorrq_u8(uint8x16_t a, uint8x16_t b) {
5575  return vorrq_u8(a, b);
5576}
5577
5578// CHECK: test_vorrq_u16
5579// CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5580uint16x8_t test_vorrq_u16(uint16x8_t a, uint16x8_t b) {
5581  return vorrq_u16(a, b);
5582}
5583
5584// CHECK: test_vorrq_u32
5585// CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5586uint32x4_t test_vorrq_u32(uint32x4_t a, uint32x4_t b) {
5587  return vorrq_u32(a, b);
5588}
5589
5590// CHECK: test_vorrq_u64
5591// CHECK: vorr q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5592uint64x2_t test_vorrq_u64(uint64x2_t a, uint64x2_t b) {
5593  return vorrq_u64(a, b);
5594}
5595
5596
5597// CHECK: test_vpadal_s8
5598// CHECK: vpadal.s8 d{{[0-9]+}}, d{{[0-9]+}}
5599int16x4_t test_vpadal_s8(int16x4_t a, int8x8_t b) {
5600  return vpadal_s8(a, b);
5601}
5602
5603// CHECK: test_vpadal_s16
5604// CHECK: vpadal.s16 d{{[0-9]+}}, d{{[0-9]+}}
5605int32x2_t test_vpadal_s16(int32x2_t a, int16x4_t b) {
5606  return vpadal_s16(a, b);
5607}
5608
5609// CHECK: test_vpadal_s32
5610// CHECK: vpadal.s32 d{{[0-9]+}}, d{{[0-9]+}}
5611int64x1_t test_vpadal_s32(int64x1_t a, int32x2_t b) {
5612  return vpadal_s32(a, b);
5613}
5614
5615// CHECK: test_vpadal_u8
5616// CHECK: vpadal.u8 d{{[0-9]+}}, d{{[0-9]+}}
5617uint16x4_t test_vpadal_u8(uint16x4_t a, uint8x8_t b) {
5618  return vpadal_u8(a, b);
5619}
5620
5621// CHECK: test_vpadal_u16
5622// CHECK: vpadal.u16 d{{[0-9]+}}, d{{[0-9]+}}
5623uint32x2_t test_vpadal_u16(uint32x2_t a, uint16x4_t b) {
5624  return vpadal_u16(a, b);
5625}
5626
5627// CHECK: test_vpadal_u32
5628// CHECK: vpadal.u32 d{{[0-9]+}}, d{{[0-9]+}}
5629uint64x1_t test_vpadal_u32(uint64x1_t a, uint32x2_t b) {
5630  return vpadal_u32(a, b);
5631}
5632
5633// CHECK: test_vpadalq_s8
5634// CHECK: vpadal.s8 q{{[0-9]+}}, q{{[0-9]+}}
5635int16x8_t test_vpadalq_s8(int16x8_t a, int8x16_t b) {
5636  return vpadalq_s8(a, b);
5637}
5638
5639// CHECK: test_vpadalq_s16
5640// CHECK: vpadal.s16 q{{[0-9]+}}, q{{[0-9]+}}
5641int32x4_t test_vpadalq_s16(int32x4_t a, int16x8_t b) {
5642  return vpadalq_s16(a, b);
5643}
5644
5645// CHECK: test_vpadalq_s32
5646// CHECK: vpadal.s32 q{{[0-9]+}}, q{{[0-9]+}}
5647int64x2_t test_vpadalq_s32(int64x2_t a, int32x4_t b) {
5648  return vpadalq_s32(a, b);
5649}
5650
5651// CHECK: test_vpadalq_u8
5652// CHECK: vpadal.u8 q{{[0-9]+}}, q{{[0-9]+}}
5653uint16x8_t test_vpadalq_u8(uint16x8_t a, uint8x16_t b) {
5654  return vpadalq_u8(a, b);
5655}
5656
5657// CHECK: test_vpadalq_u16
5658// CHECK: vpadal.u16 q{{[0-9]+}}, q{{[0-9]+}}
5659uint32x4_t test_vpadalq_u16(uint32x4_t a, uint16x8_t b) {
5660  return vpadalq_u16(a, b);
5661}
5662
5663// CHECK: test_vpadalq_u32
5664// CHECK: vpadal.u32 q{{[0-9]+}}, q{{[0-9]+}}
5665uint64x2_t test_vpadalq_u32(uint64x2_t a, uint32x4_t b) {
5666  return vpadalq_u32(a, b);
5667}
5668
5669
5670// CHECK: test_vpadd_s8
5671// CHECK: vpadd.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5672int8x8_t test_vpadd_s8(int8x8_t a, int8x8_t b) {
5673  return vpadd_s8(a, b);
5674}
5675
5676// CHECK: test_vpadd_s16
5677// CHECK: vpadd.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5678int16x4_t test_vpadd_s16(int16x4_t a, int16x4_t b) {
5679  return vpadd_s16(a, b);
5680}
5681
5682// CHECK: test_vpadd_s32
5683// CHECK: vpadd.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5684int32x2_t test_vpadd_s32(int32x2_t a, int32x2_t b) {
5685  return vpadd_s32(a, b);
5686}
5687
5688// CHECK: test_vpadd_u8
5689// CHECK: vpadd.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5690uint8x8_t test_vpadd_u8(uint8x8_t a, uint8x8_t b) {
5691  return vpadd_u8(a, b);
5692}
5693
5694// CHECK: test_vpadd_u16
5695// CHECK: vpadd.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5696uint16x4_t test_vpadd_u16(uint16x4_t a, uint16x4_t b) {
5697  return vpadd_u16(a, b);
5698}
5699
5700// CHECK: test_vpadd_u32
5701// CHECK: vpadd.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5702uint32x2_t test_vpadd_u32(uint32x2_t a, uint32x2_t b) {
5703  return vpadd_u32(a, b);
5704}
5705
5706// CHECK: test_vpadd_f32
5707// CHECK: vpadd.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5708float32x2_t test_vpadd_f32(float32x2_t a, float32x2_t b) {
5709  return vpadd_f32(a, b);
5710}
5711
5712
5713// CHECK: test_vpaddl_s8
5714// CHECK: vpaddl.s8 d{{[0-9]+}}, d{{[0-9]+}}
5715int16x4_t test_vpaddl_s8(int8x8_t a) {
5716  return vpaddl_s8(a);
5717}
5718
5719// CHECK: test_vpaddl_s16
5720// CHECK: vpaddl.s16 d{{[0-9]+}}, d{{[0-9]+}}
5721int32x2_t test_vpaddl_s16(int16x4_t a) {
5722  return vpaddl_s16(a);
5723}
5724
5725// CHECK: test_vpaddl_s32
5726// CHECK: vpaddl.s32 d{{[0-9]+}}, d{{[0-9]+}}
5727int64x1_t test_vpaddl_s32(int32x2_t a) {
5728  return vpaddl_s32(a);
5729}
5730
5731// CHECK: test_vpaddl_u8
5732// CHECK: vpaddl.u8 d{{[0-9]+}}, d{{[0-9]+}}
5733uint16x4_t test_vpaddl_u8(uint8x8_t a) {
5734  return vpaddl_u8(a);
5735}
5736
5737// CHECK: test_vpaddl_u16
5738// CHECK: vpaddl.u16 d{{[0-9]+}}, d{{[0-9]+}}
5739uint32x2_t test_vpaddl_u16(uint16x4_t a) {
5740  return vpaddl_u16(a);
5741}
5742
5743// CHECK: test_vpaddl_u32
5744// CHECK: vpaddl.u32 d{{[0-9]+}}, d{{[0-9]+}}
5745uint64x1_t test_vpaddl_u32(uint32x2_t a) {
5746  return vpaddl_u32(a);
5747}
5748
5749// CHECK: test_vpaddlq_s8
5750// CHECK: vpaddl.s8 q{{[0-9]+}}, q{{[0-9]+}}
5751int16x8_t test_vpaddlq_s8(int8x16_t a) {
5752  return vpaddlq_s8(a);
5753}
5754
5755// CHECK: test_vpaddlq_s16
5756// CHECK: vpaddl.s16 q{{[0-9]+}}, q{{[0-9]+}}
5757int32x4_t test_vpaddlq_s16(int16x8_t a) {
5758  return vpaddlq_s16(a);
5759}
5760
5761// CHECK: test_vpaddlq_s32
5762// CHECK: vpaddl.s32 q{{[0-9]+}}, q{{[0-9]+}}
5763int64x2_t test_vpaddlq_s32(int32x4_t a) {
5764  return vpaddlq_s32(a);
5765}
5766
5767// CHECK: test_vpaddlq_u8
5768// CHECK: vpaddl.u8 q{{[0-9]+}}, q{{[0-9]+}}
5769uint16x8_t test_vpaddlq_u8(uint8x16_t a) {
5770  return vpaddlq_u8(a);
5771}
5772
5773// CHECK: test_vpaddlq_u16
5774// CHECK: vpaddl.u16 q{{[0-9]+}}, q{{[0-9]+}}
5775uint32x4_t test_vpaddlq_u16(uint16x8_t a) {
5776  return vpaddlq_u16(a);
5777}
5778
5779// CHECK: test_vpaddlq_u32
5780// CHECK: vpaddl.u32 q{{[0-9]+}}, q{{[0-9]+}}
5781uint64x2_t test_vpaddlq_u32(uint32x4_t a) {
5782  return vpaddlq_u32(a);
5783}
5784
5785
5786// CHECK: test_vpmax_s8
5787// CHECK: vpmax.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5788int8x8_t test_vpmax_s8(int8x8_t a, int8x8_t b) {
5789  return vpmax_s8(a, b);
5790}
5791
5792// CHECK: test_vpmax_s16
5793// CHECK: vpmax.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5794int16x4_t test_vpmax_s16(int16x4_t a, int16x4_t b) {
5795  return vpmax_s16(a, b);
5796}
5797
5798// CHECK: test_vpmax_s32
5799// CHECK: vpmax.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5800int32x2_t test_vpmax_s32(int32x2_t a, int32x2_t b) {
5801  return vpmax_s32(a, b);
5802}
5803
5804// CHECK: test_vpmax_u8
5805// CHECK: vpmax.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5806uint8x8_t test_vpmax_u8(uint8x8_t a, uint8x8_t b) {
5807  return vpmax_u8(a, b);
5808}
5809
5810// CHECK: test_vpmax_u16
5811// CHECK: vpmax.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5812uint16x4_t test_vpmax_u16(uint16x4_t a, uint16x4_t b) {
5813  return vpmax_u16(a, b);
5814}
5815
5816// CHECK: test_vpmax_u32
5817// CHECK: vpmax.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5818uint32x2_t test_vpmax_u32(uint32x2_t a, uint32x2_t b) {
5819  return vpmax_u32(a, b);
5820}
5821
5822// CHECK: test_vpmax_f32
5823// CHECK: vpmax.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5824float32x2_t test_vpmax_f32(float32x2_t a, float32x2_t b) {
5825  return vpmax_f32(a, b);
5826}
5827
5828
5829// CHECK: test_vpmin_s8
5830// CHECK: vpmin.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5831int8x8_t test_vpmin_s8(int8x8_t a, int8x8_t b) {
5832  return vpmin_s8(a, b);
5833}
5834
5835// CHECK: test_vpmin_s16
5836// CHECK: vpmin.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5837int16x4_t test_vpmin_s16(int16x4_t a, int16x4_t b) {
5838  return vpmin_s16(a, b);
5839}
5840
5841// CHECK: test_vpmin_s32
5842// CHECK: vpmin.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5843int32x2_t test_vpmin_s32(int32x2_t a, int32x2_t b) {
5844  return vpmin_s32(a, b);
5845}
5846
5847// CHECK: test_vpmin_u8
5848// CHECK: vpmin.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5849uint8x8_t test_vpmin_u8(uint8x8_t a, uint8x8_t b) {
5850  return vpmin_u8(a, b);
5851}
5852
5853// CHECK: test_vpmin_u16
5854// CHECK: vpmin.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5855uint16x4_t test_vpmin_u16(uint16x4_t a, uint16x4_t b) {
5856  return vpmin_u16(a, b);
5857}
5858
5859// CHECK: test_vpmin_u32
5860// CHECK: vpmin.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5861uint32x2_t test_vpmin_u32(uint32x2_t a, uint32x2_t b) {
5862  return vpmin_u32(a, b);
5863}
5864
5865// CHECK: test_vpmin_f32
5866// CHECK: vpmin.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5867float32x2_t test_vpmin_f32(float32x2_t a, float32x2_t b) {
5868  return vpmin_f32(a, b);
5869}
5870
5871
5872// CHECK: test_vqabs_s8
5873// CHECK: vqabs.s8 d{{[0-9]+}}, d{{[0-9]+}}
5874int8x8_t test_vqabs_s8(int8x8_t a) {
5875  return vqabs_s8(a);
5876}
5877
5878// CHECK: test_vqabs_s16
5879// CHECK: vqabs.s16 d{{[0-9]+}}, d{{[0-9]+}}
5880int16x4_t test_vqabs_s16(int16x4_t a) {
5881  return vqabs_s16(a);
5882}
5883
5884// CHECK: test_vqabs_s32
5885// CHECK: vqabs.s32 d{{[0-9]+}}, d{{[0-9]+}}
5886int32x2_t test_vqabs_s32(int32x2_t a) {
5887  return vqabs_s32(a);
5888}
5889
5890// CHECK: test_vqabsq_s8
5891// CHECK: vqabs.s8 q{{[0-9]+}}, q{{[0-9]+}}
5892int8x16_t test_vqabsq_s8(int8x16_t a) {
5893  return vqabsq_s8(a);
5894}
5895
5896// CHECK: test_vqabsq_s16
5897// CHECK: vqabs.s16 q{{[0-9]+}}, q{{[0-9]+}}
5898int16x8_t test_vqabsq_s16(int16x8_t a) {
5899  return vqabsq_s16(a);
5900}
5901
5902// CHECK: test_vqabsq_s32
5903// CHECK: vqabs.s32 q{{[0-9]+}}, q{{[0-9]+}}
5904int32x4_t test_vqabsq_s32(int32x4_t a) {
5905  return vqabsq_s32(a);
5906}
5907
5908
5909// CHECK: test_vqadd_s8
5910// CHECK: vqadd.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5911int8x8_t test_vqadd_s8(int8x8_t a, int8x8_t b) {
5912  return vqadd_s8(a, b);
5913}
5914
5915// CHECK: test_vqadd_s16
5916// CHECK: vqadd.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5917int16x4_t test_vqadd_s16(int16x4_t a, int16x4_t b) {
5918  return vqadd_s16(a, b);
5919}
5920
5921// CHECK: test_vqadd_s32
5922// CHECK: vqadd.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5923int32x2_t test_vqadd_s32(int32x2_t a, int32x2_t b) {
5924  return vqadd_s32(a, b);
5925}
5926
5927// CHECK: test_vqadd_s64
5928// CHECK: vqadd.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5929int64x1_t test_vqadd_s64(int64x1_t a, int64x1_t b) {
5930  return vqadd_s64(a, b);
5931}
5932
5933// CHECK: test_vqadd_u8
5934// CHECK: vqadd.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5935uint8x8_t test_vqadd_u8(uint8x8_t a, uint8x8_t b) {
5936  return vqadd_u8(a, b);
5937}
5938
5939// CHECK: test_vqadd_u16
5940// CHECK: vqadd.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5941uint16x4_t test_vqadd_u16(uint16x4_t a, uint16x4_t b) {
5942  return vqadd_u16(a, b);
5943}
5944
5945// CHECK: test_vqadd_u32
5946// CHECK: vqadd.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5947uint32x2_t test_vqadd_u32(uint32x2_t a, uint32x2_t b) {
5948  return vqadd_u32(a, b);
5949}
5950
5951// CHECK: test_vqadd_u64
5952// CHECK: vqadd.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
5953uint64x1_t test_vqadd_u64(uint64x1_t a, uint64x1_t b) {
5954  return vqadd_u64(a, b);
5955}
5956
5957// CHECK: test_vqaddq_s8
5958// CHECK: vqadd.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5959int8x16_t test_vqaddq_s8(int8x16_t a, int8x16_t b) {
5960  return vqaddq_s8(a, b);
5961}
5962
5963// CHECK: test_vqaddq_s16
5964// CHECK: vqadd.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5965int16x8_t test_vqaddq_s16(int16x8_t a, int16x8_t b) {
5966  return vqaddq_s16(a, b);
5967}
5968
5969// CHECK: test_vqaddq_s32
5970// CHECK: vqadd.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5971int32x4_t test_vqaddq_s32(int32x4_t a, int32x4_t b) {
5972  return vqaddq_s32(a, b);
5973}
5974
5975// CHECK: test_vqaddq_s64
5976// CHECK: vqadd.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5977int64x2_t test_vqaddq_s64(int64x2_t a, int64x2_t b) {
5978  return vqaddq_s64(a, b);
5979}
5980
5981// CHECK: test_vqaddq_u8
5982// CHECK: vqadd.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5983uint8x16_t test_vqaddq_u8(uint8x16_t a, uint8x16_t b) {
5984  return vqaddq_u8(a, b);
5985}
5986
5987// CHECK: test_vqaddq_u16
5988// CHECK: vqadd.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5989uint16x8_t test_vqaddq_u16(uint16x8_t a, uint16x8_t b) {
5990  return vqaddq_u16(a, b);
5991}
5992
5993// CHECK: test_vqaddq_u32
5994// CHECK: vqadd.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
5995uint32x4_t test_vqaddq_u32(uint32x4_t a, uint32x4_t b) {
5996  return vqaddq_u32(a, b);
5997}
5998
5999// CHECK: test_vqaddq_u64
6000// CHECK: vqadd.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6001uint64x2_t test_vqaddq_u64(uint64x2_t a, uint64x2_t b) {
6002  return vqaddq_u64(a, b);
6003}
6004
6005
6006// CHECK: test_vqdmlal_s16
6007// CHECK: vqdmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6008int32x4_t test_vqdmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
6009  return vqdmlal_s16(a, b, c);
6010}
6011
6012// CHECK: test_vqdmlal_s32
6013// CHECK: vqdmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6014int64x2_t test_vqdmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
6015  return vqdmlal_s32(a, b, c);
6016}
6017
6018
6019// CHECK: test_vqdmlal_lane_s16
6020// CHECK: vqdmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6021int32x4_t test_vqdmlal_lane_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
6022  return vqdmlal_lane_s16(a, b, c, 3);
6023}
6024
6025// CHECK: test_vqdmlal_lane_s32
6026// CHECK: vqdmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6027int64x2_t test_vqdmlal_lane_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
6028  return vqdmlal_lane_s32(a, b, c, 1);
6029}
6030
6031
6032// CHECK: test_vqdmlal_n_s16
6033// CHECK: vqdmlal.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6034int32x4_t test_vqdmlal_n_s16(int32x4_t a, int16x4_t b, int16_t c) {
6035  return vqdmlal_n_s16(a, b, c);
6036}
6037
6038// CHECK: test_vqdmlal_n_s32
6039// CHECK: vqdmlal.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6040int64x2_t test_vqdmlal_n_s32(int64x2_t a, int32x2_t b, int32_t c) {
6041  return vqdmlal_n_s32(a, b, c);
6042}
6043
6044
6045// CHECK: test_vqdmlsl_s16
6046// CHECK: vqdmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6047int32x4_t test_vqdmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
6048  return vqdmlsl_s16(a, b, c);
6049}
6050
6051// CHECK: test_vqdmlsl_s32
6052// CHECK: vqdmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6053int64x2_t test_vqdmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
6054  return vqdmlsl_s32(a, b, c);
6055}
6056
6057
6058// CHECK: test_vqdmlsl_lane_s16
6059// CHECK: vqdmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6060int32x4_t test_vqdmlsl_lane_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
6061  return vqdmlsl_lane_s16(a, b, c, 3);
6062}
6063
6064// CHECK: test_vqdmlsl_lane_s32
6065// CHECK: vqdmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6066int64x2_t test_vqdmlsl_lane_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
6067  return vqdmlsl_lane_s32(a, b, c, 1);
6068}
6069
6070
6071// CHECK: test_vqdmlsl_n_s16
6072// CHECK: vqdmlsl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6073int32x4_t test_vqdmlsl_n_s16(int32x4_t a, int16x4_t b, int16_t c) {
6074  return vqdmlsl_n_s16(a, b, c);
6075}
6076
6077// CHECK: test_vqdmlsl_n_s32
6078// CHECK: vqdmlsl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6079int64x2_t test_vqdmlsl_n_s32(int64x2_t a, int32x2_t b, int32_t c) {
6080  return vqdmlsl_n_s32(a, b, c);
6081}
6082
6083
6084// CHECK: test_vqdmulh_s16
6085// CHECK: vqdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6086int16x4_t test_vqdmulh_s16(int16x4_t a, int16x4_t b) {
6087  return vqdmulh_s16(a, b);
6088}
6089
6090// CHECK: test_vqdmulh_s32
6091// CHECK: vqdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6092int32x2_t test_vqdmulh_s32(int32x2_t a, int32x2_t b) {
6093  return vqdmulh_s32(a, b);
6094}
6095
6096// CHECK: test_vqdmulhq_s16
6097// CHECK: vqdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6098int16x8_t test_vqdmulhq_s16(int16x8_t a, int16x8_t b) {
6099  return vqdmulhq_s16(a, b);
6100}
6101
6102// CHECK: test_vqdmulhq_s32
6103// CHECK: vqdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6104int32x4_t test_vqdmulhq_s32(int32x4_t a, int32x4_t b) {
6105  return vqdmulhq_s32(a, b);
6106}
6107
6108
6109// CHECK: test_vqdmulh_lane_s16
6110// CHECK: vqdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6111int16x4_t test_vqdmulh_lane_s16(int16x4_t a, int16x4_t b) {
6112  return vqdmulh_lane_s16(a, b, 3);
6113}
6114
6115// CHECK: test_vqdmulh_lane_s32
6116// CHECK: vqdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6117int32x2_t test_vqdmulh_lane_s32(int32x2_t a, int32x2_t b) {
6118  return vqdmulh_lane_s32(a, b, 1);
6119}
6120
6121// CHECK: test_vqdmulhq_lane_s16
6122// CHECK: vqdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6123int16x8_t test_vqdmulhq_lane_s16(int16x8_t a, int16x4_t b) {
6124  return vqdmulhq_lane_s16(a, b, 3);
6125}
6126
6127// CHECK: test_vqdmulhq_lane_s32
6128// CHECK: vqdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6129int32x4_t test_vqdmulhq_lane_s32(int32x4_t a, int32x2_t b) {
6130  return vqdmulhq_lane_s32(a, b, 1);
6131}
6132
6133
6134// CHECK: test_vqdmulh_n_s16
6135// CHECK: vqdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6136int16x4_t test_vqdmulh_n_s16(int16x4_t a, int16_t b) {
6137  return vqdmulh_n_s16(a, b);
6138}
6139
6140// CHECK: test_vqdmulh_n_s32
6141// CHECK: vqdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6142int32x2_t test_vqdmulh_n_s32(int32x2_t a, int32_t b) {
6143  return vqdmulh_n_s32(a, b);
6144}
6145
6146// CHECK: test_vqdmulhq_n_s16
6147// CHECK: vqdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6148int16x8_t test_vqdmulhq_n_s16(int16x8_t a, int16_t b) {
6149  return vqdmulhq_n_s16(a, b);
6150}
6151
6152// CHECK: test_vqdmulhq_n_s32
6153// CHECK: vqdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6154int32x4_t test_vqdmulhq_n_s32(int32x4_t a, int32_t b) {
6155  return vqdmulhq_n_s32(a, b);
6156}
6157
6158
6159// CHECK: test_vqdmull_s16
6160// CHECK: vqdmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6161int32x4_t test_vqdmull_s16(int16x4_t a, int16x4_t b) {
6162  return vqdmull_s16(a, b);
6163}
6164
6165// CHECK: test_vqdmull_s32
6166// CHECK: vqdmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6167int64x2_t test_vqdmull_s32(int32x2_t a, int32x2_t b) {
6168  return vqdmull_s32(a, b);
6169}
6170
6171
6172// CHECK: test_vqdmull_lane_s16
6173// CHECK: vqdmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6174int32x4_t test_vqdmull_lane_s16(int16x4_t a, int16x4_t b) {
6175  return vqdmull_lane_s16(a, b, 3);
6176}
6177
6178// CHECK: test_vqdmull_lane_s32
6179// CHECK: vqdmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6180int64x2_t test_vqdmull_lane_s32(int32x2_t a, int32x2_t b) {
6181  return vqdmull_lane_s32(a, b, 1);
6182}
6183
6184
6185// CHECK: test_vqdmull_n_s16
6186// CHECK: vqdmull.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6187int32x4_t test_vqdmull_n_s16(int16x4_t a, int16_t b) {
6188  return vqdmull_n_s16(a, b);
6189}
6190
6191// CHECK: test_vqdmull_n_s32
6192// CHECK: vqdmull.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6193int64x2_t test_vqdmull_n_s32(int32x2_t a, int32_t b) {
6194  return vqdmull_n_s32(a, b);
6195}
6196
6197
6198// CHECK: test_vqmovn_s16
6199// CHECK: vqmovn.s16 d{{[0-9]+}}, q{{[0-9]+}}
6200int8x8_t test_vqmovn_s16(int16x8_t a) {
6201  return vqmovn_s16(a);
6202}
6203
6204// CHECK: test_vqmovn_s32
6205// CHECK: vqmovn.s32 d{{[0-9]+}}, q{{[0-9]+}}
6206int16x4_t test_vqmovn_s32(int32x4_t a) {
6207  return vqmovn_s32(a);
6208}
6209
6210// CHECK: test_vqmovn_s64
6211// CHECK: vqmovn.s64 d{{[0-9]+}}, q{{[0-9]+}}
6212int32x2_t test_vqmovn_s64(int64x2_t a) {
6213  return vqmovn_s64(a);
6214}
6215
6216// CHECK: test_vqmovn_u16
6217// CHECK: vqmovn.u16 d{{[0-9]+}}, q{{[0-9]+}}
6218uint8x8_t test_vqmovn_u16(uint16x8_t a) {
6219  return vqmovn_u16(a);
6220}
6221
6222// CHECK: test_vqmovn_u32
6223// CHECK: vqmovn.u32 d{{[0-9]+}}, q{{[0-9]+}}
6224uint16x4_t test_vqmovn_u32(uint32x4_t a) {
6225  return vqmovn_u32(a);
6226}
6227
6228// CHECK: test_vqmovn_u64
6229// CHECK: vqmovn.u64 d{{[0-9]+}}, q{{[0-9]+}}
6230uint32x2_t test_vqmovn_u64(uint64x2_t a) {
6231  return vqmovn_u64(a);
6232}
6233
6234
6235// CHECK: test_vqmovun_s16
6236// CHECK: vqmovun.s16 d{{[0-9]+}}, q{{[0-9]+}}
6237uint8x8_t test_vqmovun_s16(int16x8_t a) {
6238  return vqmovun_s16(a);
6239}
6240
6241// CHECK: test_vqmovun_s32
6242// CHECK: vqmovun.s32 d{{[0-9]+}}, q{{[0-9]+}}
6243uint16x4_t test_vqmovun_s32(int32x4_t a) {
6244  return vqmovun_s32(a);
6245}
6246
6247// CHECK: test_vqmovun_s64
6248// CHECK: vqmovun.s64 d{{[0-9]+}}, q{{[0-9]+}}
6249uint32x2_t test_vqmovun_s64(int64x2_t a) {
6250  return vqmovun_s64(a);
6251}
6252
6253
6254// CHECK: test_vqneg_s8
6255// CHECK: vqneg.s8 d{{[0-9]+}}, d{{[0-9]+}}
6256int8x8_t test_vqneg_s8(int8x8_t a) {
6257  return vqneg_s8(a);
6258}
6259
6260// CHECK: test_vqneg_s16
6261// CHECK: vqneg.s16 d{{[0-9]+}}, d{{[0-9]+}}
6262int16x4_t test_vqneg_s16(int16x4_t a) {
6263  return vqneg_s16(a);
6264}
6265
6266// CHECK: test_vqneg_s32
6267// CHECK: vqneg.s32 d{{[0-9]+}}, d{{[0-9]+}}
6268int32x2_t test_vqneg_s32(int32x2_t a) {
6269  return vqneg_s32(a);
6270}
6271
6272// CHECK: test_vqnegq_s8
6273// CHECK: vqneg.s8 q{{[0-9]+}}, q{{[0-9]+}}
6274int8x16_t test_vqnegq_s8(int8x16_t a) {
6275  return vqnegq_s8(a);
6276}
6277
6278// CHECK: test_vqnegq_s16
6279// CHECK: vqneg.s16 q{{[0-9]+}}, q{{[0-9]+}}
6280int16x8_t test_vqnegq_s16(int16x8_t a) {
6281  return vqnegq_s16(a);
6282}
6283
6284// CHECK: test_vqnegq_s32
6285// CHECK: vqneg.s32 q{{[0-9]+}}, q{{[0-9]+}}
6286int32x4_t test_vqnegq_s32(int32x4_t a) {
6287  return vqnegq_s32(a);
6288}
6289
6290
6291// CHECK: test_vqrdmulh_s16
6292// CHECK: vqrdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6293int16x4_t test_vqrdmulh_s16(int16x4_t a, int16x4_t b) {
6294  return vqrdmulh_s16(a, b);
6295}
6296
6297// CHECK: test_vqrdmulh_s32
6298// CHECK: vqrdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6299int32x2_t test_vqrdmulh_s32(int32x2_t a, int32x2_t b) {
6300  return vqrdmulh_s32(a, b);
6301}
6302
6303// CHECK: test_vqrdmulhq_s16
6304// CHECK: vqrdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6305int16x8_t test_vqrdmulhq_s16(int16x8_t a, int16x8_t b) {
6306  return vqrdmulhq_s16(a, b);
6307}
6308
6309// CHECK: test_vqrdmulhq_s32
6310// CHECK: vqrdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6311int32x4_t test_vqrdmulhq_s32(int32x4_t a, int32x4_t b) {
6312  return vqrdmulhq_s32(a, b);
6313}
6314
6315
6316// CHECK: test_vqrdmulh_lane_s16
6317// CHECK: vqrdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6318int16x4_t test_vqrdmulh_lane_s16(int16x4_t a, int16x4_t b) {
6319  return vqrdmulh_lane_s16(a, b, 3);
6320}
6321
6322// CHECK: test_vqrdmulh_lane_s32
6323// CHECK: vqrdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6324int32x2_t test_vqrdmulh_lane_s32(int32x2_t a, int32x2_t b) {
6325  return vqrdmulh_lane_s32(a, b, 1);
6326}
6327
6328// CHECK: test_vqrdmulhq_lane_s16
6329// CHECK: vqrdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6330int16x8_t test_vqrdmulhq_lane_s16(int16x8_t a, int16x4_t b) {
6331  return vqrdmulhq_lane_s16(a, b, 3);
6332}
6333
6334// CHECK: test_vqrdmulhq_lane_s32
6335// CHECK: vqrdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}[{{[0-9]}}]
6336int32x4_t test_vqrdmulhq_lane_s32(int32x4_t a, int32x2_t b) {
6337  return vqrdmulhq_lane_s32(a, b, 1);
6338}
6339
6340
6341// CHECK: test_vqrdmulh_n_s16
6342// CHECK: vqrdmulh.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6343int16x4_t test_vqrdmulh_n_s16(int16x4_t a, int16_t b) {
6344  return vqrdmulh_n_s16(a, b);
6345}
6346
6347// CHECK: test_vqrdmulh_n_s32
6348// CHECK: vqrdmulh.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6349int32x2_t test_vqrdmulh_n_s32(int32x2_t a, int32_t b) {
6350  return vqrdmulh_n_s32(a, b);
6351}
6352
6353// CHECK: test_vqrdmulhq_n_s16
6354// CHECK: vqrdmulh.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6355int16x8_t test_vqrdmulhq_n_s16(int16x8_t a, int16_t b) {
6356  return vqrdmulhq_n_s16(a, b);
6357}
6358
6359// CHECK: test_vqrdmulhq_n_s32
6360// CHECK: vqrdmulh.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6361int32x4_t test_vqrdmulhq_n_s32(int32x4_t a, int32_t b) {
6362  return vqrdmulhq_n_s32(a, b);
6363}
6364
6365
6366// CHECK: test_vqrshl_s8
6367// CHECK: vqrshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6368int8x8_t test_vqrshl_s8(int8x8_t a, int8x8_t b) {
6369  return vqrshl_s8(a, b);
6370}
6371
6372// CHECK: test_vqrshl_s16
6373// CHECK: vqrshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6374int16x4_t test_vqrshl_s16(int16x4_t a, int16x4_t b) {
6375  return vqrshl_s16(a, b);
6376}
6377
6378// CHECK: test_vqrshl_s32
6379// CHECK: vqrshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6380int32x2_t test_vqrshl_s32(int32x2_t a, int32x2_t b) {
6381  return vqrshl_s32(a, b);
6382}
6383
6384// CHECK: test_vqrshl_s64
6385// CHECK: vqrshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6386int64x1_t test_vqrshl_s64(int64x1_t a, int64x1_t b) {
6387  return vqrshl_s64(a, b);
6388}
6389
6390// CHECK: test_vqrshl_u8
6391// CHECK: vqrshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6392uint8x8_t test_vqrshl_u8(uint8x8_t a, int8x8_t b) {
6393  return vqrshl_u8(a, b);
6394}
6395
6396// CHECK: test_vqrshl_u16
6397// CHECK: vqrshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6398uint16x4_t test_vqrshl_u16(uint16x4_t a, int16x4_t b) {
6399  return vqrshl_u16(a, b);
6400}
6401
6402// CHECK: test_vqrshl_u32
6403// CHECK: vqrshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6404uint32x2_t test_vqrshl_u32(uint32x2_t a, int32x2_t b) {
6405  return vqrshl_u32(a, b);
6406}
6407
6408// CHECK: test_vqrshl_u64
6409// CHECK: vqrshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6410uint64x1_t test_vqrshl_u64(uint64x1_t a, int64x1_t b) {
6411  return vqrshl_u64(a, b);
6412}
6413
6414// CHECK: test_vqrshlq_s8
6415// CHECK: vqrshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6416int8x16_t test_vqrshlq_s8(int8x16_t a, int8x16_t b) {
6417  return vqrshlq_s8(a, b);
6418}
6419
6420// CHECK: test_vqrshlq_s16
6421// CHECK: vqrshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6422int16x8_t test_vqrshlq_s16(int16x8_t a, int16x8_t b) {
6423  return vqrshlq_s16(a, b);
6424}
6425
6426// CHECK: test_vqrshlq_s32
6427// CHECK: vqrshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6428int32x4_t test_vqrshlq_s32(int32x4_t a, int32x4_t b) {
6429  return vqrshlq_s32(a, b);
6430}
6431
6432// CHECK: test_vqrshlq_s64
6433// CHECK: vqrshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6434int64x2_t test_vqrshlq_s64(int64x2_t a, int64x2_t b) {
6435  return vqrshlq_s64(a, b);
6436}
6437
6438// CHECK: test_vqrshlq_u8
6439// CHECK: vqrshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6440uint8x16_t test_vqrshlq_u8(uint8x16_t a, int8x16_t b) {
6441  return vqrshlq_u8(a, b);
6442}
6443
6444// CHECK: test_vqrshlq_u16
6445// CHECK: vqrshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6446uint16x8_t test_vqrshlq_u16(uint16x8_t a, int16x8_t b) {
6447  return vqrshlq_u16(a, b);
6448}
6449
6450// CHECK: test_vqrshlq_u32
6451// CHECK: vqrshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6452uint32x4_t test_vqrshlq_u32(uint32x4_t a, int32x4_t b) {
6453  return vqrshlq_u32(a, b);
6454}
6455
6456// CHECK: test_vqrshlq_u64
6457// CHECK: vqrshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6458uint64x2_t test_vqrshlq_u64(uint64x2_t a, int64x2_t b) {
6459  return vqrshlq_u64(a, b);
6460}
6461
6462
6463// CHECK: test_vqrshrn_n_s16
6464// CHECK: vqrshrn.s16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6465int8x8_t test_vqrshrn_n_s16(int16x8_t a) {
6466  return vqrshrn_n_s16(a, 1);
6467}
6468
6469// CHECK: test_vqrshrn_n_s32
6470// CHECK: vqrshrn.s32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6471int16x4_t test_vqrshrn_n_s32(int32x4_t a) {
6472  return vqrshrn_n_s32(a, 1);
6473}
6474
6475// CHECK: test_vqrshrn_n_s64
6476// CHECK: vqrshrn.s64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6477int32x2_t test_vqrshrn_n_s64(int64x2_t a) {
6478  return vqrshrn_n_s64(a, 1);
6479}
6480
6481// CHECK: test_vqrshrn_n_u16
6482// CHECK: vqrshrn.u16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6483uint8x8_t test_vqrshrn_n_u16(uint16x8_t a) {
6484  return vqrshrn_n_u16(a, 1);
6485}
6486
6487// CHECK: test_vqrshrn_n_u32
6488// CHECK: vqrshrn.u32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6489uint16x4_t test_vqrshrn_n_u32(uint32x4_t a) {
6490  return vqrshrn_n_u32(a, 1);
6491}
6492
6493// CHECK: test_vqrshrn_n_u64
6494// CHECK: vqrshrn.u64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6495uint32x2_t test_vqrshrn_n_u64(uint64x2_t a) {
6496  return vqrshrn_n_u64(a, 1);
6497}
6498
6499
6500// CHECK: test_vqrshrun_n_s16
6501// CHECK: vqrshrun.s16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6502uint8x8_t test_vqrshrun_n_s16(int16x8_t a) {
6503  return vqrshrun_n_s16(a, 1);
6504}
6505
6506// CHECK: test_vqrshrun_n_s32
6507// CHECK: vqrshrun.s32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6508uint16x4_t test_vqrshrun_n_s32(int32x4_t a) {
6509  return vqrshrun_n_s32(a, 1);
6510}
6511
6512// CHECK: test_vqrshrun_n_s64
6513// CHECK: vqrshrun.s64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6514uint32x2_t test_vqrshrun_n_s64(int64x2_t a) {
6515  return vqrshrun_n_s64(a, 1);
6516}
6517
6518
6519// CHECK: test_vqshl_s8
6520// CHECK: vqshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6521int8x8_t test_vqshl_s8(int8x8_t a, int8x8_t b) {
6522  return vqshl_s8(a, b);
6523}
6524
6525// CHECK: test_vqshl_s16
6526// CHECK: vqshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6527int16x4_t test_vqshl_s16(int16x4_t a, int16x4_t b) {
6528  return vqshl_s16(a, b);
6529}
6530
6531// CHECK: test_vqshl_s32
6532// CHECK: vqshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6533int32x2_t test_vqshl_s32(int32x2_t a, int32x2_t b) {
6534  return vqshl_s32(a, b);
6535}
6536
6537// CHECK: test_vqshl_s64
6538// CHECK: vqshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6539int64x1_t test_vqshl_s64(int64x1_t a, int64x1_t b) {
6540  return vqshl_s64(a, b);
6541}
6542
6543// CHECK: test_vqshl_u8
6544// CHECK: vqshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6545uint8x8_t test_vqshl_u8(uint8x8_t a, int8x8_t b) {
6546  return vqshl_u8(a, b);
6547}
6548
6549// CHECK: test_vqshl_u16
6550// CHECK: vqshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6551uint16x4_t test_vqshl_u16(uint16x4_t a, int16x4_t b) {
6552  return vqshl_u16(a, b);
6553}
6554
6555// CHECK: test_vqshl_u32
6556// CHECK: vqshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6557uint32x2_t test_vqshl_u32(uint32x2_t a, int32x2_t b) {
6558  return vqshl_u32(a, b);
6559}
6560
6561// CHECK: test_vqshl_u64
6562// CHECK: vqshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6563uint64x1_t test_vqshl_u64(uint64x1_t a, int64x1_t b) {
6564  return vqshl_u64(a, b);
6565}
6566
6567// CHECK: test_vqshlq_s8
6568// CHECK: vqshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6569int8x16_t test_vqshlq_s8(int8x16_t a, int8x16_t b) {
6570  return vqshlq_s8(a, b);
6571}
6572
6573// CHECK: test_vqshlq_s16
6574// CHECK: vqshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6575int16x8_t test_vqshlq_s16(int16x8_t a, int16x8_t b) {
6576  return vqshlq_s16(a, b);
6577}
6578
6579// CHECK: test_vqshlq_s32
6580// CHECK: vqshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6581int32x4_t test_vqshlq_s32(int32x4_t a, int32x4_t b) {
6582  return vqshlq_s32(a, b);
6583}
6584
6585// CHECK: test_vqshlq_s64
6586// CHECK: vqshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6587int64x2_t test_vqshlq_s64(int64x2_t a, int64x2_t b) {
6588  return vqshlq_s64(a, b);
6589}
6590
6591// CHECK: test_vqshlq_u8
6592// CHECK: vqshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6593uint8x16_t test_vqshlq_u8(uint8x16_t a, int8x16_t b) {
6594  return vqshlq_u8(a, b);
6595}
6596
6597// CHECK: test_vqshlq_u16
6598// CHECK: vqshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6599uint16x8_t test_vqshlq_u16(uint16x8_t a, int16x8_t b) {
6600  return vqshlq_u16(a, b);
6601}
6602
6603// CHECK: test_vqshlq_u32
6604// CHECK: vqshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6605uint32x4_t test_vqshlq_u32(uint32x4_t a, int32x4_t b) {
6606  return vqshlq_u32(a, b);
6607}
6608
6609// CHECK: test_vqshlq_u64
6610// CHECK: vqshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6611uint64x2_t test_vqshlq_u64(uint64x2_t a, int64x2_t b) {
6612  return vqshlq_u64(a, b);
6613}
6614
6615
6616// CHECK: test_vqshlu_n_s8
6617// CHECK: vqshlu.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6618uint8x8_t test_vqshlu_n_s8(int8x8_t a) {
6619  return vqshlu_n_s8(a, 1);
6620}
6621
6622// CHECK: test_vqshlu_n_s16
6623// CHECK: vqshlu.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6624uint16x4_t test_vqshlu_n_s16(int16x4_t a) {
6625  return vqshlu_n_s16(a, 1);
6626}
6627
6628// CHECK: test_vqshlu_n_s32
6629// CHECK: vqshlu.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6630uint32x2_t test_vqshlu_n_s32(int32x2_t a) {
6631  return vqshlu_n_s32(a, 1);
6632}
6633
6634// CHECK: test_vqshlu_n_s64
6635// CHECK: vqshlu.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6636uint64x1_t test_vqshlu_n_s64(int64x1_t a) {
6637  return vqshlu_n_s64(a, 1);
6638}
6639
6640// CHECK: test_vqshluq_n_s8
6641// CHECK: vqshlu.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6642uint8x16_t test_vqshluq_n_s8(int8x16_t a) {
6643  return vqshluq_n_s8(a, 1);
6644}
6645
6646// CHECK: test_vqshluq_n_s16
6647// CHECK: vqshlu.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6648uint16x8_t test_vqshluq_n_s16(int16x8_t a) {
6649  return vqshluq_n_s16(a, 1);
6650}
6651
6652// CHECK: test_vqshluq_n_s32
6653// CHECK: vqshlu.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6654uint32x4_t test_vqshluq_n_s32(int32x4_t a) {
6655  return vqshluq_n_s32(a, 1);
6656}
6657
6658// CHECK: test_vqshluq_n_s64
6659// CHECK: vqshlu.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6660uint64x2_t test_vqshluq_n_s64(int64x2_t a) {
6661  return vqshluq_n_s64(a, 1);
6662}
6663
6664
6665// CHECK: test_vqshl_n_s8
6666// CHECK: vqshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6667int8x8_t test_vqshl_n_s8(int8x8_t a) {
6668  return vqshl_n_s8(a, 1);
6669}
6670
6671// CHECK: test_vqshl_n_s16
6672// CHECK: vqshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6673int16x4_t test_vqshl_n_s16(int16x4_t a) {
6674  return vqshl_n_s16(a, 1);
6675}
6676
6677// CHECK: test_vqshl_n_s32
6678// CHECK: vqshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6679int32x2_t test_vqshl_n_s32(int32x2_t a) {
6680  return vqshl_n_s32(a, 1);
6681}
6682
6683// CHECK: test_vqshl_n_s64
6684// CHECK: vqshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6685int64x1_t test_vqshl_n_s64(int64x1_t a) {
6686  return vqshl_n_s64(a, 1);
6687}
6688
6689// CHECK: test_vqshl_n_u8
6690// CHECK: vqshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6691uint8x8_t test_vqshl_n_u8(uint8x8_t a) {
6692  return vqshl_n_u8(a, 1);
6693}
6694
6695// CHECK: test_vqshl_n_u16
6696// CHECK: vqshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6697uint16x4_t test_vqshl_n_u16(uint16x4_t a) {
6698  return vqshl_n_u16(a, 1);
6699}
6700
6701// CHECK: test_vqshl_n_u32
6702// CHECK: vqshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6703uint32x2_t test_vqshl_n_u32(uint32x2_t a) {
6704  return vqshl_n_u32(a, 1);
6705}
6706
6707// CHECK: test_vqshl_n_u64
6708// CHECK: vqshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
6709uint64x1_t test_vqshl_n_u64(uint64x1_t a) {
6710  return vqshl_n_u64(a, 1);
6711}
6712
6713// CHECK: test_vqshlq_n_s8
6714// CHECK: vqshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6715int8x16_t test_vqshlq_n_s8(int8x16_t a) {
6716  return vqshlq_n_s8(a, 1);
6717}
6718
6719// CHECK: test_vqshlq_n_s16
6720// CHECK: vqshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6721int16x8_t test_vqshlq_n_s16(int16x8_t a) {
6722  return vqshlq_n_s16(a, 1);
6723}
6724
6725// CHECK: test_vqshlq_n_s32
6726// CHECK: vqshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6727int32x4_t test_vqshlq_n_s32(int32x4_t a) {
6728  return vqshlq_n_s32(a, 1);
6729}
6730
6731// CHECK: test_vqshlq_n_s64
6732// CHECK: vqshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6733int64x2_t test_vqshlq_n_s64(int64x2_t a) {
6734  return vqshlq_n_s64(a, 1);
6735}
6736
6737// CHECK: test_vqshlq_n_u8
6738// CHECK: vqshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6739uint8x16_t test_vqshlq_n_u8(uint8x16_t a) {
6740  return vqshlq_n_u8(a, 1);
6741}
6742
6743// CHECK: test_vqshlq_n_u16
6744// CHECK: vqshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6745uint16x8_t test_vqshlq_n_u16(uint16x8_t a) {
6746  return vqshlq_n_u16(a, 1);
6747}
6748
6749// CHECK: test_vqshlq_n_u32
6750// CHECK: vqshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6751uint32x4_t test_vqshlq_n_u32(uint32x4_t a) {
6752  return vqshlq_n_u32(a, 1);
6753}
6754
6755// CHECK: test_vqshlq_n_u64
6756// CHECK: vqshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6757uint64x2_t test_vqshlq_n_u64(uint64x2_t a) {
6758  return vqshlq_n_u64(a, 1);
6759}
6760
6761
6762// CHECK: test_vqshrn_n_s16
6763// CHECK: vqshrn.s16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6764int8x8_t test_vqshrn_n_s16(int16x8_t a) {
6765  return vqshrn_n_s16(a, 1);
6766}
6767
6768// CHECK: test_vqshrn_n_s32
6769// CHECK: vqshrn.s32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6770int16x4_t test_vqshrn_n_s32(int32x4_t a) {
6771  return vqshrn_n_s32(a, 1);
6772}
6773
6774// CHECK: test_vqshrn_n_s64
6775// CHECK: vqshrn.s64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6776int32x2_t test_vqshrn_n_s64(int64x2_t a) {
6777  return vqshrn_n_s64(a, 1);
6778}
6779
6780// CHECK: test_vqshrn_n_u16
6781// CHECK: vqshrn.u16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6782uint8x8_t test_vqshrn_n_u16(uint16x8_t a) {
6783  return vqshrn_n_u16(a, 1);
6784}
6785
6786// CHECK: test_vqshrn_n_u32
6787// CHECK: vqshrn.u32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6788uint16x4_t test_vqshrn_n_u32(uint32x4_t a) {
6789  return vqshrn_n_u32(a, 1);
6790}
6791
6792// CHECK: test_vqshrn_n_u64
6793// CHECK: vqshrn.u64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6794uint32x2_t test_vqshrn_n_u64(uint64x2_t a) {
6795  return vqshrn_n_u64(a, 1);
6796}
6797
6798
6799// CHECK: test_vqshrun_n_s16
6800// CHECK: vqshrun.s16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6801uint8x8_t test_vqshrun_n_s16(int16x8_t a) {
6802  return vqshrun_n_s16(a, 1);
6803}
6804
6805// CHECK: test_vqshrun_n_s32
6806// CHECK: vqshrun.s32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6807uint16x4_t test_vqshrun_n_s32(int32x4_t a) {
6808  return vqshrun_n_s32(a, 1);
6809}
6810
6811// CHECK: test_vqshrun_n_s64
6812// CHECK: vqshrun.s64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
6813uint32x2_t test_vqshrun_n_s64(int64x2_t a) {
6814  return vqshrun_n_s64(a, 1);
6815}
6816
6817
6818// CHECK: test_vqsub_s8
6819// CHECK: vqsub.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6820int8x8_t test_vqsub_s8(int8x8_t a, int8x8_t b) {
6821  return vqsub_s8(a, b);
6822}
6823
6824// CHECK: test_vqsub_s16
6825// CHECK: vqsub.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6826int16x4_t test_vqsub_s16(int16x4_t a, int16x4_t b) {
6827  return vqsub_s16(a, b);
6828}
6829
6830// CHECK: test_vqsub_s32
6831// CHECK: vqsub.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6832int32x2_t test_vqsub_s32(int32x2_t a, int32x2_t b) {
6833  return vqsub_s32(a, b);
6834}
6835
6836// CHECK: test_vqsub_s64
6837// CHECK: vqsub.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6838int64x1_t test_vqsub_s64(int64x1_t a, int64x1_t b) {
6839  return vqsub_s64(a, b);
6840}
6841
6842// CHECK: test_vqsub_u8
6843// CHECK: vqsub.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6844uint8x8_t test_vqsub_u8(uint8x8_t a, uint8x8_t b) {
6845  return vqsub_u8(a, b);
6846}
6847
6848// CHECK: test_vqsub_u16
6849// CHECK: vqsub.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6850uint16x4_t test_vqsub_u16(uint16x4_t a, uint16x4_t b) {
6851  return vqsub_u16(a, b);
6852}
6853
6854// CHECK: test_vqsub_u32
6855// CHECK: vqsub.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6856uint32x2_t test_vqsub_u32(uint32x2_t a, uint32x2_t b) {
6857  return vqsub_u32(a, b);
6858}
6859
6860// CHECK: test_vqsub_u64
6861// CHECK: vqsub.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6862uint64x1_t test_vqsub_u64(uint64x1_t a, uint64x1_t b) {
6863  return vqsub_u64(a, b);
6864}
6865
6866// CHECK: test_vqsubq_s8
6867// CHECK: vqsub.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6868int8x16_t test_vqsubq_s8(int8x16_t a, int8x16_t b) {
6869  return vqsubq_s8(a, b);
6870}
6871
6872// CHECK: test_vqsubq_s16
6873// CHECK: vqsub.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6874int16x8_t test_vqsubq_s16(int16x8_t a, int16x8_t b) {
6875  return vqsubq_s16(a, b);
6876}
6877
6878// CHECK: test_vqsubq_s32
6879// CHECK: vqsub.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6880int32x4_t test_vqsubq_s32(int32x4_t a, int32x4_t b) {
6881  return vqsubq_s32(a, b);
6882}
6883
6884// CHECK: test_vqsubq_s64
6885// CHECK: vqsub.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6886int64x2_t test_vqsubq_s64(int64x2_t a, int64x2_t b) {
6887  return vqsubq_s64(a, b);
6888}
6889
6890// CHECK: test_vqsubq_u8
6891// CHECK: vqsub.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6892uint8x16_t test_vqsubq_u8(uint8x16_t a, uint8x16_t b) {
6893  return vqsubq_u8(a, b);
6894}
6895
6896// CHECK: test_vqsubq_u16
6897// CHECK: vqsub.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6898uint16x8_t test_vqsubq_u16(uint16x8_t a, uint16x8_t b) {
6899  return vqsubq_u16(a, b);
6900}
6901
6902// CHECK: test_vqsubq_u32
6903// CHECK: vqsub.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6904uint32x4_t test_vqsubq_u32(uint32x4_t a, uint32x4_t b) {
6905  return vqsubq_u32(a, b);
6906}
6907
6908// CHECK: test_vqsubq_u64
6909// CHECK: vqsub.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6910uint64x2_t test_vqsubq_u64(uint64x2_t a, uint64x2_t b) {
6911  return vqsubq_u64(a, b);
6912}
6913
6914
6915// CHECK: test_vraddhn_s16
6916// CHECK: vraddhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6917int8x8_t test_vraddhn_s16(int16x8_t a, int16x8_t b) {
6918  return vraddhn_s16(a, b);
6919}
6920
6921// CHECK: test_vraddhn_s32
6922// CHECK: vraddhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6923int16x4_t test_vraddhn_s32(int32x4_t a, int32x4_t b) {
6924  return vraddhn_s32(a, b);
6925}
6926
6927// CHECK: test_vraddhn_s64
6928// CHECK: vraddhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6929int32x2_t test_vraddhn_s64(int64x2_t a, int64x2_t b) {
6930  return vraddhn_s64(a, b);
6931}
6932
6933// CHECK: test_vraddhn_u16
6934// CHECK: vraddhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6935uint8x8_t test_vraddhn_u16(uint16x8_t a, uint16x8_t b) {
6936  return vraddhn_u16(a, b);
6937}
6938
6939// CHECK: test_vraddhn_u32
6940// CHECK: vraddhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6941uint16x4_t test_vraddhn_u32(uint32x4_t a, uint32x4_t b) {
6942  return vraddhn_u32(a, b);
6943}
6944
6945// CHECK: test_vraddhn_u64
6946// CHECK: vraddhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6947uint32x2_t test_vraddhn_u64(uint64x2_t a, uint64x2_t b) {
6948  return vraddhn_u64(a, b);
6949}
6950
6951
6952// CHECK: test_vrecpe_f32
6953// CHECK: vrecpe.f32 d{{[0-9]+}}, d{{[0-9]+}}
6954float32x2_t test_vrecpe_f32(float32x2_t a) {
6955  return vrecpe_f32(a);
6956}
6957
6958// CHECK: test_vrecpe_u32
6959// CHECK: vrecpe.u32 d{{[0-9]+}}, d{{[0-9]+}}
6960uint32x2_t test_vrecpe_u32(uint32x2_t a) {
6961  return vrecpe_u32(a);
6962}
6963
6964// CHECK: test_vrecpeq_f32
6965// CHECK: vrecpe.f32 q{{[0-9]+}}, q{{[0-9]+}}
6966float32x4_t test_vrecpeq_f32(float32x4_t a) {
6967  return vrecpeq_f32(a);
6968}
6969
6970// CHECK: test_vrecpeq_u32
6971// CHECK: vrecpe.u32 q{{[0-9]+}}, q{{[0-9]+}}
6972uint32x4_t test_vrecpeq_u32(uint32x4_t a) {
6973  return vrecpeq_u32(a);
6974}
6975
6976
6977// CHECK: test_vrecps_f32
6978// CHECK: vrecps.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
6979float32x2_t test_vrecps_f32(float32x2_t a, float32x2_t b) {
6980  return vrecps_f32(a, b);
6981}
6982
6983// CHECK: test_vrecpsq_f32
6984// CHECK: vrecps.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
6985float32x4_t test_vrecpsq_f32(float32x4_t a, float32x4_t b) {
6986  return vrecpsq_f32(a, b);
6987}
6988
6989
6990// CHECK: test_vreinterpret_s8_s16
6991int8x8_t test_vreinterpret_s8_s16(int16x4_t a) {
6992  return vreinterpret_s8_s16(a);
6993}
6994
6995// CHECK: test_vreinterpret_s8_s32
6996int8x8_t test_vreinterpret_s8_s32(int32x2_t a) {
6997  return vreinterpret_s8_s32(a);
6998}
6999
7000// CHECK: test_vreinterpret_s8_s64
7001int8x8_t test_vreinterpret_s8_s64(int64x1_t a) {
7002  return vreinterpret_s8_s64(a);
7003}
7004
7005// CHECK: test_vreinterpret_s8_u8
7006int8x8_t test_vreinterpret_s8_u8(uint8x8_t a) {
7007  return vreinterpret_s8_u8(a);
7008}
7009
7010// CHECK: test_vreinterpret_s8_u16
7011int8x8_t test_vreinterpret_s8_u16(uint16x4_t a) {
7012  return vreinterpret_s8_u16(a);
7013}
7014
7015// CHECK: test_vreinterpret_s8_u32
7016int8x8_t test_vreinterpret_s8_u32(uint32x2_t a) {
7017  return vreinterpret_s8_u32(a);
7018}
7019
7020// CHECK: test_vreinterpret_s8_u64
7021int8x8_t test_vreinterpret_s8_u64(uint64x1_t a) {
7022  return vreinterpret_s8_u64(a);
7023}
7024
7025// CHECK: test_vreinterpret_s8_f16
7026int8x8_t test_vreinterpret_s8_f16(float16x4_t a) {
7027  return vreinterpret_s8_f16(a);
7028}
7029
7030// CHECK: test_vreinterpret_s8_f32
7031int8x8_t test_vreinterpret_s8_f32(float32x2_t a) {
7032  return vreinterpret_s8_f32(a);
7033}
7034
7035// CHECK: test_vreinterpret_s8_p8
7036int8x8_t test_vreinterpret_s8_p8(poly8x8_t a) {
7037  return vreinterpret_s8_p8(a);
7038}
7039
7040// CHECK: test_vreinterpret_s8_p16
7041int8x8_t test_vreinterpret_s8_p16(poly16x4_t a) {
7042  return vreinterpret_s8_p16(a);
7043}
7044
7045// CHECK: test_vreinterpret_s16_s8
7046int16x4_t test_vreinterpret_s16_s8(int8x8_t a) {
7047  return vreinterpret_s16_s8(a);
7048}
7049
7050// CHECK: test_vreinterpret_s16_s32
7051int16x4_t test_vreinterpret_s16_s32(int32x2_t a) {
7052  return vreinterpret_s16_s32(a);
7053}
7054
7055// CHECK: test_vreinterpret_s16_s64
7056int16x4_t test_vreinterpret_s16_s64(int64x1_t a) {
7057  return vreinterpret_s16_s64(a);
7058}
7059
7060// CHECK: test_vreinterpret_s16_u8
7061int16x4_t test_vreinterpret_s16_u8(uint8x8_t a) {
7062  return vreinterpret_s16_u8(a);
7063}
7064
7065// CHECK: test_vreinterpret_s16_u16
7066int16x4_t test_vreinterpret_s16_u16(uint16x4_t a) {
7067  return vreinterpret_s16_u16(a);
7068}
7069
7070// CHECK: test_vreinterpret_s16_u32
7071int16x4_t test_vreinterpret_s16_u32(uint32x2_t a) {
7072  return vreinterpret_s16_u32(a);
7073}
7074
7075// CHECK: test_vreinterpret_s16_u64
7076int16x4_t test_vreinterpret_s16_u64(uint64x1_t a) {
7077  return vreinterpret_s16_u64(a);
7078}
7079
7080// CHECK: test_vreinterpret_s16_f16
7081int16x4_t test_vreinterpret_s16_f16(float16x4_t a) {
7082  return vreinterpret_s16_f16(a);
7083}
7084
7085// CHECK: test_vreinterpret_s16_f32
7086int16x4_t test_vreinterpret_s16_f32(float32x2_t a) {
7087  return vreinterpret_s16_f32(a);
7088}
7089
7090// CHECK: test_vreinterpret_s16_p8
7091int16x4_t test_vreinterpret_s16_p8(poly8x8_t a) {
7092  return vreinterpret_s16_p8(a);
7093}
7094
7095// CHECK: test_vreinterpret_s16_p16
7096int16x4_t test_vreinterpret_s16_p16(poly16x4_t a) {
7097  return vreinterpret_s16_p16(a);
7098}
7099
7100// CHECK: test_vreinterpret_s32_s8
7101int32x2_t test_vreinterpret_s32_s8(int8x8_t a) {
7102  return vreinterpret_s32_s8(a);
7103}
7104
7105// CHECK: test_vreinterpret_s32_s16
7106int32x2_t test_vreinterpret_s32_s16(int16x4_t a) {
7107  return vreinterpret_s32_s16(a);
7108}
7109
7110// CHECK: test_vreinterpret_s32_s64
7111int32x2_t test_vreinterpret_s32_s64(int64x1_t a) {
7112  return vreinterpret_s32_s64(a);
7113}
7114
7115// CHECK: test_vreinterpret_s32_u8
7116int32x2_t test_vreinterpret_s32_u8(uint8x8_t a) {
7117  return vreinterpret_s32_u8(a);
7118}
7119
7120// CHECK: test_vreinterpret_s32_u16
7121int32x2_t test_vreinterpret_s32_u16(uint16x4_t a) {
7122  return vreinterpret_s32_u16(a);
7123}
7124
7125// CHECK: test_vreinterpret_s32_u32
7126int32x2_t test_vreinterpret_s32_u32(uint32x2_t a) {
7127  return vreinterpret_s32_u32(a);
7128}
7129
7130// CHECK: test_vreinterpret_s32_u64
7131int32x2_t test_vreinterpret_s32_u64(uint64x1_t a) {
7132  return vreinterpret_s32_u64(a);
7133}
7134
7135// CHECK: test_vreinterpret_s32_f16
7136int32x2_t test_vreinterpret_s32_f16(float16x4_t a) {
7137  return vreinterpret_s32_f16(a);
7138}
7139
7140// CHECK: test_vreinterpret_s32_f32
7141int32x2_t test_vreinterpret_s32_f32(float32x2_t a) {
7142  return vreinterpret_s32_f32(a);
7143}
7144
7145// CHECK: test_vreinterpret_s32_p8
7146int32x2_t test_vreinterpret_s32_p8(poly8x8_t a) {
7147  return vreinterpret_s32_p8(a);
7148}
7149
7150// CHECK: test_vreinterpret_s32_p16
7151int32x2_t test_vreinterpret_s32_p16(poly16x4_t a) {
7152  return vreinterpret_s32_p16(a);
7153}
7154
7155// CHECK: test_vreinterpret_s64_s8
7156int64x1_t test_vreinterpret_s64_s8(int8x8_t a) {
7157  return vreinterpret_s64_s8(a);
7158}
7159
7160// CHECK: test_vreinterpret_s64_s16
7161int64x1_t test_vreinterpret_s64_s16(int16x4_t a) {
7162  return vreinterpret_s64_s16(a);
7163}
7164
7165// CHECK: test_vreinterpret_s64_s32
7166int64x1_t test_vreinterpret_s64_s32(int32x2_t a) {
7167  return vreinterpret_s64_s32(a);
7168}
7169
7170// CHECK: test_vreinterpret_s64_u8
7171int64x1_t test_vreinterpret_s64_u8(uint8x8_t a) {
7172  return vreinterpret_s64_u8(a);
7173}
7174
7175// CHECK: test_vreinterpret_s64_u16
7176int64x1_t test_vreinterpret_s64_u16(uint16x4_t a) {
7177  return vreinterpret_s64_u16(a);
7178}
7179
7180// CHECK: test_vreinterpret_s64_u32
7181int64x1_t test_vreinterpret_s64_u32(uint32x2_t a) {
7182  return vreinterpret_s64_u32(a);
7183}
7184
7185// CHECK: test_vreinterpret_s64_u64
7186int64x1_t test_vreinterpret_s64_u64(uint64x1_t a) {
7187  return vreinterpret_s64_u64(a);
7188}
7189
7190// CHECK: test_vreinterpret_s64_f16
7191int64x1_t test_vreinterpret_s64_f16(float16x4_t a) {
7192  return vreinterpret_s64_f16(a);
7193}
7194
7195// CHECK: test_vreinterpret_s64_f32
7196int64x1_t test_vreinterpret_s64_f32(float32x2_t a) {
7197  return vreinterpret_s64_f32(a);
7198}
7199
7200// CHECK: test_vreinterpret_s64_p8
7201int64x1_t test_vreinterpret_s64_p8(poly8x8_t a) {
7202  return vreinterpret_s64_p8(a);
7203}
7204
7205// CHECK: test_vreinterpret_s64_p16
7206int64x1_t test_vreinterpret_s64_p16(poly16x4_t a) {
7207  return vreinterpret_s64_p16(a);
7208}
7209
7210// CHECK: test_vreinterpret_u8_s8
7211uint8x8_t test_vreinterpret_u8_s8(int8x8_t a) {
7212  return vreinterpret_u8_s8(a);
7213}
7214
7215// CHECK: test_vreinterpret_u8_s16
7216uint8x8_t test_vreinterpret_u8_s16(int16x4_t a) {
7217  return vreinterpret_u8_s16(a);
7218}
7219
7220// CHECK: test_vreinterpret_u8_s32
7221uint8x8_t test_vreinterpret_u8_s32(int32x2_t a) {
7222  return vreinterpret_u8_s32(a);
7223}
7224
7225// CHECK: test_vreinterpret_u8_s64
7226uint8x8_t test_vreinterpret_u8_s64(int64x1_t a) {
7227  return vreinterpret_u8_s64(a);
7228}
7229
7230// CHECK: test_vreinterpret_u8_u16
7231uint8x8_t test_vreinterpret_u8_u16(uint16x4_t a) {
7232  return vreinterpret_u8_u16(a);
7233}
7234
7235// CHECK: test_vreinterpret_u8_u32
7236uint8x8_t test_vreinterpret_u8_u32(uint32x2_t a) {
7237  return vreinterpret_u8_u32(a);
7238}
7239
7240// CHECK: test_vreinterpret_u8_u64
7241uint8x8_t test_vreinterpret_u8_u64(uint64x1_t a) {
7242  return vreinterpret_u8_u64(a);
7243}
7244
7245// CHECK: test_vreinterpret_u8_f16
7246uint8x8_t test_vreinterpret_u8_f16(float16x4_t a) {
7247  return vreinterpret_u8_f16(a);
7248}
7249
7250// CHECK: test_vreinterpret_u8_f32
7251uint8x8_t test_vreinterpret_u8_f32(float32x2_t a) {
7252  return vreinterpret_u8_f32(a);
7253}
7254
7255// CHECK: test_vreinterpret_u8_p8
7256uint8x8_t test_vreinterpret_u8_p8(poly8x8_t a) {
7257  return vreinterpret_u8_p8(a);
7258}
7259
7260// CHECK: test_vreinterpret_u8_p16
7261uint8x8_t test_vreinterpret_u8_p16(poly16x4_t a) {
7262  return vreinterpret_u8_p16(a);
7263}
7264
7265// CHECK: test_vreinterpret_u16_s8
7266uint16x4_t test_vreinterpret_u16_s8(int8x8_t a) {
7267  return vreinterpret_u16_s8(a);
7268}
7269
7270// CHECK: test_vreinterpret_u16_s16
7271uint16x4_t test_vreinterpret_u16_s16(int16x4_t a) {
7272  return vreinterpret_u16_s16(a);
7273}
7274
7275// CHECK: test_vreinterpret_u16_s32
7276uint16x4_t test_vreinterpret_u16_s32(int32x2_t a) {
7277  return vreinterpret_u16_s32(a);
7278}
7279
7280// CHECK: test_vreinterpret_u16_s64
7281uint16x4_t test_vreinterpret_u16_s64(int64x1_t a) {
7282  return vreinterpret_u16_s64(a);
7283}
7284
7285// CHECK: test_vreinterpret_u16_u8
7286uint16x4_t test_vreinterpret_u16_u8(uint8x8_t a) {
7287  return vreinterpret_u16_u8(a);
7288}
7289
7290// CHECK: test_vreinterpret_u16_u32
7291uint16x4_t test_vreinterpret_u16_u32(uint32x2_t a) {
7292  return vreinterpret_u16_u32(a);
7293}
7294
7295// CHECK: test_vreinterpret_u16_u64
7296uint16x4_t test_vreinterpret_u16_u64(uint64x1_t a) {
7297  return vreinterpret_u16_u64(a);
7298}
7299
7300// CHECK: test_vreinterpret_u16_f16
7301uint16x4_t test_vreinterpret_u16_f16(float16x4_t a) {
7302  return vreinterpret_u16_f16(a);
7303}
7304
7305// CHECK: test_vreinterpret_u16_f32
7306uint16x4_t test_vreinterpret_u16_f32(float32x2_t a) {
7307  return vreinterpret_u16_f32(a);
7308}
7309
7310// CHECK: test_vreinterpret_u16_p8
7311uint16x4_t test_vreinterpret_u16_p8(poly8x8_t a) {
7312  return vreinterpret_u16_p8(a);
7313}
7314
7315// CHECK: test_vreinterpret_u16_p16
7316uint16x4_t test_vreinterpret_u16_p16(poly16x4_t a) {
7317  return vreinterpret_u16_p16(a);
7318}
7319
7320// CHECK: test_vreinterpret_u32_s8
7321uint32x2_t test_vreinterpret_u32_s8(int8x8_t a) {
7322  return vreinterpret_u32_s8(a);
7323}
7324
7325// CHECK: test_vreinterpret_u32_s16
7326uint32x2_t test_vreinterpret_u32_s16(int16x4_t a) {
7327  return vreinterpret_u32_s16(a);
7328}
7329
7330// CHECK: test_vreinterpret_u32_s32
7331uint32x2_t test_vreinterpret_u32_s32(int32x2_t a) {
7332  return vreinterpret_u32_s32(a);
7333}
7334
7335// CHECK: test_vreinterpret_u32_s64
7336uint32x2_t test_vreinterpret_u32_s64(int64x1_t a) {
7337  return vreinterpret_u32_s64(a);
7338}
7339
7340// CHECK: test_vreinterpret_u32_u8
7341uint32x2_t test_vreinterpret_u32_u8(uint8x8_t a) {
7342  return vreinterpret_u32_u8(a);
7343}
7344
7345// CHECK: test_vreinterpret_u32_u16
7346uint32x2_t test_vreinterpret_u32_u16(uint16x4_t a) {
7347  return vreinterpret_u32_u16(a);
7348}
7349
7350// CHECK: test_vreinterpret_u32_u64
7351uint32x2_t test_vreinterpret_u32_u64(uint64x1_t a) {
7352  return vreinterpret_u32_u64(a);
7353}
7354
7355// CHECK: test_vreinterpret_u32_f16
7356uint32x2_t test_vreinterpret_u32_f16(float16x4_t a) {
7357  return vreinterpret_u32_f16(a);
7358}
7359
7360// CHECK: test_vreinterpret_u32_f32
7361uint32x2_t test_vreinterpret_u32_f32(float32x2_t a) {
7362  return vreinterpret_u32_f32(a);
7363}
7364
7365// CHECK: test_vreinterpret_u32_p8
7366uint32x2_t test_vreinterpret_u32_p8(poly8x8_t a) {
7367  return vreinterpret_u32_p8(a);
7368}
7369
7370// CHECK: test_vreinterpret_u32_p16
7371uint32x2_t test_vreinterpret_u32_p16(poly16x4_t a) {
7372  return vreinterpret_u32_p16(a);
7373}
7374
7375// CHECK: test_vreinterpret_u64_s8
7376uint64x1_t test_vreinterpret_u64_s8(int8x8_t a) {
7377  return vreinterpret_u64_s8(a);
7378}
7379
7380// CHECK: test_vreinterpret_u64_s16
7381uint64x1_t test_vreinterpret_u64_s16(int16x4_t a) {
7382  return vreinterpret_u64_s16(a);
7383}
7384
7385// CHECK: test_vreinterpret_u64_s32
7386uint64x1_t test_vreinterpret_u64_s32(int32x2_t a) {
7387  return vreinterpret_u64_s32(a);
7388}
7389
7390// CHECK: test_vreinterpret_u64_s64
7391uint64x1_t test_vreinterpret_u64_s64(int64x1_t a) {
7392  return vreinterpret_u64_s64(a);
7393}
7394
7395// CHECK: test_vreinterpret_u64_u8
7396uint64x1_t test_vreinterpret_u64_u8(uint8x8_t a) {
7397  return vreinterpret_u64_u8(a);
7398}
7399
7400// CHECK: test_vreinterpret_u64_u16
7401uint64x1_t test_vreinterpret_u64_u16(uint16x4_t a) {
7402  return vreinterpret_u64_u16(a);
7403}
7404
7405// CHECK: test_vreinterpret_u64_u32
7406uint64x1_t test_vreinterpret_u64_u32(uint32x2_t a) {
7407  return vreinterpret_u64_u32(a);
7408}
7409
7410// CHECK: test_vreinterpret_u64_f16
7411uint64x1_t test_vreinterpret_u64_f16(float16x4_t a) {
7412  return vreinterpret_u64_f16(a);
7413}
7414
7415// CHECK: test_vreinterpret_u64_f32
7416uint64x1_t test_vreinterpret_u64_f32(float32x2_t a) {
7417  return vreinterpret_u64_f32(a);
7418}
7419
7420// CHECK: test_vreinterpret_u64_p8
7421uint64x1_t test_vreinterpret_u64_p8(poly8x8_t a) {
7422  return vreinterpret_u64_p8(a);
7423}
7424
7425// CHECK: test_vreinterpret_u64_p16
7426uint64x1_t test_vreinterpret_u64_p16(poly16x4_t a) {
7427  return vreinterpret_u64_p16(a);
7428}
7429
7430// CHECK: test_vreinterpret_f16_s8
7431float16x4_t test_vreinterpret_f16_s8(int8x8_t a) {
7432  return vreinterpret_f16_s8(a);
7433}
7434
7435// CHECK: test_vreinterpret_f16_s16
7436float16x4_t test_vreinterpret_f16_s16(int16x4_t a) {
7437  return vreinterpret_f16_s16(a);
7438}
7439
7440// CHECK: test_vreinterpret_f16_s32
7441float16x4_t test_vreinterpret_f16_s32(int32x2_t a) {
7442  return vreinterpret_f16_s32(a);
7443}
7444
7445// CHECK: test_vreinterpret_f16_s64
7446float16x4_t test_vreinterpret_f16_s64(int64x1_t a) {
7447  return vreinterpret_f16_s64(a);
7448}
7449
7450// CHECK: test_vreinterpret_f16_u8
7451float16x4_t test_vreinterpret_f16_u8(uint8x8_t a) {
7452  return vreinterpret_f16_u8(a);
7453}
7454
7455// CHECK: test_vreinterpret_f16_u16
7456float16x4_t test_vreinterpret_f16_u16(uint16x4_t a) {
7457  return vreinterpret_f16_u16(a);
7458}
7459
7460// CHECK: test_vreinterpret_f16_u32
7461float16x4_t test_vreinterpret_f16_u32(uint32x2_t a) {
7462  return vreinterpret_f16_u32(a);
7463}
7464
7465// CHECK: test_vreinterpret_f16_u64
7466float16x4_t test_vreinterpret_f16_u64(uint64x1_t a) {
7467  return vreinterpret_f16_u64(a);
7468}
7469
7470// CHECK: test_vreinterpret_f16_f32
7471float16x4_t test_vreinterpret_f16_f32(float32x2_t a) {
7472  return vreinterpret_f16_f32(a);
7473}
7474
7475// CHECK: test_vreinterpret_f16_p8
7476float16x4_t test_vreinterpret_f16_p8(poly8x8_t a) {
7477  return vreinterpret_f16_p8(a);
7478}
7479
7480// CHECK: test_vreinterpret_f16_p16
7481float16x4_t test_vreinterpret_f16_p16(poly16x4_t a) {
7482  return vreinterpret_f16_p16(a);
7483}
7484
7485// CHECK: test_vreinterpret_f32_s8
7486float32x2_t test_vreinterpret_f32_s8(int8x8_t a) {
7487  return vreinterpret_f32_s8(a);
7488}
7489
7490// CHECK: test_vreinterpret_f32_s16
7491float32x2_t test_vreinterpret_f32_s16(int16x4_t a) {
7492  return vreinterpret_f32_s16(a);
7493}
7494
7495// CHECK: test_vreinterpret_f32_s32
7496float32x2_t test_vreinterpret_f32_s32(int32x2_t a) {
7497  return vreinterpret_f32_s32(a);
7498}
7499
7500// CHECK: test_vreinterpret_f32_s64
7501float32x2_t test_vreinterpret_f32_s64(int64x1_t a) {
7502  return vreinterpret_f32_s64(a);
7503}
7504
7505// CHECK: test_vreinterpret_f32_u8
7506float32x2_t test_vreinterpret_f32_u8(uint8x8_t a) {
7507  return vreinterpret_f32_u8(a);
7508}
7509
7510// CHECK: test_vreinterpret_f32_u16
7511float32x2_t test_vreinterpret_f32_u16(uint16x4_t a) {
7512  return vreinterpret_f32_u16(a);
7513}
7514
7515// CHECK: test_vreinterpret_f32_u32
7516float32x2_t test_vreinterpret_f32_u32(uint32x2_t a) {
7517  return vreinterpret_f32_u32(a);
7518}
7519
7520// CHECK: test_vreinterpret_f32_u64
7521float32x2_t test_vreinterpret_f32_u64(uint64x1_t a) {
7522  return vreinterpret_f32_u64(a);
7523}
7524
7525// CHECK: test_vreinterpret_f32_f16
7526float32x2_t test_vreinterpret_f32_f16(float16x4_t a) {
7527  return vreinterpret_f32_f16(a);
7528}
7529
7530// CHECK: test_vreinterpret_f32_p8
7531float32x2_t test_vreinterpret_f32_p8(poly8x8_t a) {
7532  return vreinterpret_f32_p8(a);
7533}
7534
7535// CHECK: test_vreinterpret_f32_p16
7536float32x2_t test_vreinterpret_f32_p16(poly16x4_t a) {
7537  return vreinterpret_f32_p16(a);
7538}
7539
7540// CHECK: test_vreinterpret_p8_s8
7541poly8x8_t test_vreinterpret_p8_s8(int8x8_t a) {
7542  return vreinterpret_p8_s8(a);
7543}
7544
7545// CHECK: test_vreinterpret_p8_s16
7546poly8x8_t test_vreinterpret_p8_s16(int16x4_t a) {
7547  return vreinterpret_p8_s16(a);
7548}
7549
7550// CHECK: test_vreinterpret_p8_s32
7551poly8x8_t test_vreinterpret_p8_s32(int32x2_t a) {
7552  return vreinterpret_p8_s32(a);
7553}
7554
7555// CHECK: test_vreinterpret_p8_s64
7556poly8x8_t test_vreinterpret_p8_s64(int64x1_t a) {
7557  return vreinterpret_p8_s64(a);
7558}
7559
7560// CHECK: test_vreinterpret_p8_u8
7561poly8x8_t test_vreinterpret_p8_u8(uint8x8_t a) {
7562  return vreinterpret_p8_u8(a);
7563}
7564
7565// CHECK: test_vreinterpret_p8_u16
7566poly8x8_t test_vreinterpret_p8_u16(uint16x4_t a) {
7567  return vreinterpret_p8_u16(a);
7568}
7569
7570// CHECK: test_vreinterpret_p8_u32
7571poly8x8_t test_vreinterpret_p8_u32(uint32x2_t a) {
7572  return vreinterpret_p8_u32(a);
7573}
7574
7575// CHECK: test_vreinterpret_p8_u64
7576poly8x8_t test_vreinterpret_p8_u64(uint64x1_t a) {
7577  return vreinterpret_p8_u64(a);
7578}
7579
7580// CHECK: test_vreinterpret_p8_f16
7581poly8x8_t test_vreinterpret_p8_f16(float16x4_t a) {
7582  return vreinterpret_p8_f16(a);
7583}
7584
7585// CHECK: test_vreinterpret_p8_f32
7586poly8x8_t test_vreinterpret_p8_f32(float32x2_t a) {
7587  return vreinterpret_p8_f32(a);
7588}
7589
7590// CHECK: test_vreinterpret_p8_p16
7591poly8x8_t test_vreinterpret_p8_p16(poly16x4_t a) {
7592  return vreinterpret_p8_p16(a);
7593}
7594
7595// CHECK: test_vreinterpret_p16_s8
7596poly16x4_t test_vreinterpret_p16_s8(int8x8_t a) {
7597  return vreinterpret_p16_s8(a);
7598}
7599
7600// CHECK: test_vreinterpret_p16_s16
7601poly16x4_t test_vreinterpret_p16_s16(int16x4_t a) {
7602  return vreinterpret_p16_s16(a);
7603}
7604
7605// CHECK: test_vreinterpret_p16_s32
7606poly16x4_t test_vreinterpret_p16_s32(int32x2_t a) {
7607  return vreinterpret_p16_s32(a);
7608}
7609
7610// CHECK: test_vreinterpret_p16_s64
7611poly16x4_t test_vreinterpret_p16_s64(int64x1_t a) {
7612  return vreinterpret_p16_s64(a);
7613}
7614
7615// CHECK: test_vreinterpret_p16_u8
7616poly16x4_t test_vreinterpret_p16_u8(uint8x8_t a) {
7617  return vreinterpret_p16_u8(a);
7618}
7619
7620// CHECK: test_vreinterpret_p16_u16
7621poly16x4_t test_vreinterpret_p16_u16(uint16x4_t a) {
7622  return vreinterpret_p16_u16(a);
7623}
7624
7625// CHECK: test_vreinterpret_p16_u32
7626poly16x4_t test_vreinterpret_p16_u32(uint32x2_t a) {
7627  return vreinterpret_p16_u32(a);
7628}
7629
7630// CHECK: test_vreinterpret_p16_u64
7631poly16x4_t test_vreinterpret_p16_u64(uint64x1_t a) {
7632  return vreinterpret_p16_u64(a);
7633}
7634
7635// CHECK: test_vreinterpret_p16_f16
7636poly16x4_t test_vreinterpret_p16_f16(float16x4_t a) {
7637  return vreinterpret_p16_f16(a);
7638}
7639
7640// CHECK: test_vreinterpret_p16_f32
7641poly16x4_t test_vreinterpret_p16_f32(float32x2_t a) {
7642  return vreinterpret_p16_f32(a);
7643}
7644
7645// CHECK: test_vreinterpret_p16_p8
7646poly16x4_t test_vreinterpret_p16_p8(poly8x8_t a) {
7647  return vreinterpret_p16_p8(a);
7648}
7649
7650// CHECK: test_vreinterpretq_s8_s16
7651int8x16_t test_vreinterpretq_s8_s16(int16x8_t a) {
7652  return vreinterpretq_s8_s16(a);
7653}
7654
7655// CHECK: test_vreinterpretq_s8_s32
7656int8x16_t test_vreinterpretq_s8_s32(int32x4_t a) {
7657  return vreinterpretq_s8_s32(a);
7658}
7659
7660// CHECK: test_vreinterpretq_s8_s64
7661int8x16_t test_vreinterpretq_s8_s64(int64x2_t a) {
7662  return vreinterpretq_s8_s64(a);
7663}
7664
7665// CHECK: test_vreinterpretq_s8_u8
7666int8x16_t test_vreinterpretq_s8_u8(uint8x16_t a) {
7667  return vreinterpretq_s8_u8(a);
7668}
7669
7670// CHECK: test_vreinterpretq_s8_u16
7671int8x16_t test_vreinterpretq_s8_u16(uint16x8_t a) {
7672  return vreinterpretq_s8_u16(a);
7673}
7674
7675// CHECK: test_vreinterpretq_s8_u32
7676int8x16_t test_vreinterpretq_s8_u32(uint32x4_t a) {
7677  return vreinterpretq_s8_u32(a);
7678}
7679
7680// CHECK: test_vreinterpretq_s8_u64
7681int8x16_t test_vreinterpretq_s8_u64(uint64x2_t a) {
7682  return vreinterpretq_s8_u64(a);
7683}
7684
7685// CHECK: test_vreinterpretq_s8_f16
7686int8x16_t test_vreinterpretq_s8_f16(float16x8_t a) {
7687  return vreinterpretq_s8_f16(a);
7688}
7689
7690// CHECK: test_vreinterpretq_s8_f32
7691int8x16_t test_vreinterpretq_s8_f32(float32x4_t a) {
7692  return vreinterpretq_s8_f32(a);
7693}
7694
7695// CHECK: test_vreinterpretq_s8_p8
7696int8x16_t test_vreinterpretq_s8_p8(poly8x16_t a) {
7697  return vreinterpretq_s8_p8(a);
7698}
7699
7700// CHECK: test_vreinterpretq_s8_p16
7701int8x16_t test_vreinterpretq_s8_p16(poly16x8_t a) {
7702  return vreinterpretq_s8_p16(a);
7703}
7704
7705// CHECK: test_vreinterpretq_s16_s8
7706int16x8_t test_vreinterpretq_s16_s8(int8x16_t a) {
7707  return vreinterpretq_s16_s8(a);
7708}
7709
7710// CHECK: test_vreinterpretq_s16_s32
7711int16x8_t test_vreinterpretq_s16_s32(int32x4_t a) {
7712  return vreinterpretq_s16_s32(a);
7713}
7714
7715// CHECK: test_vreinterpretq_s16_s64
7716int16x8_t test_vreinterpretq_s16_s64(int64x2_t a) {
7717  return vreinterpretq_s16_s64(a);
7718}
7719
7720// CHECK: test_vreinterpretq_s16_u8
7721int16x8_t test_vreinterpretq_s16_u8(uint8x16_t a) {
7722  return vreinterpretq_s16_u8(a);
7723}
7724
7725// CHECK: test_vreinterpretq_s16_u16
7726int16x8_t test_vreinterpretq_s16_u16(uint16x8_t a) {
7727  return vreinterpretq_s16_u16(a);
7728}
7729
7730// CHECK: test_vreinterpretq_s16_u32
7731int16x8_t test_vreinterpretq_s16_u32(uint32x4_t a) {
7732  return vreinterpretq_s16_u32(a);
7733}
7734
7735// CHECK: test_vreinterpretq_s16_u64
7736int16x8_t test_vreinterpretq_s16_u64(uint64x2_t a) {
7737  return vreinterpretq_s16_u64(a);
7738}
7739
7740// CHECK: test_vreinterpretq_s16_f16
7741int16x8_t test_vreinterpretq_s16_f16(float16x8_t a) {
7742  return vreinterpretq_s16_f16(a);
7743}
7744
7745// CHECK: test_vreinterpretq_s16_f32
7746int16x8_t test_vreinterpretq_s16_f32(float32x4_t a) {
7747  return vreinterpretq_s16_f32(a);
7748}
7749
7750// CHECK: test_vreinterpretq_s16_p8
7751int16x8_t test_vreinterpretq_s16_p8(poly8x16_t a) {
7752  return vreinterpretq_s16_p8(a);
7753}
7754
7755// CHECK: test_vreinterpretq_s16_p16
7756int16x8_t test_vreinterpretq_s16_p16(poly16x8_t a) {
7757  return vreinterpretq_s16_p16(a);
7758}
7759
7760// CHECK: test_vreinterpretq_s32_s8
7761int32x4_t test_vreinterpretq_s32_s8(int8x16_t a) {
7762  return vreinterpretq_s32_s8(a);
7763}
7764
7765// CHECK: test_vreinterpretq_s32_s16
7766int32x4_t test_vreinterpretq_s32_s16(int16x8_t a) {
7767  return vreinterpretq_s32_s16(a);
7768}
7769
7770// CHECK: test_vreinterpretq_s32_s64
7771int32x4_t test_vreinterpretq_s32_s64(int64x2_t a) {
7772  return vreinterpretq_s32_s64(a);
7773}
7774
7775// CHECK: test_vreinterpretq_s32_u8
7776int32x4_t test_vreinterpretq_s32_u8(uint8x16_t a) {
7777  return vreinterpretq_s32_u8(a);
7778}
7779
7780// CHECK: test_vreinterpretq_s32_u16
7781int32x4_t test_vreinterpretq_s32_u16(uint16x8_t a) {
7782  return vreinterpretq_s32_u16(a);
7783}
7784
7785// CHECK: test_vreinterpretq_s32_u32
7786int32x4_t test_vreinterpretq_s32_u32(uint32x4_t a) {
7787  return vreinterpretq_s32_u32(a);
7788}
7789
7790// CHECK: test_vreinterpretq_s32_u64
7791int32x4_t test_vreinterpretq_s32_u64(uint64x2_t a) {
7792  return vreinterpretq_s32_u64(a);
7793}
7794
7795// CHECK: test_vreinterpretq_s32_f16
7796int32x4_t test_vreinterpretq_s32_f16(float16x8_t a) {
7797  return vreinterpretq_s32_f16(a);
7798}
7799
7800// CHECK: test_vreinterpretq_s32_f32
7801int32x4_t test_vreinterpretq_s32_f32(float32x4_t a) {
7802  return vreinterpretq_s32_f32(a);
7803}
7804
7805// CHECK: test_vreinterpretq_s32_p8
7806int32x4_t test_vreinterpretq_s32_p8(poly8x16_t a) {
7807  return vreinterpretq_s32_p8(a);
7808}
7809
7810// CHECK: test_vreinterpretq_s32_p16
7811int32x4_t test_vreinterpretq_s32_p16(poly16x8_t a) {
7812  return vreinterpretq_s32_p16(a);
7813}
7814
7815// CHECK: test_vreinterpretq_s64_s8
7816int64x2_t test_vreinterpretq_s64_s8(int8x16_t a) {
7817  return vreinterpretq_s64_s8(a);
7818}
7819
7820// CHECK: test_vreinterpretq_s64_s16
7821int64x2_t test_vreinterpretq_s64_s16(int16x8_t a) {
7822  return vreinterpretq_s64_s16(a);
7823}
7824
7825// CHECK: test_vreinterpretq_s64_s32
7826int64x2_t test_vreinterpretq_s64_s32(int32x4_t a) {
7827  return vreinterpretq_s64_s32(a);
7828}
7829
7830// CHECK: test_vreinterpretq_s64_u8
7831int64x2_t test_vreinterpretq_s64_u8(uint8x16_t a) {
7832  return vreinterpretq_s64_u8(a);
7833}
7834
7835// CHECK: test_vreinterpretq_s64_u16
7836int64x2_t test_vreinterpretq_s64_u16(uint16x8_t a) {
7837  return vreinterpretq_s64_u16(a);
7838}
7839
7840// CHECK: test_vreinterpretq_s64_u32
7841int64x2_t test_vreinterpretq_s64_u32(uint32x4_t a) {
7842  return vreinterpretq_s64_u32(a);
7843}
7844
7845// CHECK: test_vreinterpretq_s64_u64
7846int64x2_t test_vreinterpretq_s64_u64(uint64x2_t a) {
7847  return vreinterpretq_s64_u64(a);
7848}
7849
7850// CHECK: test_vreinterpretq_s64_f16
7851int64x2_t test_vreinterpretq_s64_f16(float16x8_t a) {
7852  return vreinterpretq_s64_f16(a);
7853}
7854
7855// CHECK: test_vreinterpretq_s64_f32
7856int64x2_t test_vreinterpretq_s64_f32(float32x4_t a) {
7857  return vreinterpretq_s64_f32(a);
7858}
7859
7860// CHECK: test_vreinterpretq_s64_p8
7861int64x2_t test_vreinterpretq_s64_p8(poly8x16_t a) {
7862  return vreinterpretq_s64_p8(a);
7863}
7864
7865// CHECK: test_vreinterpretq_s64_p16
7866int64x2_t test_vreinterpretq_s64_p16(poly16x8_t a) {
7867  return vreinterpretq_s64_p16(a);
7868}
7869
7870// CHECK: test_vreinterpretq_u8_s8
7871uint8x16_t test_vreinterpretq_u8_s8(int8x16_t a) {
7872  return vreinterpretq_u8_s8(a);
7873}
7874
7875// CHECK: test_vreinterpretq_u8_s16
7876uint8x16_t test_vreinterpretq_u8_s16(int16x8_t a) {
7877  return vreinterpretq_u8_s16(a);
7878}
7879
7880// CHECK: test_vreinterpretq_u8_s32
7881uint8x16_t test_vreinterpretq_u8_s32(int32x4_t a) {
7882  return vreinterpretq_u8_s32(a);
7883}
7884
7885// CHECK: test_vreinterpretq_u8_s64
7886uint8x16_t test_vreinterpretq_u8_s64(int64x2_t a) {
7887  return vreinterpretq_u8_s64(a);
7888}
7889
7890// CHECK: test_vreinterpretq_u8_u16
7891uint8x16_t test_vreinterpretq_u8_u16(uint16x8_t a) {
7892  return vreinterpretq_u8_u16(a);
7893}
7894
7895// CHECK: test_vreinterpretq_u8_u32
7896uint8x16_t test_vreinterpretq_u8_u32(uint32x4_t a) {
7897  return vreinterpretq_u8_u32(a);
7898}
7899
7900// CHECK: test_vreinterpretq_u8_u64
7901uint8x16_t test_vreinterpretq_u8_u64(uint64x2_t a) {
7902  return vreinterpretq_u8_u64(a);
7903}
7904
7905// CHECK: test_vreinterpretq_u8_f16
7906uint8x16_t test_vreinterpretq_u8_f16(float16x8_t a) {
7907  return vreinterpretq_u8_f16(a);
7908}
7909
7910// CHECK: test_vreinterpretq_u8_f32
7911uint8x16_t test_vreinterpretq_u8_f32(float32x4_t a) {
7912  return vreinterpretq_u8_f32(a);
7913}
7914
7915// CHECK: test_vreinterpretq_u8_p8
7916uint8x16_t test_vreinterpretq_u8_p8(poly8x16_t a) {
7917  return vreinterpretq_u8_p8(a);
7918}
7919
7920// CHECK: test_vreinterpretq_u8_p16
7921uint8x16_t test_vreinterpretq_u8_p16(poly16x8_t a) {
7922  return vreinterpretq_u8_p16(a);
7923}
7924
7925// CHECK: test_vreinterpretq_u16_s8
7926uint16x8_t test_vreinterpretq_u16_s8(int8x16_t a) {
7927  return vreinterpretq_u16_s8(a);
7928}
7929
7930// CHECK: test_vreinterpretq_u16_s16
7931uint16x8_t test_vreinterpretq_u16_s16(int16x8_t a) {
7932  return vreinterpretq_u16_s16(a);
7933}
7934
7935// CHECK: test_vreinterpretq_u16_s32
7936uint16x8_t test_vreinterpretq_u16_s32(int32x4_t a) {
7937  return vreinterpretq_u16_s32(a);
7938}
7939
7940// CHECK: test_vreinterpretq_u16_s64
7941uint16x8_t test_vreinterpretq_u16_s64(int64x2_t a) {
7942  return vreinterpretq_u16_s64(a);
7943}
7944
7945// CHECK: test_vreinterpretq_u16_u8
7946uint16x8_t test_vreinterpretq_u16_u8(uint8x16_t a) {
7947  return vreinterpretq_u16_u8(a);
7948}
7949
7950// CHECK: test_vreinterpretq_u16_u32
7951uint16x8_t test_vreinterpretq_u16_u32(uint32x4_t a) {
7952  return vreinterpretq_u16_u32(a);
7953}
7954
7955// CHECK: test_vreinterpretq_u16_u64
7956uint16x8_t test_vreinterpretq_u16_u64(uint64x2_t a) {
7957  return vreinterpretq_u16_u64(a);
7958}
7959
7960// CHECK: test_vreinterpretq_u16_f16
7961uint16x8_t test_vreinterpretq_u16_f16(float16x8_t a) {
7962  return vreinterpretq_u16_f16(a);
7963}
7964
7965// CHECK: test_vreinterpretq_u16_f32
7966uint16x8_t test_vreinterpretq_u16_f32(float32x4_t a) {
7967  return vreinterpretq_u16_f32(a);
7968}
7969
7970// CHECK: test_vreinterpretq_u16_p8
7971uint16x8_t test_vreinterpretq_u16_p8(poly8x16_t a) {
7972  return vreinterpretq_u16_p8(a);
7973}
7974
7975// CHECK: test_vreinterpretq_u16_p16
7976uint16x8_t test_vreinterpretq_u16_p16(poly16x8_t a) {
7977  return vreinterpretq_u16_p16(a);
7978}
7979
7980// CHECK: test_vreinterpretq_u32_s8
7981uint32x4_t test_vreinterpretq_u32_s8(int8x16_t a) {
7982  return vreinterpretq_u32_s8(a);
7983}
7984
7985// CHECK: test_vreinterpretq_u32_s16
7986uint32x4_t test_vreinterpretq_u32_s16(int16x8_t a) {
7987  return vreinterpretq_u32_s16(a);
7988}
7989
7990// CHECK: test_vreinterpretq_u32_s32
7991uint32x4_t test_vreinterpretq_u32_s32(int32x4_t a) {
7992  return vreinterpretq_u32_s32(a);
7993}
7994
7995// CHECK: test_vreinterpretq_u32_s64
7996uint32x4_t test_vreinterpretq_u32_s64(int64x2_t a) {
7997  return vreinterpretq_u32_s64(a);
7998}
7999
8000// CHECK: test_vreinterpretq_u32_u8
8001uint32x4_t test_vreinterpretq_u32_u8(uint8x16_t a) {
8002  return vreinterpretq_u32_u8(a);
8003}
8004
8005// CHECK: test_vreinterpretq_u32_u16
8006uint32x4_t test_vreinterpretq_u32_u16(uint16x8_t a) {
8007  return vreinterpretq_u32_u16(a);
8008}
8009
8010// CHECK: test_vreinterpretq_u32_u64
8011uint32x4_t test_vreinterpretq_u32_u64(uint64x2_t a) {
8012  return vreinterpretq_u32_u64(a);
8013}
8014
8015// CHECK: test_vreinterpretq_u32_f16
8016uint32x4_t test_vreinterpretq_u32_f16(float16x8_t a) {
8017  return vreinterpretq_u32_f16(a);
8018}
8019
8020// CHECK: test_vreinterpretq_u32_f32
8021uint32x4_t test_vreinterpretq_u32_f32(float32x4_t a) {
8022  return vreinterpretq_u32_f32(a);
8023}
8024
8025// CHECK: test_vreinterpretq_u32_p8
8026uint32x4_t test_vreinterpretq_u32_p8(poly8x16_t a) {
8027  return vreinterpretq_u32_p8(a);
8028}
8029
8030// CHECK: test_vreinterpretq_u32_p16
8031uint32x4_t test_vreinterpretq_u32_p16(poly16x8_t a) {
8032  return vreinterpretq_u32_p16(a);
8033}
8034
8035// CHECK: test_vreinterpretq_u64_s8
8036uint64x2_t test_vreinterpretq_u64_s8(int8x16_t a) {
8037  return vreinterpretq_u64_s8(a);
8038}
8039
8040// CHECK: test_vreinterpretq_u64_s16
8041uint64x2_t test_vreinterpretq_u64_s16(int16x8_t a) {
8042  return vreinterpretq_u64_s16(a);
8043}
8044
8045// CHECK: test_vreinterpretq_u64_s32
8046uint64x2_t test_vreinterpretq_u64_s32(int32x4_t a) {
8047  return vreinterpretq_u64_s32(a);
8048}
8049
8050// CHECK: test_vreinterpretq_u64_s64
8051uint64x2_t test_vreinterpretq_u64_s64(int64x2_t a) {
8052  return vreinterpretq_u64_s64(a);
8053}
8054
8055// CHECK: test_vreinterpretq_u64_u8
8056uint64x2_t test_vreinterpretq_u64_u8(uint8x16_t a) {
8057  return vreinterpretq_u64_u8(a);
8058}
8059
8060// CHECK: test_vreinterpretq_u64_u16
8061uint64x2_t test_vreinterpretq_u64_u16(uint16x8_t a) {
8062  return vreinterpretq_u64_u16(a);
8063}
8064
8065// CHECK: test_vreinterpretq_u64_u32
8066uint64x2_t test_vreinterpretq_u64_u32(uint32x4_t a) {
8067  return vreinterpretq_u64_u32(a);
8068}
8069
8070// CHECK: test_vreinterpretq_u64_f16
8071uint64x2_t test_vreinterpretq_u64_f16(float16x8_t a) {
8072  return vreinterpretq_u64_f16(a);
8073}
8074
8075// CHECK: test_vreinterpretq_u64_f32
8076uint64x2_t test_vreinterpretq_u64_f32(float32x4_t a) {
8077  return vreinterpretq_u64_f32(a);
8078}
8079
8080// CHECK: test_vreinterpretq_u64_p8
8081uint64x2_t test_vreinterpretq_u64_p8(poly8x16_t a) {
8082  return vreinterpretq_u64_p8(a);
8083}
8084
8085// CHECK: test_vreinterpretq_u64_p16
8086uint64x2_t test_vreinterpretq_u64_p16(poly16x8_t a) {
8087  return vreinterpretq_u64_p16(a);
8088}
8089
8090// CHECK: test_vreinterpretq_f16_s8
8091float16x8_t test_vreinterpretq_f16_s8(int8x16_t a) {
8092  return vreinterpretq_f16_s8(a);
8093}
8094
8095// CHECK: test_vreinterpretq_f16_s16
8096float16x8_t test_vreinterpretq_f16_s16(int16x8_t a) {
8097  return vreinterpretq_f16_s16(a);
8098}
8099
8100// CHECK: test_vreinterpretq_f16_s32
8101float16x8_t test_vreinterpretq_f16_s32(int32x4_t a) {
8102  return vreinterpretq_f16_s32(a);
8103}
8104
8105// CHECK: test_vreinterpretq_f16_s64
8106float16x8_t test_vreinterpretq_f16_s64(int64x2_t a) {
8107  return vreinterpretq_f16_s64(a);
8108}
8109
8110// CHECK: test_vreinterpretq_f16_u8
8111float16x8_t test_vreinterpretq_f16_u8(uint8x16_t a) {
8112  return vreinterpretq_f16_u8(a);
8113}
8114
8115// CHECK: test_vreinterpretq_f16_u16
8116float16x8_t test_vreinterpretq_f16_u16(uint16x8_t a) {
8117  return vreinterpretq_f16_u16(a);
8118}
8119
8120// CHECK: test_vreinterpretq_f16_u32
8121float16x8_t test_vreinterpretq_f16_u32(uint32x4_t a) {
8122  return vreinterpretq_f16_u32(a);
8123}
8124
8125// CHECK: test_vreinterpretq_f16_u64
8126float16x8_t test_vreinterpretq_f16_u64(uint64x2_t a) {
8127  return vreinterpretq_f16_u64(a);
8128}
8129
8130// CHECK: test_vreinterpretq_f16_f32
8131float16x8_t test_vreinterpretq_f16_f32(float32x4_t a) {
8132  return vreinterpretq_f16_f32(a);
8133}
8134
8135// CHECK: test_vreinterpretq_f16_p8
8136float16x8_t test_vreinterpretq_f16_p8(poly8x16_t a) {
8137  return vreinterpretq_f16_p8(a);
8138}
8139
8140// CHECK: test_vreinterpretq_f16_p16
8141float16x8_t test_vreinterpretq_f16_p16(poly16x8_t a) {
8142  return vreinterpretq_f16_p16(a);
8143}
8144
8145// CHECK: test_vreinterpretq_f32_s8
8146float32x4_t test_vreinterpretq_f32_s8(int8x16_t a) {
8147  return vreinterpretq_f32_s8(a);
8148}
8149
8150// CHECK: test_vreinterpretq_f32_s16
8151float32x4_t test_vreinterpretq_f32_s16(int16x8_t a) {
8152  return vreinterpretq_f32_s16(a);
8153}
8154
8155// CHECK: test_vreinterpretq_f32_s32
8156float32x4_t test_vreinterpretq_f32_s32(int32x4_t a) {
8157  return vreinterpretq_f32_s32(a);
8158}
8159
8160// CHECK: test_vreinterpretq_f32_s64
8161float32x4_t test_vreinterpretq_f32_s64(int64x2_t a) {
8162  return vreinterpretq_f32_s64(a);
8163}
8164
8165// CHECK: test_vreinterpretq_f32_u8
8166float32x4_t test_vreinterpretq_f32_u8(uint8x16_t a) {
8167  return vreinterpretq_f32_u8(a);
8168}
8169
8170// CHECK: test_vreinterpretq_f32_u16
8171float32x4_t test_vreinterpretq_f32_u16(uint16x8_t a) {
8172  return vreinterpretq_f32_u16(a);
8173}
8174
8175// CHECK: test_vreinterpretq_f32_u32
8176float32x4_t test_vreinterpretq_f32_u32(uint32x4_t a) {
8177  return vreinterpretq_f32_u32(a);
8178}
8179
8180// CHECK: test_vreinterpretq_f32_u64
8181float32x4_t test_vreinterpretq_f32_u64(uint64x2_t a) {
8182  return vreinterpretq_f32_u64(a);
8183}
8184
8185// CHECK: test_vreinterpretq_f32_f16
8186float32x4_t test_vreinterpretq_f32_f16(float16x8_t a) {
8187  return vreinterpretq_f32_f16(a);
8188}
8189
8190// CHECK: test_vreinterpretq_f32_p8
8191float32x4_t test_vreinterpretq_f32_p8(poly8x16_t a) {
8192  return vreinterpretq_f32_p8(a);
8193}
8194
8195// CHECK: test_vreinterpretq_f32_p16
8196float32x4_t test_vreinterpretq_f32_p16(poly16x8_t a) {
8197  return vreinterpretq_f32_p16(a);
8198}
8199
8200// CHECK: test_vreinterpretq_p8_s8
8201poly8x16_t test_vreinterpretq_p8_s8(int8x16_t a) {
8202  return vreinterpretq_p8_s8(a);
8203}
8204
8205// CHECK: test_vreinterpretq_p8_s16
8206poly8x16_t test_vreinterpretq_p8_s16(int16x8_t a) {
8207  return vreinterpretq_p8_s16(a);
8208}
8209
8210// CHECK: test_vreinterpretq_p8_s32
8211poly8x16_t test_vreinterpretq_p8_s32(int32x4_t a) {
8212  return vreinterpretq_p8_s32(a);
8213}
8214
8215// CHECK: test_vreinterpretq_p8_s64
8216poly8x16_t test_vreinterpretq_p8_s64(int64x2_t a) {
8217  return vreinterpretq_p8_s64(a);
8218}
8219
8220// CHECK: test_vreinterpretq_p8_u8
8221poly8x16_t test_vreinterpretq_p8_u8(uint8x16_t a) {
8222  return vreinterpretq_p8_u8(a);
8223}
8224
8225// CHECK: test_vreinterpretq_p8_u16
8226poly8x16_t test_vreinterpretq_p8_u16(uint16x8_t a) {
8227  return vreinterpretq_p8_u16(a);
8228}
8229
8230// CHECK: test_vreinterpretq_p8_u32
8231poly8x16_t test_vreinterpretq_p8_u32(uint32x4_t a) {
8232  return vreinterpretq_p8_u32(a);
8233}
8234
8235// CHECK: test_vreinterpretq_p8_u64
8236poly8x16_t test_vreinterpretq_p8_u64(uint64x2_t a) {
8237  return vreinterpretq_p8_u64(a);
8238}
8239
8240// CHECK: test_vreinterpretq_p8_f16
8241poly8x16_t test_vreinterpretq_p8_f16(float16x8_t a) {
8242  return vreinterpretq_p8_f16(a);
8243}
8244
8245// CHECK: test_vreinterpretq_p8_f32
8246poly8x16_t test_vreinterpretq_p8_f32(float32x4_t a) {
8247  return vreinterpretq_p8_f32(a);
8248}
8249
8250// CHECK: test_vreinterpretq_p8_p16
8251poly8x16_t test_vreinterpretq_p8_p16(poly16x8_t a) {
8252  return vreinterpretq_p8_p16(a);
8253}
8254
8255// CHECK: test_vreinterpretq_p16_s8
8256poly16x8_t test_vreinterpretq_p16_s8(int8x16_t a) {
8257  return vreinterpretq_p16_s8(a);
8258}
8259
8260// CHECK: test_vreinterpretq_p16_s16
8261poly16x8_t test_vreinterpretq_p16_s16(int16x8_t a) {
8262  return vreinterpretq_p16_s16(a);
8263}
8264
8265// CHECK: test_vreinterpretq_p16_s32
8266poly16x8_t test_vreinterpretq_p16_s32(int32x4_t a) {
8267  return vreinterpretq_p16_s32(a);
8268}
8269
8270// CHECK: test_vreinterpretq_p16_s64
8271poly16x8_t test_vreinterpretq_p16_s64(int64x2_t a) {
8272  return vreinterpretq_p16_s64(a);
8273}
8274
8275// CHECK: test_vreinterpretq_p16_u8
8276poly16x8_t test_vreinterpretq_p16_u8(uint8x16_t a) {
8277  return vreinterpretq_p16_u8(a);
8278}
8279
8280// CHECK: test_vreinterpretq_p16_u16
8281poly16x8_t test_vreinterpretq_p16_u16(uint16x8_t a) {
8282  return vreinterpretq_p16_u16(a);
8283}
8284
8285// CHECK: test_vreinterpretq_p16_u32
8286poly16x8_t test_vreinterpretq_p16_u32(uint32x4_t a) {
8287  return vreinterpretq_p16_u32(a);
8288}
8289
8290// CHECK: test_vreinterpretq_p16_u64
8291poly16x8_t test_vreinterpretq_p16_u64(uint64x2_t a) {
8292  return vreinterpretq_p16_u64(a);
8293}
8294
8295// CHECK: test_vreinterpretq_p16_f16
8296poly16x8_t test_vreinterpretq_p16_f16(float16x8_t a) {
8297  return vreinterpretq_p16_f16(a);
8298}
8299
8300// CHECK: test_vreinterpretq_p16_f32
8301poly16x8_t test_vreinterpretq_p16_f32(float32x4_t a) {
8302  return vreinterpretq_p16_f32(a);
8303}
8304
8305// CHECK: test_vreinterpretq_p16_p8
8306poly16x8_t test_vreinterpretq_p16_p8(poly8x16_t a) {
8307  return vreinterpretq_p16_p8(a);
8308}
8309
8310
8311// CHECK: test_vrev16_s8
8312// CHECK: vrev16.8 d{{[0-9]+}}, d{{[0-9]+}}
8313int8x8_t test_vrev16_s8(int8x8_t a) {
8314  return vrev16_s8(a);
8315}
8316
8317// CHECK: test_vrev16_u8
8318// CHECK: vrev16.8 d{{[0-9]+}}, d{{[0-9]+}}
8319uint8x8_t test_vrev16_u8(uint8x8_t a) {
8320  return vrev16_u8(a);
8321}
8322
8323// CHECK: test_vrev16_p8
8324// CHECK: vrev16.8 d{{[0-9]+}}, d{{[0-9]+}}
8325poly8x8_t test_vrev16_p8(poly8x8_t a) {
8326  return vrev16_p8(a);
8327}
8328
8329// CHECK: test_vrev16q_s8
8330// CHECK: vrev16.8 q{{[0-9]+}}, q{{[0-9]+}}
8331int8x16_t test_vrev16q_s8(int8x16_t a) {
8332  return vrev16q_s8(a);
8333}
8334
8335// CHECK: test_vrev16q_u8
8336// CHECK: vrev16.8 q{{[0-9]+}}, q{{[0-9]+}}
8337uint8x16_t test_vrev16q_u8(uint8x16_t a) {
8338  return vrev16q_u8(a);
8339}
8340
8341// CHECK: test_vrev16q_p8
8342// CHECK: vrev16.8 q{{[0-9]+}}, q{{[0-9]+}}
8343poly8x16_t test_vrev16q_p8(poly8x16_t a) {
8344  return vrev16q_p8(a);
8345}
8346
8347
8348// CHECK: test_vrev32_s8
8349// CHECK: vrev32.8 d{{[0-9]+}}, d{{[0-9]+}}
8350int8x8_t test_vrev32_s8(int8x8_t a) {
8351  return vrev32_s8(a);
8352}
8353
8354// CHECK: test_vrev32_s16
8355// CHECK: vrev32.16 d{{[0-9]+}}, d{{[0-9]+}}
8356int16x4_t test_vrev32_s16(int16x4_t a) {
8357  return vrev32_s16(a);
8358}
8359
8360// CHECK: test_vrev32_u8
8361// CHECK: vrev32.8 d{{[0-9]+}}, d{{[0-9]+}}
8362uint8x8_t test_vrev32_u8(uint8x8_t a) {
8363  return vrev32_u8(a);
8364}
8365
8366// CHECK: test_vrev32_u16
8367// CHECK: vrev32.16 d{{[0-9]+}}, d{{[0-9]+}}
8368uint16x4_t test_vrev32_u16(uint16x4_t a) {
8369  return vrev32_u16(a);
8370}
8371
8372// CHECK: test_vrev32_p8
8373// CHECK: vrev32.8 d{{[0-9]+}}, d{{[0-9]+}}
8374poly8x8_t test_vrev32_p8(poly8x8_t a) {
8375  return vrev32_p8(a);
8376}
8377
8378// CHECK: test_vrev32_p16
8379// CHECK: vrev32.16 d{{[0-9]+}}, d{{[0-9]+}}
8380poly16x4_t test_vrev32_p16(poly16x4_t a) {
8381  return vrev32_p16(a);
8382}
8383
8384// CHECK: test_vrev32q_s8
8385// CHECK: vrev32.8 q{{[0-9]+}}, q{{[0-9]+}}
8386int8x16_t test_vrev32q_s8(int8x16_t a) {
8387  return vrev32q_s8(a);
8388}
8389
8390// CHECK: test_vrev32q_s16
8391// CHECK: vrev32.16 q{{[0-9]+}}, q{{[0-9]+}}
8392int16x8_t test_vrev32q_s16(int16x8_t a) {
8393  return vrev32q_s16(a);
8394}
8395
8396// CHECK: test_vrev32q_u8
8397// CHECK: vrev32.8 q{{[0-9]+}}, q{{[0-9]+}}
8398uint8x16_t test_vrev32q_u8(uint8x16_t a) {
8399  return vrev32q_u8(a);
8400}
8401
8402// CHECK: test_vrev32q_u16
8403// CHECK: vrev32.16 q{{[0-9]+}}, q{{[0-9]+}}
8404uint16x8_t test_vrev32q_u16(uint16x8_t a) {
8405  return vrev32q_u16(a);
8406}
8407
8408// CHECK: test_vrev32q_p8
8409// CHECK: vrev32.8 q{{[0-9]+}}, q{{[0-9]+}}
8410poly8x16_t test_vrev32q_p8(poly8x16_t a) {
8411  return vrev32q_p8(a);
8412}
8413
8414// CHECK: test_vrev32q_p16
8415// CHECK: vrev32.16 q{{[0-9]+}}, q{{[0-9]+}}
8416poly16x8_t test_vrev32q_p16(poly16x8_t a) {
8417  return vrev32q_p16(a);
8418}
8419
8420
8421// CHECK: test_vrev64_s8
8422// CHECK: vrev64.8 d{{[0-9]+}}, d{{[0-9]+}}
8423int8x8_t test_vrev64_s8(int8x8_t a) {
8424  return vrev64_s8(a);
8425}
8426
8427// CHECK: test_vrev64_s16
8428// CHECK: vrev64.16 d{{[0-9]+}}, d{{[0-9]+}}
8429int16x4_t test_vrev64_s16(int16x4_t a) {
8430  return vrev64_s16(a);
8431}
8432
8433// CHECK: test_vrev64_s32
8434// CHECK: vrev64.32 d{{[0-9]+}}, d{{[0-9]+}}
8435int32x2_t test_vrev64_s32(int32x2_t a) {
8436  return vrev64_s32(a);
8437}
8438
8439// CHECK: test_vrev64_u8
8440// CHECK: vrev64.8 d{{[0-9]+}}, d{{[0-9]+}}
8441uint8x8_t test_vrev64_u8(uint8x8_t a) {
8442  return vrev64_u8(a);
8443}
8444
8445// CHECK: test_vrev64_u16
8446// CHECK: vrev64.16 d{{[0-9]+}}, d{{[0-9]+}}
8447uint16x4_t test_vrev64_u16(uint16x4_t a) {
8448  return vrev64_u16(a);
8449}
8450
8451// CHECK: test_vrev64_u32
8452// CHECK: vrev64.32 d{{[0-9]+}}, d{{[0-9]+}}
8453uint32x2_t test_vrev64_u32(uint32x2_t a) {
8454  return vrev64_u32(a);
8455}
8456
8457// CHECK: test_vrev64_p8
8458// CHECK: vrev64.8 d{{[0-9]+}}, d{{[0-9]+}}
8459poly8x8_t test_vrev64_p8(poly8x8_t a) {
8460  return vrev64_p8(a);
8461}
8462
8463// CHECK: test_vrev64_p16
8464// CHECK: vrev64.16 d{{[0-9]+}}, d{{[0-9]+}}
8465poly16x4_t test_vrev64_p16(poly16x4_t a) {
8466  return vrev64_p16(a);
8467}
8468
8469// CHECK: test_vrev64_f32
8470// CHECK: vrev64.32 d{{[0-9]+}}, d{{[0-9]+}}
8471float32x2_t test_vrev64_f32(float32x2_t a) {
8472  return vrev64_f32(a);
8473}
8474
8475// CHECK: test_vrev64q_s8
8476// CHECK: vrev64.8 q{{[0-9]+}}, q{{[0-9]+}}
8477int8x16_t test_vrev64q_s8(int8x16_t a) {
8478  return vrev64q_s8(a);
8479}
8480
8481// CHECK: test_vrev64q_s16
8482// CHECK: vrev64.16 q{{[0-9]+}}, q{{[0-9]+}}
8483int16x8_t test_vrev64q_s16(int16x8_t a) {
8484  return vrev64q_s16(a);
8485}
8486
8487// CHECK: test_vrev64q_s32
8488// CHECK: vrev64.32 q{{[0-9]+}}, q{{[0-9]+}}
8489int32x4_t test_vrev64q_s32(int32x4_t a) {
8490  return vrev64q_s32(a);
8491}
8492
8493// CHECK: test_vrev64q_u8
8494// CHECK: vrev64.8 q{{[0-9]+}}, q{{[0-9]+}}
8495uint8x16_t test_vrev64q_u8(uint8x16_t a) {
8496  return vrev64q_u8(a);
8497}
8498
8499// CHECK: test_vrev64q_u16
8500// CHECK: vrev64.16 q{{[0-9]+}}, q{{[0-9]+}}
8501uint16x8_t test_vrev64q_u16(uint16x8_t a) {
8502  return vrev64q_u16(a);
8503}
8504
8505// CHECK: test_vrev64q_u32
8506// CHECK: vrev64.32 q{{[0-9]+}}, q{{[0-9]+}}
8507uint32x4_t test_vrev64q_u32(uint32x4_t a) {
8508  return vrev64q_u32(a);
8509}
8510
8511// CHECK: test_vrev64q_p8
8512// CHECK: vrev64.8 q{{[0-9]+}}, q{{[0-9]+}}
8513poly8x16_t test_vrev64q_p8(poly8x16_t a) {
8514  return vrev64q_p8(a);
8515}
8516
8517// CHECK: test_vrev64q_p16
8518// CHECK: vrev64.16 q{{[0-9]+}}, q{{[0-9]+}}
8519poly16x8_t test_vrev64q_p16(poly16x8_t a) {
8520  return vrev64q_p16(a);
8521}
8522
8523// CHECK: test_vrev64q_f32
8524// CHECK: vrev64.32 q{{[0-9]+}}, q{{[0-9]+}}
8525float32x4_t test_vrev64q_f32(float32x4_t a) {
8526  return vrev64q_f32(a);
8527}
8528
8529
8530// CHECK: test_vrhadd_s8
8531// CHECK: vrhadd.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8532int8x8_t test_vrhadd_s8(int8x8_t a, int8x8_t b) {
8533  return vrhadd_s8(a, b);
8534}
8535
8536// CHECK: test_vrhadd_s16
8537// CHECK: vrhadd.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8538int16x4_t test_vrhadd_s16(int16x4_t a, int16x4_t b) {
8539  return vrhadd_s16(a, b);
8540}
8541
8542// CHECK: test_vrhadd_s32
8543// CHECK: vrhadd.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8544int32x2_t test_vrhadd_s32(int32x2_t a, int32x2_t b) {
8545  return vrhadd_s32(a, b);
8546}
8547
8548// CHECK: test_vrhadd_u8
8549// CHECK: vrhadd.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8550uint8x8_t test_vrhadd_u8(uint8x8_t a, uint8x8_t b) {
8551  return vrhadd_u8(a, b);
8552}
8553
8554// CHECK: test_vrhadd_u16
8555// CHECK: vrhadd.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8556uint16x4_t test_vrhadd_u16(uint16x4_t a, uint16x4_t b) {
8557  return vrhadd_u16(a, b);
8558}
8559
8560// CHECK: test_vrhadd_u32
8561// CHECK: vrhadd.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8562uint32x2_t test_vrhadd_u32(uint32x2_t a, uint32x2_t b) {
8563  return vrhadd_u32(a, b);
8564}
8565
8566// CHECK: test_vrhaddq_s8
8567// CHECK: vrhadd.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8568int8x16_t test_vrhaddq_s8(int8x16_t a, int8x16_t b) {
8569  return vrhaddq_s8(a, b);
8570}
8571
8572// CHECK: test_vrhaddq_s16
8573// CHECK: vrhadd.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8574int16x8_t test_vrhaddq_s16(int16x8_t a, int16x8_t b) {
8575  return vrhaddq_s16(a, b);
8576}
8577
8578// CHECK: test_vrhaddq_s32
8579// CHECK: vrhadd.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8580int32x4_t test_vrhaddq_s32(int32x4_t a, int32x4_t b) {
8581  return vrhaddq_s32(a, b);
8582}
8583
8584// CHECK: test_vrhaddq_u8
8585// CHECK: vrhadd.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8586uint8x16_t test_vrhaddq_u8(uint8x16_t a, uint8x16_t b) {
8587  return vrhaddq_u8(a, b);
8588}
8589
8590// CHECK: test_vrhaddq_u16
8591// CHECK: vrhadd.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8592uint16x8_t test_vrhaddq_u16(uint16x8_t a, uint16x8_t b) {
8593  return vrhaddq_u16(a, b);
8594}
8595
8596// CHECK: test_vrhaddq_u32
8597// CHECK: vrhadd.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8598uint32x4_t test_vrhaddq_u32(uint32x4_t a, uint32x4_t b) {
8599  return vrhaddq_u32(a, b);
8600}
8601
8602
8603// CHECK: test_vrshl_s8
8604// CHECK: vrshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8605int8x8_t test_vrshl_s8(int8x8_t a, int8x8_t b) {
8606  return vrshl_s8(a, b);
8607}
8608
8609// CHECK: test_vrshl_s16
8610// CHECK: vrshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8611int16x4_t test_vrshl_s16(int16x4_t a, int16x4_t b) {
8612  return vrshl_s16(a, b);
8613}
8614
8615// CHECK: test_vrshl_s32
8616// CHECK: vrshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8617int32x2_t test_vrshl_s32(int32x2_t a, int32x2_t b) {
8618  return vrshl_s32(a, b);
8619}
8620
8621// CHECK: test_vrshl_s64
8622// CHECK: vrshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8623int64x1_t test_vrshl_s64(int64x1_t a, int64x1_t b) {
8624  return vrshl_s64(a, b);
8625}
8626
8627// CHECK: test_vrshl_u8
8628// CHECK: vrshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8629uint8x8_t test_vrshl_u8(uint8x8_t a, int8x8_t b) {
8630  return vrshl_u8(a, b);
8631}
8632
8633// CHECK: test_vrshl_u16
8634// CHECK: vrshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8635uint16x4_t test_vrshl_u16(uint16x4_t a, int16x4_t b) {
8636  return vrshl_u16(a, b);
8637}
8638
8639// CHECK: test_vrshl_u32
8640// CHECK: vrshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8641uint32x2_t test_vrshl_u32(uint32x2_t a, int32x2_t b) {
8642  return vrshl_u32(a, b);
8643}
8644
8645// CHECK: test_vrshl_u64
8646// CHECK: vrshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8647uint64x1_t test_vrshl_u64(uint64x1_t a, int64x1_t b) {
8648  return vrshl_u64(a, b);
8649}
8650
8651// CHECK: test_vrshlq_s8
8652// CHECK: vrshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8653int8x16_t test_vrshlq_s8(int8x16_t a, int8x16_t b) {
8654  return vrshlq_s8(a, b);
8655}
8656
8657// CHECK: test_vrshlq_s16
8658// CHECK: vrshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8659int16x8_t test_vrshlq_s16(int16x8_t a, int16x8_t b) {
8660  return vrshlq_s16(a, b);
8661}
8662
8663// CHECK: test_vrshlq_s32
8664// CHECK: vrshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8665int32x4_t test_vrshlq_s32(int32x4_t a, int32x4_t b) {
8666  return vrshlq_s32(a, b);
8667}
8668
8669// CHECK: test_vrshlq_s64
8670// CHECK: vrshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8671int64x2_t test_vrshlq_s64(int64x2_t a, int64x2_t b) {
8672  return vrshlq_s64(a, b);
8673}
8674
8675// CHECK: test_vrshlq_u8
8676// CHECK: vrshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8677uint8x16_t test_vrshlq_u8(uint8x16_t a, int8x16_t b) {
8678  return vrshlq_u8(a, b);
8679}
8680
8681// CHECK: test_vrshlq_u16
8682// CHECK: vrshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8683uint16x8_t test_vrshlq_u16(uint16x8_t a, int16x8_t b) {
8684  return vrshlq_u16(a, b);
8685}
8686
8687// CHECK: test_vrshlq_u32
8688// CHECK: vrshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8689uint32x4_t test_vrshlq_u32(uint32x4_t a, int32x4_t b) {
8690  return vrshlq_u32(a, b);
8691}
8692
8693// CHECK: test_vrshlq_u64
8694// CHECK: vrshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8695uint64x2_t test_vrshlq_u64(uint64x2_t a, int64x2_t b) {
8696  return vrshlq_u64(a, b);
8697}
8698
8699
8700// CHECK: test_vrshrn_n_s16
8701// CHECK: vrshrn.i16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8702int8x8_t test_vrshrn_n_s16(int16x8_t a) {
8703  return vrshrn_n_s16(a, 1);
8704}
8705
8706// CHECK: test_vrshrn_n_s32
8707// CHECK: vrshrn.i32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8708int16x4_t test_vrshrn_n_s32(int32x4_t a) {
8709  return vrshrn_n_s32(a, 1);
8710}
8711
8712// CHECK: test_vrshrn_n_s64
8713// CHECK: vrshrn.i64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8714int32x2_t test_vrshrn_n_s64(int64x2_t a) {
8715  return vrshrn_n_s64(a, 1);
8716}
8717
8718// CHECK: test_vrshrn_n_u16
8719// CHECK: vrshrn.i16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8720uint8x8_t test_vrshrn_n_u16(uint16x8_t a) {
8721  return vrshrn_n_u16(a, 1);
8722}
8723
8724// CHECK: test_vrshrn_n_u32
8725// CHECK: vrshrn.i32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8726uint16x4_t test_vrshrn_n_u32(uint32x4_t a) {
8727  return vrshrn_n_u32(a, 1);
8728}
8729
8730// CHECK: test_vrshrn_n_u64
8731// CHECK: vrshrn.i64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8732uint32x2_t test_vrshrn_n_u64(uint64x2_t a) {
8733  return vrshrn_n_u64(a, 1);
8734}
8735
8736
8737// CHECK: test_vrshr_n_s8
8738// CHECK: vrshr.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8739int8x8_t test_vrshr_n_s8(int8x8_t a) {
8740  return vrshr_n_s8(a, 1);
8741}
8742
8743// CHECK: test_vrshr_n_s16
8744// CHECK: vrshr.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8745int16x4_t test_vrshr_n_s16(int16x4_t a) {
8746  return vrshr_n_s16(a, 1);
8747}
8748
8749// CHECK: test_vrshr_n_s32
8750// CHECK: vrshr.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8751int32x2_t test_vrshr_n_s32(int32x2_t a) {
8752  return vrshr_n_s32(a, 1);
8753}
8754
8755// CHECK: test_vrshr_n_s64
8756// CHECK: vrshr.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8757int64x1_t test_vrshr_n_s64(int64x1_t a) {
8758  return vrshr_n_s64(a, 1);
8759}
8760
8761// CHECK: test_vrshr_n_u8
8762// CHECK: vrshr.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8763uint8x8_t test_vrshr_n_u8(uint8x8_t a) {
8764  return vrshr_n_u8(a, 1);
8765}
8766
8767// CHECK: test_vrshr_n_u16
8768// CHECK: vrshr.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8769uint16x4_t test_vrshr_n_u16(uint16x4_t a) {
8770  return vrshr_n_u16(a, 1);
8771}
8772
8773// CHECK: test_vrshr_n_u32
8774// CHECK: vrshr.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8775uint32x2_t test_vrshr_n_u32(uint32x2_t a) {
8776  return vrshr_n_u32(a, 1);
8777}
8778
8779// CHECK: test_vrshr_n_u64
8780// CHECK: vrshr.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8781uint64x1_t test_vrshr_n_u64(uint64x1_t a) {
8782  return vrshr_n_u64(a, 1);
8783}
8784
8785// CHECK: test_vrshrq_n_s8
8786// CHECK: vrshr.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8787int8x16_t test_vrshrq_n_s8(int8x16_t a) {
8788  return vrshrq_n_s8(a, 1);
8789}
8790
8791// CHECK: test_vrshrq_n_s16
8792// CHECK: vrshr.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8793int16x8_t test_vrshrq_n_s16(int16x8_t a) {
8794  return vrshrq_n_s16(a, 1);
8795}
8796
8797// CHECK: test_vrshrq_n_s32
8798// CHECK: vrshr.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8799int32x4_t test_vrshrq_n_s32(int32x4_t a) {
8800  return vrshrq_n_s32(a, 1);
8801}
8802
8803// CHECK: test_vrshrq_n_s64
8804// CHECK: vrshr.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8805int64x2_t test_vrshrq_n_s64(int64x2_t a) {
8806  return vrshrq_n_s64(a, 1);
8807}
8808
8809// CHECK: test_vrshrq_n_u8
8810// CHECK: vrshr.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8811uint8x16_t test_vrshrq_n_u8(uint8x16_t a) {
8812  return vrshrq_n_u8(a, 1);
8813}
8814
8815// CHECK: test_vrshrq_n_u16
8816// CHECK: vrshr.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8817uint16x8_t test_vrshrq_n_u16(uint16x8_t a) {
8818  return vrshrq_n_u16(a, 1);
8819}
8820
8821// CHECK: test_vrshrq_n_u32
8822// CHECK: vrshr.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8823uint32x4_t test_vrshrq_n_u32(uint32x4_t a) {
8824  return vrshrq_n_u32(a, 1);
8825}
8826
8827// CHECK: test_vrshrq_n_u64
8828// CHECK: vrshr.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8829uint64x2_t test_vrshrq_n_u64(uint64x2_t a) {
8830  return vrshrq_n_u64(a, 1);
8831}
8832
8833
8834// CHECK: test_vrsqrte_f32
8835// CHECK: vrsqrte.f32 d{{[0-9]+}}, d{{[0-9]+}}
8836float32x2_t test_vrsqrte_f32(float32x2_t a) {
8837  return vrsqrte_f32(a);
8838}
8839
8840// CHECK: test_vrsqrte_u32
8841// CHECK: vrsqrte.u32 d{{[0-9]+}}, d{{[0-9]+}}
8842uint32x2_t test_vrsqrte_u32(uint32x2_t a) {
8843  return vrsqrte_u32(a);
8844}
8845
8846// CHECK: test_vrsqrteq_f32
8847// CHECK: vrsqrte.f32 q{{[0-9]+}}, q{{[0-9]+}}
8848float32x4_t test_vrsqrteq_f32(float32x4_t a) {
8849  return vrsqrteq_f32(a);
8850}
8851
8852// CHECK: test_vrsqrteq_u32
8853// CHECK: vrsqrte.u32 q{{[0-9]+}}, q{{[0-9]+}}
8854uint32x4_t test_vrsqrteq_u32(uint32x4_t a) {
8855  return vrsqrteq_u32(a);
8856}
8857
8858
8859// CHECK: test_vrsqrts_f32
8860// CHECK: vrsqrts.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
8861float32x2_t test_vrsqrts_f32(float32x2_t a, float32x2_t b) {
8862  return vrsqrts_f32(a, b);
8863}
8864
8865// CHECK: test_vrsqrtsq_f32
8866// CHECK: vrsqrts.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8867float32x4_t test_vrsqrtsq_f32(float32x4_t a, float32x4_t b) {
8868  return vrsqrtsq_f32(a, b);
8869}
8870
8871
8872// CHECK: test_vrsra_n_s8
8873// CHECK: vrsra.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8874int8x8_t test_vrsra_n_s8(int8x8_t a, int8x8_t b) {
8875  return vrsra_n_s8(a, b, 1);
8876}
8877
8878// CHECK: test_vrsra_n_s16
8879// CHECK: vrsra.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8880int16x4_t test_vrsra_n_s16(int16x4_t a, int16x4_t b) {
8881  return vrsra_n_s16(a, b, 1);
8882}
8883
8884// CHECK: test_vrsra_n_s32
8885// CHECK: vrsra.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8886int32x2_t test_vrsra_n_s32(int32x2_t a, int32x2_t b) {
8887  return vrsra_n_s32(a, b, 1);
8888}
8889
8890// CHECK: test_vrsra_n_s64
8891// CHECK: vrsra.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8892int64x1_t test_vrsra_n_s64(int64x1_t a, int64x1_t b) {
8893  return vrsra_n_s64(a, b, 1);
8894}
8895
8896// CHECK: test_vrsra_n_u8
8897// CHECK: vrsra.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8898uint8x8_t test_vrsra_n_u8(uint8x8_t a, uint8x8_t b) {
8899  return vrsra_n_u8(a, b, 1);
8900}
8901
8902// CHECK: test_vrsra_n_u16
8903// CHECK: vrsra.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8904uint16x4_t test_vrsra_n_u16(uint16x4_t a, uint16x4_t b) {
8905  return vrsra_n_u16(a, b, 1);
8906}
8907
8908// CHECK: test_vrsra_n_u32
8909// CHECK: vrsra.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8910uint32x2_t test_vrsra_n_u32(uint32x2_t a, uint32x2_t b) {
8911  return vrsra_n_u32(a, b, 1);
8912}
8913
8914// CHECK: test_vrsra_n_u64
8915// CHECK: vrsra.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
8916uint64x1_t test_vrsra_n_u64(uint64x1_t a, uint64x1_t b) {
8917  return vrsra_n_u64(a, b, 1);
8918}
8919
8920// CHECK: test_vrsraq_n_s8
8921// CHECK: vrsra.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8922int8x16_t test_vrsraq_n_s8(int8x16_t a, int8x16_t b) {
8923  return vrsraq_n_s8(a, b, 1);
8924}
8925
8926// CHECK: test_vrsraq_n_s16
8927// CHECK: vrsra.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8928int16x8_t test_vrsraq_n_s16(int16x8_t a, int16x8_t b) {
8929  return vrsraq_n_s16(a, b, 1);
8930}
8931
8932// CHECK: test_vrsraq_n_s32
8933// CHECK: vrsra.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8934int32x4_t test_vrsraq_n_s32(int32x4_t a, int32x4_t b) {
8935  return vrsraq_n_s32(a, b, 1);
8936}
8937
8938// CHECK: test_vrsraq_n_s64
8939// CHECK: vrsra.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8940int64x2_t test_vrsraq_n_s64(int64x2_t a, int64x2_t b) {
8941  return vrsraq_n_s64(a, b, 1);
8942}
8943
8944// CHECK: test_vrsraq_n_u8
8945// CHECK: vrsra.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8946uint8x16_t test_vrsraq_n_u8(uint8x16_t a, uint8x16_t b) {
8947  return vrsraq_n_u8(a, b, 1);
8948}
8949
8950// CHECK: test_vrsraq_n_u16
8951// CHECK: vrsra.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8952uint16x8_t test_vrsraq_n_u16(uint16x8_t a, uint16x8_t b) {
8953  return vrsraq_n_u16(a, b, 1);
8954}
8955
8956// CHECK: test_vrsraq_n_u32
8957// CHECK: vrsra.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8958uint32x4_t test_vrsraq_n_u32(uint32x4_t a, uint32x4_t b) {
8959  return vrsraq_n_u32(a, b, 1);
8960}
8961
8962// CHECK: test_vrsraq_n_u64
8963// CHECK: vrsra.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
8964uint64x2_t test_vrsraq_n_u64(uint64x2_t a, uint64x2_t b) {
8965  return vrsraq_n_u64(a, b, 1);
8966}
8967
8968
8969// CHECK: test_vrsubhn_s16
8970// CHECK: vrsubhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8971int8x8_t test_vrsubhn_s16(int16x8_t a, int16x8_t b) {
8972  return vrsubhn_s16(a, b);
8973}
8974
8975// CHECK: test_vrsubhn_s32
8976// CHECK: vrsubhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8977int16x4_t test_vrsubhn_s32(int32x4_t a, int32x4_t b) {
8978  return vrsubhn_s32(a, b);
8979}
8980
8981// CHECK: test_vrsubhn_s64
8982// CHECK: vrsubhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8983int32x2_t test_vrsubhn_s64(int64x2_t a, int64x2_t b) {
8984  return vrsubhn_s64(a, b);
8985}
8986
8987// CHECK: test_vrsubhn_u16
8988// CHECK: vrsubhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8989uint8x8_t test_vrsubhn_u16(uint16x8_t a, uint16x8_t b) {
8990  return vrsubhn_u16(a, b);
8991}
8992
8993// CHECK: test_vrsubhn_u32
8994// CHECK: vrsubhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
8995uint16x4_t test_vrsubhn_u32(uint32x4_t a, uint32x4_t b) {
8996  return vrsubhn_u32(a, b);
8997}
8998
8999// CHECK: test_vrsubhn_u64
9000// CHECK: vrsubhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
9001uint32x2_t test_vrsubhn_u64(uint64x2_t a, uint64x2_t b) {
9002  return vrsubhn_u64(a, b);
9003}
9004
9005
9006// CHECK: test_vset_lane_u8
9007// CHECK: vmov
9008uint8x8_t test_vset_lane_u8(uint8_t a, uint8x8_t b) {
9009  return vset_lane_u8(a, b, 7);
9010}
9011
9012// CHECK: test_vset_lane_u16
9013// CHECK: vmov
9014uint16x4_t test_vset_lane_u16(uint16_t a, uint16x4_t b) {
9015  return vset_lane_u16(a, b, 3);
9016}
9017
9018// CHECK: test_vset_lane_u32
9019// CHECK: vmov
9020uint32x2_t test_vset_lane_u32(uint32_t a, uint32x2_t b) {
9021  return vset_lane_u32(a, b, 1);
9022}
9023
9024// CHECK: test_vset_lane_s8
9025// CHECK: vmov
9026int8x8_t test_vset_lane_s8(int8_t a, int8x8_t b) {
9027  return vset_lane_s8(a, b, 7);
9028}
9029
9030// CHECK: test_vset_lane_s16
9031// CHECK: vmov
9032int16x4_t test_vset_lane_s16(int16_t a, int16x4_t b) {
9033  return vset_lane_s16(a, b, 3);
9034}
9035
9036// CHECK: test_vset_lane_s32
9037// CHECK: vmov
9038int32x2_t test_vset_lane_s32(int32_t a, int32x2_t b) {
9039  return vset_lane_s32(a, b, 1);
9040}
9041
9042// CHECK: test_vset_lane_p8
9043// CHECK: vmov
9044poly8x8_t test_vset_lane_p8(poly8_t a, poly8x8_t b) {
9045  return vset_lane_p8(a, b, 7);
9046}
9047
9048// CHECK: test_vset_lane_p16
9049// CHECK: vmov
9050poly16x4_t test_vset_lane_p16(poly16_t a, poly16x4_t b) {
9051  return vset_lane_p16(a, b, 3);
9052}
9053
9054// CHECK: test_vset_lane_f32
9055// CHECK: vmov
9056float32x2_t test_vset_lane_f32(float32_t a, float32x2_t b) {
9057  return vset_lane_f32(a, b, 1);
9058}
9059
9060// CHECK: test_vsetq_lane_u8
9061// CHECK: vmov
9062uint8x16_t test_vsetq_lane_u8(uint8_t a, uint8x16_t b) {
9063  return vsetq_lane_u8(a, b, 15);
9064}
9065
9066// CHECK: test_vsetq_lane_u16
9067// CHECK: vmov
9068uint16x8_t test_vsetq_lane_u16(uint16_t a, uint16x8_t b) {
9069  return vsetq_lane_u16(a, b, 7);
9070}
9071
9072// CHECK: test_vsetq_lane_u32
9073// CHECK: vmov
9074uint32x4_t test_vsetq_lane_u32(uint32_t a, uint32x4_t b) {
9075  return vsetq_lane_u32(a, b, 3);
9076}
9077
9078// CHECK: test_vsetq_lane_s8
9079// CHECK: vmov
9080int8x16_t test_vsetq_lane_s8(int8_t a, int8x16_t b) {
9081  return vsetq_lane_s8(a, b, 15);
9082}
9083
9084// CHECK: test_vsetq_lane_s16
9085// CHECK: vmov
9086int16x8_t test_vsetq_lane_s16(int16_t a, int16x8_t b) {
9087  return vsetq_lane_s16(a, b, 7);
9088}
9089
9090// CHECK: test_vsetq_lane_s32
9091// CHECK: vmov
9092int32x4_t test_vsetq_lane_s32(int32_t a, int32x4_t b) {
9093  return vsetq_lane_s32(a, b, 3);
9094}
9095
9096// CHECK: test_vsetq_lane_p8
9097// CHECK: vmov
9098poly8x16_t test_vsetq_lane_p8(poly8_t a, poly8x16_t b) {
9099  return vsetq_lane_p8(a, b, 15);
9100}
9101
9102// CHECK: test_vsetq_lane_p16
9103// CHECK: vmov
9104poly16x8_t test_vsetq_lane_p16(poly16_t a, poly16x8_t b) {
9105  return vsetq_lane_p16(a, b, 7);
9106}
9107
9108// CHECK: test_vsetq_lane_f32
9109// CHECK: vmov
9110float32x4_t test_vsetq_lane_f32(float32_t a, float32x4_t b) {
9111  return vsetq_lane_f32(a, b, 3);
9112}
9113
9114// CHECK: test_vset_lane_s64
9115// CHECK: vmov
9116int64x1_t test_vset_lane_s64(int64_t a, int64x1_t b) {
9117  return vset_lane_s64(a, b, 0);
9118}
9119
9120// CHECK: test_vset_lane_u64
9121// CHECK: vmov
9122uint64x1_t test_vset_lane_u64(uint64_t a, uint64x1_t b) {
9123  return vset_lane_u64(a, b, 0);
9124}
9125
9126// CHECK: test_vsetq_lane_s64
9127// CHECK: vmov
9128int64x2_t test_vsetq_lane_s64(int64_t a, int64x2_t b) {
9129  return vsetq_lane_s64(a, b, 1);
9130}
9131
9132// CHECK: test_vsetq_lane_u64
9133// CHECK: vmov
9134uint64x2_t test_vsetq_lane_u64(uint64_t a, uint64x2_t b) {
9135  return vsetq_lane_u64(a, b, 1);
9136}
9137
9138
9139// CHECK: test_vshl_s8
9140// CHECK: vshl.s8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
9141int8x8_t test_vshl_s8(int8x8_t a, int8x8_t b) {
9142  return vshl_s8(a, b);
9143}
9144
9145// CHECK: test_vshl_s16
9146// CHECK: vshl.s16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
9147int16x4_t test_vshl_s16(int16x4_t a, int16x4_t b) {
9148  return vshl_s16(a, b);
9149}
9150
9151// CHECK: test_vshl_s32
9152// CHECK: vshl.s32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
9153int32x2_t test_vshl_s32(int32x2_t a, int32x2_t b) {
9154  return vshl_s32(a, b);
9155}
9156
9157// CHECK: test_vshl_s64
9158// CHECK: vshl.s64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
9159int64x1_t test_vshl_s64(int64x1_t a, int64x1_t b) {
9160  return vshl_s64(a, b);
9161}
9162
9163// CHECK: test_vshl_u8
9164// CHECK: vshl.u8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
9165uint8x8_t test_vshl_u8(uint8x8_t a, int8x8_t b) {
9166  return vshl_u8(a, b);
9167}
9168
9169// CHECK: test_vshl_u16
9170// CHECK: vshl.u16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
9171uint16x4_t test_vshl_u16(uint16x4_t a, int16x4_t b) {
9172  return vshl_u16(a, b);
9173}
9174
9175// CHECK: test_vshl_u32
9176// CHECK: vshl.u32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
9177uint32x2_t test_vshl_u32(uint32x2_t a, int32x2_t b) {
9178  return vshl_u32(a, b);
9179}
9180
9181// CHECK: test_vshl_u64
9182// CHECK: vshl.u64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
9183uint64x1_t test_vshl_u64(uint64x1_t a, int64x1_t b) {
9184  return vshl_u64(a, b);
9185}
9186
9187// CHECK: test_vshlq_s8
9188// CHECK: vshl.s8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
9189int8x16_t test_vshlq_s8(int8x16_t a, int8x16_t b) {
9190  return vshlq_s8(a, b);
9191}
9192
9193// CHECK: test_vshlq_s16
9194// CHECK: vshl.s16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
9195int16x8_t test_vshlq_s16(int16x8_t a, int16x8_t b) {
9196  return vshlq_s16(a, b);
9197}
9198
9199// CHECK: test_vshlq_s32
9200// CHECK: vshl.s32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
9201int32x4_t test_vshlq_s32(int32x4_t a, int32x4_t b) {
9202  return vshlq_s32(a, b);
9203}
9204
9205// CHECK: test_vshlq_s64
9206// CHECK: vshl.s64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
9207int64x2_t test_vshlq_s64(int64x2_t a, int64x2_t b) {
9208  return vshlq_s64(a, b);
9209}
9210
9211// CHECK: test_vshlq_u8
9212// CHECK: vshl.u8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
9213uint8x16_t test_vshlq_u8(uint8x16_t a, int8x16_t b) {
9214  return vshlq_u8(a, b);
9215}
9216
9217// CHECK: test_vshlq_u16
9218// CHECK: vshl.u16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
9219uint16x8_t test_vshlq_u16(uint16x8_t a, int16x8_t b) {
9220  return vshlq_u16(a, b);
9221}
9222
9223// CHECK: test_vshlq_u32
9224// CHECK: vshl.u32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
9225uint32x4_t test_vshlq_u32(uint32x4_t a, int32x4_t b) {
9226  return vshlq_u32(a, b);
9227}
9228
9229// CHECK: test_vshlq_u64
9230// CHECK: vshl.u64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
9231uint64x2_t test_vshlq_u64(uint64x2_t a, int64x2_t b) {
9232  return vshlq_u64(a, b);
9233}
9234
9235
9236// CHECK: test_vshll_n_s8
9237// CHECK: vshll.s8 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9238int16x8_t test_vshll_n_s8(int8x8_t a) {
9239  return vshll_n_s8(a, 1);
9240}
9241
9242// CHECK: test_vshll_n_s16
9243// CHECK: vshll.s16 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9244int32x4_t test_vshll_n_s16(int16x4_t a) {
9245  return vshll_n_s16(a, 1);
9246}
9247
9248// CHECK: test_vshll_n_s32
9249// CHECK: vshll.s32 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9250int64x2_t test_vshll_n_s32(int32x2_t a) {
9251  return vshll_n_s32(a, 1);
9252}
9253
9254// CHECK: test_vshll_n_u8
9255// CHECK: vshll.u8 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9256uint16x8_t test_vshll_n_u8(uint8x8_t a) {
9257  return vshll_n_u8(a, 1);
9258}
9259
9260// CHECK: test_vshll_n_u16
9261// CHECK: vshll.u16 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9262uint32x4_t test_vshll_n_u16(uint16x4_t a) {
9263  return vshll_n_u16(a, 1);
9264}
9265
9266// CHECK: test_vshll_n_u32
9267// CHECK: vshll.u32 q{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9268uint64x2_t test_vshll_n_u32(uint32x2_t a) {
9269  return vshll_n_u32(a, 1);
9270}
9271
9272
9273// CHECK: test_vshl_n_s8
9274// CHECK: vshl.i8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9275int8x8_t test_vshl_n_s8(int8x8_t a) {
9276  return vshl_n_s8(a, 1);
9277}
9278
9279// CHECK: test_vshl_n_s16
9280// CHECK: vshl.i16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9281int16x4_t test_vshl_n_s16(int16x4_t a) {
9282  return vshl_n_s16(a, 1);
9283}
9284
9285// CHECK: test_vshl_n_s32
9286// CHECK: vshl.i32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9287int32x2_t test_vshl_n_s32(int32x2_t a) {
9288  return vshl_n_s32(a, 1);
9289}
9290
9291// CHECK: test_vshl_n_s64
9292// CHECK: vshl.i64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9293int64x1_t test_vshl_n_s64(int64x1_t a) {
9294  return vshl_n_s64(a, 1);
9295}
9296
9297// CHECK: test_vshl_n_u8
9298// CHECK: vshl.i8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9299uint8x8_t test_vshl_n_u8(uint8x8_t a) {
9300  return vshl_n_u8(a, 1);
9301}
9302
9303// CHECK: test_vshl_n_u16
9304// CHECK: vshl.i16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9305uint16x4_t test_vshl_n_u16(uint16x4_t a) {
9306  return vshl_n_u16(a, 1);
9307}
9308
9309// CHECK: test_vshl_n_u32
9310// CHECK: vshl.i32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9311uint32x2_t test_vshl_n_u32(uint32x2_t a) {
9312  return vshl_n_u32(a, 1);
9313}
9314
9315// CHECK: test_vshl_n_u64
9316// CHECK: vshl.i64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9317uint64x1_t test_vshl_n_u64(uint64x1_t a) {
9318  return vshl_n_u64(a, 1);
9319}
9320
9321// CHECK: test_vshlq_n_s8
9322// CHECK: vshl.i8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9323int8x16_t test_vshlq_n_s8(int8x16_t a) {
9324  return vshlq_n_s8(a, 1);
9325}
9326
9327// CHECK: test_vshlq_n_s16
9328// CHECK: vshl.i16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9329int16x8_t test_vshlq_n_s16(int16x8_t a) {
9330  return vshlq_n_s16(a, 1);
9331}
9332
9333// CHECK: test_vshlq_n_s32
9334// CHECK: vshl.i32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9335int32x4_t test_vshlq_n_s32(int32x4_t a) {
9336  return vshlq_n_s32(a, 1);
9337}
9338
9339// CHECK: test_vshlq_n_s64
9340// CHECK: vshl.i64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9341int64x2_t test_vshlq_n_s64(int64x2_t a) {
9342  return vshlq_n_s64(a, 1);
9343}
9344
9345// CHECK: test_vshlq_n_u8
9346// CHECK: vshl.i8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9347uint8x16_t test_vshlq_n_u8(uint8x16_t a) {
9348  return vshlq_n_u8(a, 1);
9349}
9350
9351// CHECK: test_vshlq_n_u16
9352// CHECK: vshl.i16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9353uint16x8_t test_vshlq_n_u16(uint16x8_t a) {
9354  return vshlq_n_u16(a, 1);
9355}
9356
9357// CHECK: test_vshlq_n_u32
9358// CHECK: vshl.i32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9359uint32x4_t test_vshlq_n_u32(uint32x4_t a) {
9360  return vshlq_n_u32(a, 1);
9361}
9362
9363// CHECK: test_vshlq_n_u64
9364// CHECK: vshl.i64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9365uint64x2_t test_vshlq_n_u64(uint64x2_t a) {
9366  return vshlq_n_u64(a, 1);
9367}
9368
9369
9370// CHECK: test_vshrn_n_s16
9371// CHECK: vshrn.i16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9372int8x8_t test_vshrn_n_s16(int16x8_t a) {
9373  return vshrn_n_s16(a, 1);
9374}
9375
9376// CHECK: test_vshrn_n_s32
9377// CHECK: vshrn.i32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9378int16x4_t test_vshrn_n_s32(int32x4_t a) {
9379  return vshrn_n_s32(a, 1);
9380}
9381
9382// CHECK: test_vshrn_n_s64
9383// CHECK: vshrn.i64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9384int32x2_t test_vshrn_n_s64(int64x2_t a) {
9385  return vshrn_n_s64(a, 1);
9386}
9387
9388// CHECK: test_vshrn_n_u16
9389// CHECK: vshrn.i16 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9390uint8x8_t test_vshrn_n_u16(uint16x8_t a) {
9391  return vshrn_n_u16(a, 1);
9392}
9393
9394// CHECK: test_vshrn_n_u32
9395// CHECK: vshrn.i32 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9396uint16x4_t test_vshrn_n_u32(uint32x4_t a) {
9397  return vshrn_n_u32(a, 1);
9398}
9399
9400// CHECK: test_vshrn_n_u64
9401// CHECK: vshrn.i64 d{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9402uint32x2_t test_vshrn_n_u64(uint64x2_t a) {
9403  return vshrn_n_u64(a, 1);
9404}
9405
9406
9407// CHECK: test_vshr_n_s8
9408// CHECK: vshr.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9409int8x8_t test_vshr_n_s8(int8x8_t a) {
9410  return vshr_n_s8(a, 1);
9411}
9412
9413// CHECK: test_vshr_n_s16
9414// CHECK: vshr.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9415int16x4_t test_vshr_n_s16(int16x4_t a) {
9416  return vshr_n_s16(a, 1);
9417}
9418
9419// CHECK: test_vshr_n_s32
9420// CHECK: vshr.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9421int32x2_t test_vshr_n_s32(int32x2_t a) {
9422  return vshr_n_s32(a, 1);
9423}
9424
9425// CHECK: test_vshr_n_s64
9426// CHECK: vshr.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9427int64x1_t test_vshr_n_s64(int64x1_t a) {
9428  return vshr_n_s64(a, 1);
9429}
9430
9431// CHECK: test_vshr_n_u8
9432// CHECK: vshr.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9433uint8x8_t test_vshr_n_u8(uint8x8_t a) {
9434  return vshr_n_u8(a, 1);
9435}
9436
9437// CHECK: test_vshr_n_u16
9438// CHECK: vshr.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9439uint16x4_t test_vshr_n_u16(uint16x4_t a) {
9440  return vshr_n_u16(a, 1);
9441}
9442
9443// CHECK: test_vshr_n_u32
9444// CHECK: vshr.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9445uint32x2_t test_vshr_n_u32(uint32x2_t a) {
9446  return vshr_n_u32(a, 1);
9447}
9448
9449// CHECK: test_vshr_n_u64
9450// CHECK: vshr.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9451uint64x1_t test_vshr_n_u64(uint64x1_t a) {
9452  return vshr_n_u64(a, 1);
9453}
9454
9455// CHECK: test_vshrq_n_s8
9456// CHECK: vshr.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9457int8x16_t test_vshrq_n_s8(int8x16_t a) {
9458  return vshrq_n_s8(a, 1);
9459}
9460
9461// CHECK: test_vshrq_n_s16
9462// CHECK: vshr.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9463int16x8_t test_vshrq_n_s16(int16x8_t a) {
9464  return vshrq_n_s16(a, 1);
9465}
9466
9467// CHECK: test_vshrq_n_s32
9468// CHECK: vshr.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9469int32x4_t test_vshrq_n_s32(int32x4_t a) {
9470  return vshrq_n_s32(a, 1);
9471}
9472
9473// CHECK: test_vshrq_n_s64
9474// CHECK: vshr.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9475int64x2_t test_vshrq_n_s64(int64x2_t a) {
9476  return vshrq_n_s64(a, 1);
9477}
9478
9479// CHECK: test_vshrq_n_u8
9480// CHECK: vshr.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9481uint8x16_t test_vshrq_n_u8(uint8x16_t a) {
9482  return vshrq_n_u8(a, 1);
9483}
9484
9485// CHECK: test_vshrq_n_u16
9486// CHECK: vshr.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9487uint16x8_t test_vshrq_n_u16(uint16x8_t a) {
9488  return vshrq_n_u16(a, 1);
9489}
9490
9491// CHECK: test_vshrq_n_u32
9492// CHECK: vshr.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9493uint32x4_t test_vshrq_n_u32(uint32x4_t a) {
9494  return vshrq_n_u32(a, 1);
9495}
9496
9497// CHECK: test_vshrq_n_u64
9498// CHECK: vshr.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9499uint64x2_t test_vshrq_n_u64(uint64x2_t a) {
9500  return vshrq_n_u64(a, 1);
9501}
9502
9503
9504// CHECK: test_vsli_n_s8
9505// CHECK: vsli.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9506int8x8_t test_vsli_n_s8(int8x8_t a, int8x8_t b) {
9507  return vsli_n_s8(a, b, 1);
9508}
9509
9510// CHECK: test_vsli_n_s16
9511// CHECK: vsli.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9512int16x4_t test_vsli_n_s16(int16x4_t a, int16x4_t b) {
9513  return vsli_n_s16(a, b, 1);
9514}
9515
9516// CHECK: test_vsli_n_s32
9517// CHECK: vsli.32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9518int32x2_t test_vsli_n_s32(int32x2_t a, int32x2_t b) {
9519  return vsli_n_s32(a, b, 1);
9520}
9521
9522// CHECK: test_vsli_n_s64
9523// CHECK: vsli.64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9524int64x1_t test_vsli_n_s64(int64x1_t a, int64x1_t b) {
9525  return vsli_n_s64(a, b, 1);
9526}
9527
9528// CHECK: test_vsli_n_u8
9529// CHECK: vsli.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9530uint8x8_t test_vsli_n_u8(uint8x8_t a, uint8x8_t b) {
9531  return vsli_n_u8(a, b, 1);
9532}
9533
9534// CHECK: test_vsli_n_u16
9535// CHECK: vsli.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9536uint16x4_t test_vsli_n_u16(uint16x4_t a, uint16x4_t b) {
9537  return vsli_n_u16(a, b, 1);
9538}
9539
9540// CHECK: test_vsli_n_u32
9541// CHECK: vsli.32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9542uint32x2_t test_vsli_n_u32(uint32x2_t a, uint32x2_t b) {
9543  return vsli_n_u32(a, b, 1);
9544}
9545
9546// CHECK: test_vsli_n_u64
9547// CHECK: vsli.64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9548uint64x1_t test_vsli_n_u64(uint64x1_t a, uint64x1_t b) {
9549  return vsli_n_u64(a, b, 1);
9550}
9551
9552// CHECK: test_vsli_n_p8
9553// CHECK: vsli.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9554poly8x8_t test_vsli_n_p8(poly8x8_t a, poly8x8_t b) {
9555  return vsli_n_p8(a, b, 1);
9556}
9557
9558// CHECK: test_vsli_n_p16
9559// CHECK: vsli.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9560poly16x4_t test_vsli_n_p16(poly16x4_t a, poly16x4_t b) {
9561  return vsli_n_p16(a, b, 1);
9562}
9563
9564// CHECK: test_vsliq_n_s8
9565// CHECK: vsli.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9566int8x16_t test_vsliq_n_s8(int8x16_t a, int8x16_t b) {
9567  return vsliq_n_s8(a, b, 1);
9568}
9569
9570// CHECK: test_vsliq_n_s16
9571// CHECK: vsli.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9572int16x8_t test_vsliq_n_s16(int16x8_t a, int16x8_t b) {
9573  return vsliq_n_s16(a, b, 1);
9574}
9575
9576// CHECK: test_vsliq_n_s32
9577// CHECK: vsli.32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9578int32x4_t test_vsliq_n_s32(int32x4_t a, int32x4_t b) {
9579  return vsliq_n_s32(a, b, 1);
9580}
9581
9582// CHECK: test_vsliq_n_s64
9583// CHECK: vsli.64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9584int64x2_t test_vsliq_n_s64(int64x2_t a, int64x2_t b) {
9585  return vsliq_n_s64(a, b, 1);
9586}
9587
9588// CHECK: test_vsliq_n_u8
9589// CHECK: vsli.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9590uint8x16_t test_vsliq_n_u8(uint8x16_t a, uint8x16_t b) {
9591  return vsliq_n_u8(a, b, 1);
9592}
9593
9594// CHECK: test_vsliq_n_u16
9595// CHECK: vsli.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9596uint16x8_t test_vsliq_n_u16(uint16x8_t a, uint16x8_t b) {
9597  return vsliq_n_u16(a, b, 1);
9598}
9599
9600// CHECK: test_vsliq_n_u32
9601// CHECK: vsli.32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9602uint32x4_t test_vsliq_n_u32(uint32x4_t a, uint32x4_t b) {
9603  return vsliq_n_u32(a, b, 1);
9604}
9605
9606// CHECK: test_vsliq_n_u64
9607// CHECK: vsli.64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9608uint64x2_t test_vsliq_n_u64(uint64x2_t a, uint64x2_t b) {
9609  return vsliq_n_u64(a, b, 1);
9610}
9611
9612// CHECK: test_vsliq_n_p8
9613// CHECK: vsli.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9614poly8x16_t test_vsliq_n_p8(poly8x16_t a, poly8x16_t b) {
9615  return vsliq_n_p8(a, b, 1);
9616}
9617
9618// CHECK: test_vsliq_n_p16
9619// CHECK: vsli.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9620poly16x8_t test_vsliq_n_p16(poly16x8_t a, poly16x8_t b) {
9621  return vsliq_n_p16(a, b, 1);
9622}
9623
9624
9625// CHECK: test_vsra_n_s8
9626// CHECK: vsra.s8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9627int8x8_t test_vsra_n_s8(int8x8_t a, int8x8_t b) {
9628  return vsra_n_s8(a, b, 1);
9629}
9630
9631// CHECK: test_vsra_n_s16
9632// CHECK: vsra.s16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9633int16x4_t test_vsra_n_s16(int16x4_t a, int16x4_t b) {
9634  return vsra_n_s16(a, b, 1);
9635}
9636
9637// CHECK: test_vsra_n_s32
9638// CHECK: vsra.s32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9639int32x2_t test_vsra_n_s32(int32x2_t a, int32x2_t b) {
9640  return vsra_n_s32(a, b, 1);
9641}
9642
9643// CHECK: test_vsra_n_s64
9644// CHECK: vsra.s64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9645int64x1_t test_vsra_n_s64(int64x1_t a, int64x1_t b) {
9646  return vsra_n_s64(a, b, 1);
9647}
9648
9649// CHECK: test_vsra_n_u8
9650// CHECK: vsra.u8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9651uint8x8_t test_vsra_n_u8(uint8x8_t a, uint8x8_t b) {
9652  return vsra_n_u8(a, b, 1);
9653}
9654
9655// CHECK: test_vsra_n_u16
9656// CHECK: vsra.u16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9657uint16x4_t test_vsra_n_u16(uint16x4_t a, uint16x4_t b) {
9658  return vsra_n_u16(a, b, 1);
9659}
9660
9661// CHECK: test_vsra_n_u32
9662// CHECK: vsra.u32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9663uint32x2_t test_vsra_n_u32(uint32x2_t a, uint32x2_t b) {
9664  return vsra_n_u32(a, b, 1);
9665}
9666
9667// CHECK: test_vsra_n_u64
9668// CHECK: vsra.u64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9669uint64x1_t test_vsra_n_u64(uint64x1_t a, uint64x1_t b) {
9670  return vsra_n_u64(a, b, 1);
9671}
9672
9673// CHECK: test_vsraq_n_s8
9674// CHECK: vsra.s8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9675int8x16_t test_vsraq_n_s8(int8x16_t a, int8x16_t b) {
9676  return vsraq_n_s8(a, b, 1);
9677}
9678
9679// CHECK: test_vsraq_n_s16
9680// CHECK: vsra.s16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9681int16x8_t test_vsraq_n_s16(int16x8_t a, int16x8_t b) {
9682  return vsraq_n_s16(a, b, 1);
9683}
9684
9685// CHECK: test_vsraq_n_s32
9686// CHECK: vsra.s32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9687int32x4_t test_vsraq_n_s32(int32x4_t a, int32x4_t b) {
9688  return vsraq_n_s32(a, b, 1);
9689}
9690
9691// CHECK: test_vsraq_n_s64
9692// CHECK: vsra.s64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9693int64x2_t test_vsraq_n_s64(int64x2_t a, int64x2_t b) {
9694  return vsraq_n_s64(a, b, 1);
9695}
9696
9697// CHECK: test_vsraq_n_u8
9698// CHECK: vsra.u8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9699uint8x16_t test_vsraq_n_u8(uint8x16_t a, uint8x16_t b) {
9700  return vsraq_n_u8(a, b, 1);
9701}
9702
9703// CHECK: test_vsraq_n_u16
9704// CHECK: vsra.u16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9705uint16x8_t test_vsraq_n_u16(uint16x8_t a, uint16x8_t b) {
9706  return vsraq_n_u16(a, b, 1);
9707}
9708
9709// CHECK: test_vsraq_n_u32
9710// CHECK: vsra.u32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9711uint32x4_t test_vsraq_n_u32(uint32x4_t a, uint32x4_t b) {
9712  return vsraq_n_u32(a, b, 1);
9713}
9714
9715// CHECK: test_vsraq_n_u64
9716// CHECK: vsra.u64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9717uint64x2_t test_vsraq_n_u64(uint64x2_t a, uint64x2_t b) {
9718  return vsraq_n_u64(a, b, 1);
9719}
9720
9721
9722// CHECK: test_vsri_n_s8
9723// CHECK: vsri.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9724int8x8_t test_vsri_n_s8(int8x8_t a, int8x8_t b) {
9725  return vsri_n_s8(a, b, 1);
9726}
9727
9728// CHECK: test_vsri_n_s16
9729// CHECK: vsri.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9730int16x4_t test_vsri_n_s16(int16x4_t a, int16x4_t b) {
9731  return vsri_n_s16(a, b, 1);
9732}
9733
9734// CHECK: test_vsri_n_s32
9735// CHECK: vsri.32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9736int32x2_t test_vsri_n_s32(int32x2_t a, int32x2_t b) {
9737  return vsri_n_s32(a, b, 1);
9738}
9739
9740// CHECK: test_vsri_n_s64
9741// CHECK: vsri.64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9742int64x1_t test_vsri_n_s64(int64x1_t a, int64x1_t b) {
9743  return vsri_n_s64(a, b, 1);
9744}
9745
9746// CHECK: test_vsri_n_u8
9747// CHECK: vsri.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9748uint8x8_t test_vsri_n_u8(uint8x8_t a, uint8x8_t b) {
9749  return vsri_n_u8(a, b, 1);
9750}
9751
9752// CHECK: test_vsri_n_u16
9753// CHECK: vsri.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9754uint16x4_t test_vsri_n_u16(uint16x4_t a, uint16x4_t b) {
9755  return vsri_n_u16(a, b, 1);
9756}
9757
9758// CHECK: test_vsri_n_u32
9759// CHECK: vsri.32 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9760uint32x2_t test_vsri_n_u32(uint32x2_t a, uint32x2_t b) {
9761  return vsri_n_u32(a, b, 1);
9762}
9763
9764// CHECK: test_vsri_n_u64
9765// CHECK: vsri.64 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9766uint64x1_t test_vsri_n_u64(uint64x1_t a, uint64x1_t b) {
9767  return vsri_n_u64(a, b, 1);
9768}
9769
9770// CHECK: test_vsri_n_p8
9771// CHECK: vsri.8 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9772poly8x8_t test_vsri_n_p8(poly8x8_t a, poly8x8_t b) {
9773  return vsri_n_p8(a, b, 1);
9774}
9775
9776// CHECK: test_vsri_n_p16
9777// CHECK: vsri.16 d{{[0-9]+}}, d{{[0-9]+}}, #{{[0-9]+}}
9778poly16x4_t test_vsri_n_p16(poly16x4_t a, poly16x4_t b) {
9779  return vsri_n_p16(a, b, 1);
9780}
9781
9782// CHECK: test_vsriq_n_s8
9783// CHECK: vsri.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9784int8x16_t test_vsriq_n_s8(int8x16_t a, int8x16_t b) {
9785  return vsriq_n_s8(a, b, 1);
9786}
9787
9788// CHECK: test_vsriq_n_s16
9789// CHECK: vsri.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9790int16x8_t test_vsriq_n_s16(int16x8_t a, int16x8_t b) {
9791  return vsriq_n_s16(a, b, 1);
9792}
9793
9794// CHECK: test_vsriq_n_s32
9795// CHECK: vsri.32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9796int32x4_t test_vsriq_n_s32(int32x4_t a, int32x4_t b) {
9797  return vsriq_n_s32(a, b, 1);
9798}
9799
9800// CHECK: test_vsriq_n_s64
9801// CHECK: vsri.64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9802int64x2_t test_vsriq_n_s64(int64x2_t a, int64x2_t b) {
9803  return vsriq_n_s64(a, b, 1);
9804}
9805
9806// CHECK: test_vsriq_n_u8
9807// CHECK: vsri.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9808uint8x16_t test_vsriq_n_u8(uint8x16_t a, uint8x16_t b) {
9809  return vsriq_n_u8(a, b, 1);
9810}
9811
9812// CHECK: test_vsriq_n_u16
9813// CHECK: vsri.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9814uint16x8_t test_vsriq_n_u16(uint16x8_t a, uint16x8_t b) {
9815  return vsriq_n_u16(a, b, 1);
9816}
9817
9818// CHECK: test_vsriq_n_u32
9819// CHECK: vsri.32 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9820uint32x4_t test_vsriq_n_u32(uint32x4_t a, uint32x4_t b) {
9821  return vsriq_n_u32(a, b, 1);
9822}
9823
9824// CHECK: test_vsriq_n_u64
9825// CHECK: vsri.64 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9826uint64x2_t test_vsriq_n_u64(uint64x2_t a, uint64x2_t b) {
9827  return vsriq_n_u64(a, b, 1);
9828}
9829
9830// CHECK: test_vsriq_n_p8
9831// CHECK: vsri.8 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9832poly8x16_t test_vsriq_n_p8(poly8x16_t a, poly8x16_t b) {
9833  return vsriq_n_p8(a, b, 1);
9834}
9835
9836// CHECK: test_vsriq_n_p16
9837// CHECK: vsri.16 q{{[0-9]+}}, q{{[0-9]+}}, #{{[0-9]+}}
9838poly16x8_t test_vsriq_n_p16(poly16x8_t a, poly16x8_t b) {
9839  return vsriq_n_p16(a, b, 1);
9840}
9841
9842
9843// CHECK: test_vst1q_u8
9844// CHECK: vst1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9845void test_vst1q_u8(uint8_t * a, uint8x16_t b) {
9846  vst1q_u8(a, b);
9847}
9848
9849// CHECK: test_vst1q_u16
9850// CHECK: vst1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9851void test_vst1q_u16(uint16_t * a, uint16x8_t b) {
9852  vst1q_u16(a, b);
9853}
9854
9855// CHECK: test_vst1q_u32
9856// CHECK: vst1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9857void test_vst1q_u32(uint32_t * a, uint32x4_t b) {
9858  vst1q_u32(a, b);
9859}
9860
9861// CHECK: test_vst1q_u64
9862// CHECK: vst1.64 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9863void test_vst1q_u64(uint64_t * a, uint64x2_t b) {
9864  vst1q_u64(a, b);
9865}
9866
9867// CHECK: test_vst1q_s8
9868// CHECK: vst1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9869void test_vst1q_s8(int8_t * a, int8x16_t b) {
9870  vst1q_s8(a, b);
9871}
9872
9873// CHECK: test_vst1q_s16
9874// CHECK: vst1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9875void test_vst1q_s16(int16_t * a, int16x8_t b) {
9876  vst1q_s16(a, b);
9877}
9878
9879// CHECK: test_vst1q_s32
9880// CHECK: vst1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9881void test_vst1q_s32(int32_t * a, int32x4_t b) {
9882  vst1q_s32(a, b);
9883}
9884
9885// CHECK: test_vst1q_s64
9886// CHECK: vst1.64 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9887void test_vst1q_s64(int64_t * a, int64x2_t b) {
9888  vst1q_s64(a, b);
9889}
9890
9891// CHECK: test_vst1q_f16
9892// CHECK: vst1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9893void test_vst1q_f16(float16_t * a, float16x8_t b) {
9894  vst1q_f16(a, b);
9895}
9896
9897// CHECK: test_vst1q_f32
9898// CHECK: vst1.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9899void test_vst1q_f32(float32_t * a, float32x4_t b) {
9900  vst1q_f32(a, b);
9901}
9902
9903// CHECK: test_vst1q_p8
9904// CHECK: vst1.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9905void test_vst1q_p8(poly8_t * a, poly8x16_t b) {
9906  vst1q_p8(a, b);
9907}
9908
9909// CHECK: test_vst1q_p16
9910// CHECK: vst1.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
9911void test_vst1q_p16(poly16_t * a, poly16x8_t b) {
9912  vst1q_p16(a, b);
9913}
9914
9915// CHECK: test_vst1_u8
9916// CHECK: vst1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9917void test_vst1_u8(uint8_t * a, uint8x8_t b) {
9918  vst1_u8(a, b);
9919}
9920
9921// CHECK: test_vst1_u16
9922// CHECK: vst1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9923void test_vst1_u16(uint16_t * a, uint16x4_t b) {
9924  vst1_u16(a, b);
9925}
9926
9927// CHECK: test_vst1_u32
9928// CHECK: vst1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9929void test_vst1_u32(uint32_t * a, uint32x2_t b) {
9930  vst1_u32(a, b);
9931}
9932
9933// CHECK: test_vst1_u64
9934// CHECK: vst1.64 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9935void test_vst1_u64(uint64_t * a, uint64x1_t b) {
9936  vst1_u64(a, b);
9937}
9938
9939// CHECK: test_vst1_s8
9940// CHECK: vst1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9941void test_vst1_s8(int8_t * a, int8x8_t b) {
9942  vst1_s8(a, b);
9943}
9944
9945// CHECK: test_vst1_s16
9946// CHECK: vst1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9947void test_vst1_s16(int16_t * a, int16x4_t b) {
9948  vst1_s16(a, b);
9949}
9950
9951// CHECK: test_vst1_s32
9952// CHECK: vst1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9953void test_vst1_s32(int32_t * a, int32x2_t b) {
9954  vst1_s32(a, b);
9955}
9956
9957// CHECK: test_vst1_s64
9958// CHECK: vst1.64 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9959void test_vst1_s64(int64_t * a, int64x1_t b) {
9960  vst1_s64(a, b);
9961}
9962
9963// CHECK: test_vst1_f16
9964// CHECK: vst1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9965void test_vst1_f16(float16_t * a, float16x4_t b) {
9966  vst1_f16(a, b);
9967}
9968
9969// CHECK: test_vst1_f32
9970// CHECK: vst1.32 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9971void test_vst1_f32(float32_t * a, float32x2_t b) {
9972  vst1_f32(a, b);
9973}
9974
9975// CHECK: test_vst1_p8
9976// CHECK: vst1.8 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9977void test_vst1_p8(poly8_t * a, poly8x8_t b) {
9978  vst1_p8(a, b);
9979}
9980
9981// CHECK: test_vst1_p16
9982// CHECK: vst1.16 {d{{[0-9]+}}}, [r{{[0-9]+}}]
9983void test_vst1_p16(poly16_t * a, poly16x4_t b) {
9984  vst1_p16(a, b);
9985}
9986
9987
9988// CHECK: test_vst1q_lane_u8
9989// CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
9990void test_vst1q_lane_u8(uint8_t * a, uint8x16_t b) {
9991  vst1q_lane_u8(a, b, 15);
9992}
9993
9994// CHECK: test_vst1q_lane_u16
9995// CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
9996void test_vst1q_lane_u16(uint16_t * a, uint16x8_t b) {
9997  vst1q_lane_u16(a, b, 7);
9998}
9999
10000// CHECK: test_vst1q_lane_u32
10001// CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
10002void test_vst1q_lane_u32(uint32_t * a, uint32x4_t b) {
10003  vst1q_lane_u32(a, b, 3);
10004}
10005
10006// CHECK: test_vst1q_lane_u64
10007// CHECK: {{str|vstr|vmov}}
10008void test_vst1q_lane_u64(uint64_t * a, uint64x2_t b) {
10009  vst1q_lane_u64(a, b, 1);
10010}
10011
10012// CHECK: test_vst1q_lane_s8
10013// CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10014void test_vst1q_lane_s8(int8_t * a, int8x16_t b) {
10015  vst1q_lane_s8(a, b, 15);
10016}
10017
10018// CHECK: test_vst1q_lane_s16
10019// CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
10020void test_vst1q_lane_s16(int16_t * a, int16x8_t b) {
10021  vst1q_lane_s16(a, b, 7);
10022}
10023
10024// CHECK: test_vst1q_lane_s32
10025// CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
10026void test_vst1q_lane_s32(int32_t * a, int32x4_t b) {
10027  vst1q_lane_s32(a, b, 3);
10028}
10029
10030// CHECK: test_vst1q_lane_s64
10031// CHECK: {{str|vstr|vmov}}
10032void test_vst1q_lane_s64(int64_t * a, int64x2_t b) {
10033  vst1q_lane_s64(a, b, 1);
10034}
10035
10036// CHECK: test_vst1q_lane_f16
10037// CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
10038void test_vst1q_lane_f16(float16_t * a, float16x8_t b) {
10039  vst1q_lane_f16(a, b, 7);
10040}
10041
10042// CHECK: test_vst1q_lane_f32
10043// CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
10044void test_vst1q_lane_f32(float32_t * a, float32x4_t b) {
10045  vst1q_lane_f32(a, b, 3);
10046}
10047
10048// CHECK: test_vst1q_lane_p8
10049// CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10050void test_vst1q_lane_p8(poly8_t * a, poly8x16_t b) {
10051  vst1q_lane_p8(a, b, 15);
10052}
10053
10054// CHECK: test_vst1q_lane_p16
10055// CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
10056void test_vst1q_lane_p16(poly16_t * a, poly16x8_t b) {
10057  vst1q_lane_p16(a, b, 7);
10058}
10059
10060// CHECK: test_vst1_lane_u8
10061// CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10062void test_vst1_lane_u8(uint8_t * a, uint8x8_t b) {
10063  vst1_lane_u8(a, b, 7);
10064}
10065
10066// CHECK: test_vst1_lane_u16
10067// CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
10068void test_vst1_lane_u16(uint16_t * a, uint16x4_t b) {
10069  vst1_lane_u16(a, b, 3);
10070}
10071
10072// CHECK: test_vst1_lane_u32
10073// CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
10074void test_vst1_lane_u32(uint32_t * a, uint32x2_t b) {
10075  vst1_lane_u32(a, b, 1);
10076}
10077
10078// CHECK: test_vst1_lane_u64
10079// CHECK: {{str|vstr|vmov}}
10080void test_vst1_lane_u64(uint64_t * a, uint64x1_t b) {
10081  vst1_lane_u64(a, b, 0);
10082}
10083
10084// CHECK: test_vst1_lane_s8
10085// CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10086void test_vst1_lane_s8(int8_t * a, int8x8_t b) {
10087  vst1_lane_s8(a, b, 7);
10088}
10089
10090// CHECK: test_vst1_lane_s16
10091// CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
10092void test_vst1_lane_s16(int16_t * a, int16x4_t b) {
10093  vst1_lane_s16(a, b, 3);
10094}
10095
10096// CHECK: test_vst1_lane_s32
10097// CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
10098void test_vst1_lane_s32(int32_t * a, int32x2_t b) {
10099  vst1_lane_s32(a, b, 1);
10100}
10101
10102// CHECK: test_vst1_lane_s64
10103// CHECK: {{str|vstr|vmov}}
10104void test_vst1_lane_s64(int64_t * a, int64x1_t b) {
10105  vst1_lane_s64(a, b, 0);
10106}
10107
10108// CHECK: test_vst1_lane_f16
10109// CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
10110void test_vst1_lane_f16(float16_t * a, float16x4_t b) {
10111  vst1_lane_f16(a, b, 3);
10112}
10113
10114// CHECK: test_vst1_lane_f32
10115// CHECK: vst1.32 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:32]
10116void test_vst1_lane_f32(float32_t * a, float32x2_t b) {
10117  vst1_lane_f32(a, b, 1);
10118}
10119
10120// CHECK: test_vst1_lane_p8
10121// CHECK: vst1.8 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10122void test_vst1_lane_p8(poly8_t * a, poly8x8_t b) {
10123  vst1_lane_p8(a, b, 7);
10124}
10125
10126// CHECK: test_vst1_lane_p16
10127// CHECK: vst1.16 {d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}:16]
10128void test_vst1_lane_p16(poly16_t * a, poly16x4_t b) {
10129  vst1_lane_p16(a, b, 3);
10130}
10131
10132
10133// CHECK: test_vst2q_u8
10134// CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10135void test_vst2q_u8(uint8_t * a, uint8x16x2_t b) {
10136  vst2q_u8(a, b);
10137}
10138
10139// CHECK: test_vst2q_u16
10140// CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10141void test_vst2q_u16(uint16_t * a, uint16x8x2_t b) {
10142  vst2q_u16(a, b);
10143}
10144
10145// CHECK: test_vst2q_u32
10146// CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10147void test_vst2q_u32(uint32_t * a, uint32x4x2_t b) {
10148  vst2q_u32(a, b);
10149}
10150
10151// CHECK: test_vst2q_s8
10152// CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10153void test_vst2q_s8(int8_t * a, int8x16x2_t b) {
10154  vst2q_s8(a, b);
10155}
10156
10157// CHECK: test_vst2q_s16
10158// CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10159void test_vst2q_s16(int16_t * a, int16x8x2_t b) {
10160  vst2q_s16(a, b);
10161}
10162
10163// CHECK: test_vst2q_s32
10164// CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10165void test_vst2q_s32(int32_t * a, int32x4x2_t b) {
10166  vst2q_s32(a, b);
10167}
10168
10169// CHECK: test_vst2q_f16
10170// CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10171void test_vst2q_f16(float16_t * a, float16x8x2_t b) {
10172  vst2q_f16(a, b);
10173}
10174
10175// CHECK: test_vst2q_f32
10176// CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10177void test_vst2q_f32(float32_t * a, float32x4x2_t b) {
10178  vst2q_f32(a, b);
10179}
10180
10181// CHECK: test_vst2q_p8
10182// CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10183void test_vst2q_p8(poly8_t * a, poly8x16x2_t b) {
10184  vst2q_p8(a, b);
10185}
10186
10187// CHECK: test_vst2q_p16
10188// CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10189void test_vst2q_p16(poly16_t * a, poly16x8x2_t b) {
10190  vst2q_p16(a, b);
10191}
10192
10193// CHECK: test_vst2_u8
10194// CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10195void test_vst2_u8(uint8_t * a, uint8x8x2_t b) {
10196  vst2_u8(a, b);
10197}
10198
10199// CHECK: test_vst2_u16
10200// CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10201void test_vst2_u16(uint16_t * a, uint16x4x2_t b) {
10202  vst2_u16(a, b);
10203}
10204
10205// CHECK: test_vst2_u32
10206// CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10207void test_vst2_u32(uint32_t * a, uint32x2x2_t b) {
10208  vst2_u32(a, b);
10209}
10210
10211// CHECK: test_vst2_u64
10212// CHECK: vst1.64
10213void test_vst2_u64(uint64_t * a, uint64x1x2_t b) {
10214  vst2_u64(a, b);
10215}
10216
10217// CHECK: test_vst2_s8
10218// CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10219void test_vst2_s8(int8_t * a, int8x8x2_t b) {
10220  vst2_s8(a, b);
10221}
10222
10223// CHECK: test_vst2_s16
10224// CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10225void test_vst2_s16(int16_t * a, int16x4x2_t b) {
10226  vst2_s16(a, b);
10227}
10228
10229// CHECK: test_vst2_s32
10230// CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10231void test_vst2_s32(int32_t * a, int32x2x2_t b) {
10232  vst2_s32(a, b);
10233}
10234
10235// CHECK: test_vst2_s64
10236// CHECK: vst1.64
10237void test_vst2_s64(int64_t * a, int64x1x2_t b) {
10238  vst2_s64(a, b);
10239}
10240
10241// CHECK: test_vst2_f16
10242// CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10243void test_vst2_f16(float16_t * a, float16x4x2_t b) {
10244  vst2_f16(a, b);
10245}
10246
10247// CHECK: test_vst2_f32
10248// CHECK: vst2.32 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10249void test_vst2_f32(float32_t * a, float32x2x2_t b) {
10250  vst2_f32(a, b);
10251}
10252
10253// CHECK: test_vst2_p8
10254// CHECK: vst2.8 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10255void test_vst2_p8(poly8_t * a, poly8x8x2_t b) {
10256  vst2_p8(a, b);
10257}
10258
10259// CHECK: test_vst2_p16
10260// CHECK: vst2.16 {d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10261void test_vst2_p16(poly16_t * a, poly16x4x2_t b) {
10262  vst2_p16(a, b);
10263}
10264
10265
10266// CHECK: test_vst2q_lane_u16
10267// CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10268void test_vst2q_lane_u16(uint16_t * a, uint16x8x2_t b) {
10269  vst2q_lane_u16(a, b, 7);
10270}
10271
10272// CHECK: test_vst2q_lane_u32
10273// CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10274void test_vst2q_lane_u32(uint32_t * a, uint32x4x2_t b) {
10275  vst2q_lane_u32(a, b, 3);
10276}
10277
10278// CHECK: test_vst2q_lane_s16
10279// CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10280void test_vst2q_lane_s16(int16_t * a, int16x8x2_t b) {
10281  vst2q_lane_s16(a, b, 7);
10282}
10283
10284// CHECK: test_vst2q_lane_s32
10285// CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10286void test_vst2q_lane_s32(int32_t * a, int32x4x2_t b) {
10287  vst2q_lane_s32(a, b, 3);
10288}
10289
10290// CHECK: test_vst2q_lane_f16
10291// CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10292void test_vst2q_lane_f16(float16_t * a, float16x8x2_t b) {
10293  vst2q_lane_f16(a, b, 7);
10294}
10295
10296// CHECK: test_vst2q_lane_f32
10297// CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10298void test_vst2q_lane_f32(float32_t * a, float32x4x2_t b) {
10299  vst2q_lane_f32(a, b, 3);
10300}
10301
10302// CHECK: test_vst2q_lane_p16
10303// CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10304void test_vst2q_lane_p16(poly16_t * a, poly16x8x2_t b) {
10305  vst2q_lane_p16(a, b, 7);
10306}
10307
10308// CHECK: test_vst2_lane_u8
10309// CHECK: vst2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10310void test_vst2_lane_u8(uint8_t * a, uint8x8x2_t b) {
10311  vst2_lane_u8(a, b, 7);
10312}
10313
10314// CHECK: test_vst2_lane_u16
10315// CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10316void test_vst2_lane_u16(uint16_t * a, uint16x4x2_t b) {
10317  vst2_lane_u16(a, b, 3);
10318}
10319
10320// CHECK: test_vst2_lane_u32
10321// CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10322void test_vst2_lane_u32(uint32_t * a, uint32x2x2_t b) {
10323  vst2_lane_u32(a, b, 1);
10324}
10325
10326// CHECK: test_vst2_lane_s8
10327// CHECK: vst2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10328void test_vst2_lane_s8(int8_t * a, int8x8x2_t b) {
10329  vst2_lane_s8(a, b, 7);
10330}
10331
10332// CHECK: test_vst2_lane_s16
10333// CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10334void test_vst2_lane_s16(int16_t * a, int16x4x2_t b) {
10335  vst2_lane_s16(a, b, 3);
10336}
10337
10338// CHECK: test_vst2_lane_s32
10339// CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10340void test_vst2_lane_s32(int32_t * a, int32x2x2_t b) {
10341  vst2_lane_s32(a, b, 1);
10342}
10343
10344// CHECK: test_vst2_lane_f16
10345// CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10346void test_vst2_lane_f16(float16_t * a, float16x4x2_t b) {
10347  vst2_lane_f16(a, b, 3);
10348}
10349
10350// CHECK: test_vst2_lane_f32
10351// CHECK: vst2.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10352void test_vst2_lane_f32(float32_t * a, float32x2x2_t b) {
10353  vst2_lane_f32(a, b, 1);
10354}
10355
10356// CHECK: test_vst2_lane_p8
10357// CHECK: vst2.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10358void test_vst2_lane_p8(poly8_t * a, poly8x8x2_t b) {
10359  vst2_lane_p8(a, b, 7);
10360}
10361
10362// CHECK: test_vst2_lane_p16
10363// CHECK: vst2.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10364void test_vst2_lane_p16(poly16_t * a, poly16x4x2_t b) {
10365  vst2_lane_p16(a, b, 3);
10366}
10367
10368
10369// CHECK: test_vst3q_u8
10370// CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10371void test_vst3q_u8(uint8_t * a, uint8x16x3_t b) {
10372  vst3q_u8(a, b);
10373}
10374
10375// CHECK: test_vst3q_u16
10376// CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10377void test_vst3q_u16(uint16_t * a, uint16x8x3_t b) {
10378  vst3q_u16(a, b);
10379}
10380
10381// CHECK: test_vst3q_u32
10382// CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10383void test_vst3q_u32(uint32_t * a, uint32x4x3_t b) {
10384  vst3q_u32(a, b);
10385}
10386
10387// CHECK: test_vst3q_s8
10388// CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10389void test_vst3q_s8(int8_t * a, int8x16x3_t b) {
10390  vst3q_s8(a, b);
10391}
10392
10393// CHECK: test_vst3q_s16
10394// CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10395void test_vst3q_s16(int16_t * a, int16x8x3_t b) {
10396  vst3q_s16(a, b);
10397}
10398
10399// CHECK: test_vst3q_s32
10400// CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10401void test_vst3q_s32(int32_t * a, int32x4x3_t b) {
10402  vst3q_s32(a, b);
10403}
10404
10405// CHECK: test_vst3q_f16
10406// CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10407void test_vst3q_f16(float16_t * a, float16x8x3_t b) {
10408  vst3q_f16(a, b);
10409}
10410
10411// CHECK: test_vst3q_f32
10412// CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10413void test_vst3q_f32(float32_t * a, float32x4x3_t b) {
10414  vst3q_f32(a, b);
10415}
10416
10417// CHECK: test_vst3q_p8
10418// CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10419void test_vst3q_p8(poly8_t * a, poly8x16x3_t b) {
10420  vst3q_p8(a, b);
10421}
10422
10423// CHECK: test_vst3q_p16
10424// CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10425void test_vst3q_p16(poly16_t * a, poly16x8x3_t b) {
10426  vst3q_p16(a, b);
10427}
10428
10429// CHECK: test_vst3_u8
10430// CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10431void test_vst3_u8(uint8_t * a, uint8x8x3_t b) {
10432  vst3_u8(a, b);
10433}
10434
10435// CHECK: test_vst3_u16
10436// CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10437void test_vst3_u16(uint16_t * a, uint16x4x3_t b) {
10438  vst3_u16(a, b);
10439}
10440
10441// CHECK: test_vst3_u32
10442// CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10443void test_vst3_u32(uint32_t * a, uint32x2x3_t b) {
10444  vst3_u32(a, b);
10445}
10446
10447// CHECK: test_vst3_u64
10448// CHECK: vst1.64
10449void test_vst3_u64(uint64_t * a, uint64x1x3_t b) {
10450  vst3_u64(a, b);
10451}
10452
10453// CHECK: test_vst3_s8
10454// CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10455void test_vst3_s8(int8_t * a, int8x8x3_t b) {
10456  vst3_s8(a, b);
10457}
10458
10459// CHECK: test_vst3_s16
10460// CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10461void test_vst3_s16(int16_t * a, int16x4x3_t b) {
10462  vst3_s16(a, b);
10463}
10464
10465// CHECK: test_vst3_s32
10466// CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10467void test_vst3_s32(int32_t * a, int32x2x3_t b) {
10468  vst3_s32(a, b);
10469}
10470
10471// CHECK: test_vst3_s64
10472// CHECK: vst1.64
10473void test_vst3_s64(int64_t * a, int64x1x3_t b) {
10474  vst3_s64(a, b);
10475}
10476
10477// CHECK: test_vst3_f16
10478// CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10479void test_vst3_f16(float16_t * a, float16x4x3_t b) {
10480  vst3_f16(a, b);
10481}
10482
10483// CHECK: test_vst3_f32
10484// CHECK: vst3.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10485void test_vst3_f32(float32_t * a, float32x2x3_t b) {
10486  vst3_f32(a, b);
10487}
10488
10489// CHECK: test_vst3_p8
10490// CHECK: vst3.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10491void test_vst3_p8(poly8_t * a, poly8x8x3_t b) {
10492  vst3_p8(a, b);
10493}
10494
10495// CHECK: test_vst3_p16
10496// CHECK: vst3.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10497void test_vst3_p16(poly16_t * a, poly16x4x3_t b) {
10498  vst3_p16(a, b);
10499}
10500
10501
10502// CHECK: test_vst3q_lane_u16
10503// CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10504void test_vst3q_lane_u16(uint16_t * a, uint16x8x3_t b) {
10505  vst3q_lane_u16(a, b, 7);
10506}
10507
10508// CHECK: test_vst3q_lane_u32
10509// CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10510void test_vst3q_lane_u32(uint32_t * a, uint32x4x3_t b) {
10511  vst3q_lane_u32(a, b, 3);
10512}
10513
10514// CHECK: test_vst3q_lane_s16
10515// CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10516void test_vst3q_lane_s16(int16_t * a, int16x8x3_t b) {
10517  vst3q_lane_s16(a, b, 7);
10518}
10519
10520// CHECK: test_vst3q_lane_s32
10521// CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10522void test_vst3q_lane_s32(int32_t * a, int32x4x3_t b) {
10523  vst3q_lane_s32(a, b, 3);
10524}
10525
10526// CHECK: test_vst3q_lane_f16
10527// CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10528void test_vst3q_lane_f16(float16_t * a, float16x8x3_t b) {
10529  vst3q_lane_f16(a, b, 7);
10530}
10531
10532// CHECK: test_vst3q_lane_f32
10533// CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10534void test_vst3q_lane_f32(float32_t * a, float32x4x3_t b) {
10535  vst3q_lane_f32(a, b, 3);
10536}
10537
10538// CHECK: test_vst3q_lane_p16
10539// CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10540void test_vst3q_lane_p16(poly16_t * a, poly16x8x3_t b) {
10541  vst3q_lane_p16(a, b, 7);
10542}
10543
10544// CHECK: test_vst3_lane_u8
10545// CHECK: vst3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10546void test_vst3_lane_u8(uint8_t * a, uint8x8x3_t b) {
10547  vst3_lane_u8(a, b, 7);
10548}
10549
10550// CHECK: test_vst3_lane_u16
10551// CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10552void test_vst3_lane_u16(uint16_t * a, uint16x4x3_t b) {
10553  vst3_lane_u16(a, b, 3);
10554}
10555
10556// CHECK: test_vst3_lane_u32
10557// CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10558void test_vst3_lane_u32(uint32_t * a, uint32x2x3_t b) {
10559  vst3_lane_u32(a, b, 1);
10560}
10561
10562// CHECK: test_vst3_lane_s8
10563// CHECK: vst3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10564void test_vst3_lane_s8(int8_t * a, int8x8x3_t b) {
10565  vst3_lane_s8(a, b, 7);
10566}
10567
10568// CHECK: test_vst3_lane_s16
10569// CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10570void test_vst3_lane_s16(int16_t * a, int16x4x3_t b) {
10571  vst3_lane_s16(a, b, 3);
10572}
10573
10574// CHECK: test_vst3_lane_s32
10575// CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10576void test_vst3_lane_s32(int32_t * a, int32x2x3_t b) {
10577  vst3_lane_s32(a, b, 1);
10578}
10579
10580// CHECK: test_vst3_lane_f16
10581// CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10582void test_vst3_lane_f16(float16_t * a, float16x4x3_t b) {
10583  vst3_lane_f16(a, b, 3);
10584}
10585
10586// CHECK: test_vst3_lane_f32
10587// CHECK: vst3.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10588void test_vst3_lane_f32(float32_t * a, float32x2x3_t b) {
10589  vst3_lane_f32(a, b, 1);
10590}
10591
10592// CHECK: test_vst3_lane_p8
10593// CHECK: vst3.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10594void test_vst3_lane_p8(poly8_t * a, poly8x8x3_t b) {
10595  vst3_lane_p8(a, b, 7);
10596}
10597
10598// CHECK: test_vst3_lane_p16
10599// CHECK: vst3.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10600void test_vst3_lane_p16(poly16_t * a, poly16x4x3_t b) {
10601  vst3_lane_p16(a, b, 3);
10602}
10603
10604
10605// CHECK: test_vst4q_u8
10606// CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10607void test_vst4q_u8(uint8_t * a, uint8x16x4_t b) {
10608  vst4q_u8(a, b);
10609}
10610
10611// CHECK: test_vst4q_u16
10612// CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10613void test_vst4q_u16(uint16_t * a, uint16x8x4_t b) {
10614  vst4q_u16(a, b);
10615}
10616
10617// CHECK: test_vst4q_u32
10618// CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10619void test_vst4q_u32(uint32_t * a, uint32x4x4_t b) {
10620  vst4q_u32(a, b);
10621}
10622
10623// CHECK: test_vst4q_s8
10624// CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10625void test_vst4q_s8(int8_t * a, int8x16x4_t b) {
10626  vst4q_s8(a, b);
10627}
10628
10629// CHECK: test_vst4q_s16
10630// CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10631void test_vst4q_s16(int16_t * a, int16x8x4_t b) {
10632  vst4q_s16(a, b);
10633}
10634
10635// CHECK: test_vst4q_s32
10636// CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10637void test_vst4q_s32(int32_t * a, int32x4x4_t b) {
10638  vst4q_s32(a, b);
10639}
10640
10641// CHECK: test_vst4q_f16
10642// CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10643void test_vst4q_f16(float16_t * a, float16x8x4_t b) {
10644  vst4q_f16(a, b);
10645}
10646
10647// CHECK: test_vst4q_f32
10648// CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10649void test_vst4q_f32(float32_t * a, float32x4x4_t b) {
10650  vst4q_f32(a, b);
10651}
10652
10653// CHECK: test_vst4q_p8
10654// CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10655void test_vst4q_p8(poly8_t * a, poly8x16x4_t b) {
10656  vst4q_p8(a, b);
10657}
10658
10659// CHECK: test_vst4q_p16
10660// CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}
10661void test_vst4q_p16(poly16_t * a, poly16x8x4_t b) {
10662  vst4q_p16(a, b);
10663}
10664
10665// CHECK: test_vst4_u8
10666// CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10667void test_vst4_u8(uint8_t * a, uint8x8x4_t b) {
10668  vst4_u8(a, b);
10669}
10670
10671// CHECK: test_vst4_u16
10672// CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10673void test_vst4_u16(uint16_t * a, uint16x4x4_t b) {
10674  vst4_u16(a, b);
10675}
10676
10677// CHECK: test_vst4_u32
10678// CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10679void test_vst4_u32(uint32_t * a, uint32x2x4_t b) {
10680  vst4_u32(a, b);
10681}
10682
10683// CHECK: test_vst4_u64
10684// CHECK: vst1.64
10685void test_vst4_u64(uint64_t * a, uint64x1x4_t b) {
10686  vst4_u64(a, b);
10687}
10688
10689// CHECK: test_vst4_s8
10690// CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10691void test_vst4_s8(int8_t * a, int8x8x4_t b) {
10692  vst4_s8(a, b);
10693}
10694
10695// CHECK: test_vst4_s16
10696// CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10697void test_vst4_s16(int16_t * a, int16x4x4_t b) {
10698  vst4_s16(a, b);
10699}
10700
10701// CHECK: test_vst4_s32
10702// CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10703void test_vst4_s32(int32_t * a, int32x2x4_t b) {
10704  vst4_s32(a, b);
10705}
10706
10707// CHECK: test_vst4_s64
10708// CHECK: vst1.64
10709void test_vst4_s64(int64_t * a, int64x1x4_t b) {
10710  vst4_s64(a, b);
10711}
10712
10713// CHECK: test_vst4_f16
10714// CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10715void test_vst4_f16(float16_t * a, float16x4x4_t b) {
10716  vst4_f16(a, b);
10717}
10718
10719// CHECK: test_vst4_f32
10720// CHECK: vst4.32 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10721void test_vst4_f32(float32_t * a, float32x2x4_t b) {
10722  vst4_f32(a, b);
10723}
10724
10725// CHECK: test_vst4_p8
10726// CHECK: vst4.8 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10727void test_vst4_p8(poly8_t * a, poly8x8x4_t b) {
10728  vst4_p8(a, b);
10729}
10730
10731// CHECK: test_vst4_p16
10732// CHECK: vst4.16 {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, [r{{[0-9]+}}]
10733void test_vst4_p16(poly16_t * a, poly16x4x4_t b) {
10734  vst4_p16(a, b);
10735}
10736
10737
10738// CHECK: test_vst4q_lane_u16
10739// CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10740void test_vst4q_lane_u16(uint16_t * a, uint16x8x4_t b) {
10741  vst4q_lane_u16(a, b, 7);
10742}
10743
10744// CHECK: test_vst4q_lane_u32
10745// CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10746void test_vst4q_lane_u32(uint32_t * a, uint32x4x4_t b) {
10747  vst4q_lane_u32(a, b, 3);
10748}
10749
10750// CHECK: test_vst4q_lane_s16
10751// CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10752void test_vst4q_lane_s16(int16_t * a, int16x8x4_t b) {
10753  vst4q_lane_s16(a, b, 7);
10754}
10755
10756// CHECK: test_vst4q_lane_s32
10757// CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10758void test_vst4q_lane_s32(int32_t * a, int32x4x4_t b) {
10759  vst4q_lane_s32(a, b, 3);
10760}
10761
10762// CHECK: test_vst4q_lane_f16
10763// CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10764void test_vst4q_lane_f16(float16_t * a, float16x8x4_t b) {
10765  vst4q_lane_f16(a, b, 7);
10766}
10767
10768// CHECK: test_vst4q_lane_f32
10769// CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10770void test_vst4q_lane_f32(float32_t * a, float32x4x4_t b) {
10771  vst4q_lane_f32(a, b, 3);
10772}
10773
10774// CHECK: test_vst4q_lane_p16
10775// CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}
10776void test_vst4q_lane_p16(poly16_t * a, poly16x8x4_t b) {
10777  vst4q_lane_p16(a, b, 7);
10778}
10779
10780// CHECK: test_vst4_lane_u8
10781// CHECK: vst4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10782void test_vst4_lane_u8(uint8_t * a, uint8x8x4_t b) {
10783  vst4_lane_u8(a, b, 7);
10784}
10785
10786// CHECK: test_vst4_lane_u16
10787// CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10788void test_vst4_lane_u16(uint16_t * a, uint16x4x4_t b) {
10789  vst4_lane_u16(a, b, 3);
10790}
10791
10792// CHECK: test_vst4_lane_u32
10793// CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10794void test_vst4_lane_u32(uint32_t * a, uint32x2x4_t b) {
10795  vst4_lane_u32(a, b, 1);
10796}
10797
10798// CHECK: test_vst4_lane_s8
10799// CHECK: vst4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10800void test_vst4_lane_s8(int8_t * a, int8x8x4_t b) {
10801  vst4_lane_s8(a, b, 7);
10802}
10803
10804// CHECK: test_vst4_lane_s16
10805// CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10806void test_vst4_lane_s16(int16_t * a, int16x4x4_t b) {
10807  vst4_lane_s16(a, b, 3);
10808}
10809
10810// CHECK: test_vst4_lane_s32
10811// CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10812void test_vst4_lane_s32(int32_t * a, int32x2x4_t b) {
10813  vst4_lane_s32(a, b, 1);
10814}
10815
10816// CHECK: test_vst4_lane_f16
10817// CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10818void test_vst4_lane_f16(float16_t * a, float16x4x4_t b) {
10819  vst4_lane_f16(a, b, 3);
10820}
10821
10822// CHECK: test_vst4_lane_f32
10823// CHECK: vst4.32 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10824void test_vst4_lane_f32(float32_t * a, float32x2x4_t b) {
10825  vst4_lane_f32(a, b, 1);
10826}
10827
10828// CHECK: test_vst4_lane_p8
10829// CHECK: vst4.8 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10830void test_vst4_lane_p8(poly8_t * a, poly8x8x4_t b) {
10831  vst4_lane_p8(a, b, 7);
10832}
10833
10834// CHECK: test_vst4_lane_p16
10835// CHECK: vst4.16 {d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}], d{{[0-9]+}}[{{[0-9]+}}]}, [r{{[0-9]+}}]
10836void test_vst4_lane_p16(poly16_t * a, poly16x4x4_t b) {
10837  vst4_lane_p16(a, b, 3);
10838}
10839
10840
10841// CHECK: test_vsub_s8
10842// CHECK: vsub.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10843int8x8_t test_vsub_s8(int8x8_t a, int8x8_t b) {
10844  return vsub_s8(a, b);
10845}
10846
10847// CHECK: test_vsub_s16
10848// CHECK: vsub.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10849int16x4_t test_vsub_s16(int16x4_t a, int16x4_t b) {
10850  return vsub_s16(a, b);
10851}
10852
10853// CHECK: test_vsub_s32
10854// CHECK: vsub.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10855int32x2_t test_vsub_s32(int32x2_t a, int32x2_t b) {
10856  return vsub_s32(a, b);
10857}
10858
10859// CHECK: test_vsub_s64
10860// CHECK: vsub.i64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10861int64x1_t test_vsub_s64(int64x1_t a, int64x1_t b) {
10862  return vsub_s64(a, b);
10863}
10864
10865// CHECK: test_vsub_f32
10866// CHECK: vsub.f32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10867float32x2_t test_vsub_f32(float32x2_t a, float32x2_t b) {
10868  return vsub_f32(a, b);
10869}
10870
10871// CHECK: test_vsub_u8
10872// CHECK: vsub.i8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10873uint8x8_t test_vsub_u8(uint8x8_t a, uint8x8_t b) {
10874  return vsub_u8(a, b);
10875}
10876
10877// CHECK: test_vsub_u16
10878// CHECK: vsub.i16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10879uint16x4_t test_vsub_u16(uint16x4_t a, uint16x4_t b) {
10880  return vsub_u16(a, b);
10881}
10882
10883// CHECK: test_vsub_u32
10884// CHECK: vsub.i32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10885uint32x2_t test_vsub_u32(uint32x2_t a, uint32x2_t b) {
10886  return vsub_u32(a, b);
10887}
10888
10889// CHECK: test_vsub_u64
10890// CHECK: vsub.i64 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10891uint64x1_t test_vsub_u64(uint64x1_t a, uint64x1_t b) {
10892  return vsub_u64(a, b);
10893}
10894
10895// CHECK: test_vsubq_s8
10896// CHECK: vsub.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10897int8x16_t test_vsubq_s8(int8x16_t a, int8x16_t b) {
10898  return vsubq_s8(a, b);
10899}
10900
10901// CHECK: test_vsubq_s16
10902// CHECK: vsub.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10903int16x8_t test_vsubq_s16(int16x8_t a, int16x8_t b) {
10904  return vsubq_s16(a, b);
10905}
10906
10907// CHECK: test_vsubq_s32
10908// CHECK: vsub.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10909int32x4_t test_vsubq_s32(int32x4_t a, int32x4_t b) {
10910  return vsubq_s32(a, b);
10911}
10912
10913// CHECK: test_vsubq_s64
10914// CHECK: vsub.i64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10915int64x2_t test_vsubq_s64(int64x2_t a, int64x2_t b) {
10916  return vsubq_s64(a, b);
10917}
10918
10919// CHECK: test_vsubq_f32
10920// CHECK: vsub.f32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10921float32x4_t test_vsubq_f32(float32x4_t a, float32x4_t b) {
10922  return vsubq_f32(a, b);
10923}
10924
10925// CHECK: test_vsubq_u8
10926// CHECK: vsub.i8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10927uint8x16_t test_vsubq_u8(uint8x16_t a, uint8x16_t b) {
10928  return vsubq_u8(a, b);
10929}
10930
10931// CHECK: test_vsubq_u16
10932// CHECK: vsub.i16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10933uint16x8_t test_vsubq_u16(uint16x8_t a, uint16x8_t b) {
10934  return vsubq_u16(a, b);
10935}
10936
10937// CHECK: test_vsubq_u32
10938// CHECK: vsub.i32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10939uint32x4_t test_vsubq_u32(uint32x4_t a, uint32x4_t b) {
10940  return vsubq_u32(a, b);
10941}
10942
10943// CHECK: test_vsubq_u64
10944// CHECK: vsub.i64 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10945uint64x2_t test_vsubq_u64(uint64x2_t a, uint64x2_t b) {
10946  return vsubq_u64(a, b);
10947}
10948
10949
10950// CHECK: test_vsubhn_s16
10951// CHECK: vsubhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10952int8x8_t test_vsubhn_s16(int16x8_t a, int16x8_t b) {
10953  return vsubhn_s16(a, b);
10954}
10955
10956// CHECK: test_vsubhn_s32
10957// CHECK: vsubhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10958int16x4_t test_vsubhn_s32(int32x4_t a, int32x4_t b) {
10959  return vsubhn_s32(a, b);
10960}
10961
10962// CHECK: test_vsubhn_s64
10963// CHECK: vsubhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10964int32x2_t test_vsubhn_s64(int64x2_t a, int64x2_t b) {
10965  return vsubhn_s64(a, b);
10966}
10967
10968// CHECK: test_vsubhn_u16
10969// CHECK: vsubhn.i16 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10970uint8x8_t test_vsubhn_u16(uint16x8_t a, uint16x8_t b) {
10971  return vsubhn_u16(a, b);
10972}
10973
10974// CHECK: test_vsubhn_u32
10975// CHECK: vsubhn.i32 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10976uint16x4_t test_vsubhn_u32(uint32x4_t a, uint32x4_t b) {
10977  return vsubhn_u32(a, b);
10978}
10979
10980// CHECK: test_vsubhn_u64
10981// CHECK: vsubhn.i64 d{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
10982uint32x2_t test_vsubhn_u64(uint64x2_t a, uint64x2_t b) {
10983  return vsubhn_u64(a, b);
10984}
10985
10986
10987// CHECK: test_vsubl_s8
10988// CHECK: vsubl.s8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10989int16x8_t test_vsubl_s8(int8x8_t a, int8x8_t b) {
10990  return vsubl_s8(a, b);
10991}
10992
10993// CHECK: test_vsubl_s16
10994// CHECK: vsubl.s16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
10995int32x4_t test_vsubl_s16(int16x4_t a, int16x4_t b) {
10996  return vsubl_s16(a, b);
10997}
10998
10999// CHECK: test_vsubl_s32
11000// CHECK: vsubl.s32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11001int64x2_t test_vsubl_s32(int32x2_t a, int32x2_t b) {
11002  return vsubl_s32(a, b);
11003}
11004
11005// CHECK: test_vsubl_u8
11006// CHECK: vsubl.u8 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11007uint16x8_t test_vsubl_u8(uint8x8_t a, uint8x8_t b) {
11008  return vsubl_u8(a, b);
11009}
11010
11011// CHECK: test_vsubl_u16
11012// CHECK: vsubl.u16 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11013uint32x4_t test_vsubl_u16(uint16x4_t a, uint16x4_t b) {
11014  return vsubl_u16(a, b);
11015}
11016
11017// CHECK: test_vsubl_u32
11018// CHECK: vsubl.u32 q{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11019uint64x2_t test_vsubl_u32(uint32x2_t a, uint32x2_t b) {
11020  return vsubl_u32(a, b);
11021}
11022
11023
11024// CHECK: test_vsubw_s8
11025// CHECK: vsubw.s8 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
11026int16x8_t test_vsubw_s8(int16x8_t a, int8x8_t b) {
11027  return vsubw_s8(a, b);
11028}
11029
11030// CHECK: test_vsubw_s16
11031// CHECK: vsubw.s16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
11032int32x4_t test_vsubw_s16(int32x4_t a, int16x4_t b) {
11033  return vsubw_s16(a, b);
11034}
11035
11036// CHECK: test_vsubw_s32
11037// CHECK: vsubw.s32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
11038int64x2_t test_vsubw_s32(int64x2_t a, int32x2_t b) {
11039  return vsubw_s32(a, b);
11040}
11041
11042// CHECK: test_vsubw_u8
11043// CHECK: vsubw.u8 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
11044uint16x8_t test_vsubw_u8(uint16x8_t a, uint8x8_t b) {
11045  return vsubw_u8(a, b);
11046}
11047
11048// CHECK: test_vsubw_u16
11049// CHECK: vsubw.u16 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
11050uint32x4_t test_vsubw_u16(uint32x4_t a, uint16x4_t b) {
11051  return vsubw_u16(a, b);
11052}
11053
11054// CHECK: test_vsubw_u32
11055// CHECK: vsubw.u32 q{{[0-9]+}}, q{{[0-9]+}}, d{{[0-9]+}}
11056uint64x2_t test_vsubw_u32(uint64x2_t a, uint32x2_t b) {
11057  return vsubw_u32(a, b);
11058}
11059
11060
11061// CHECK: test_vtbl1_u8
11062// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
11063uint8x8_t test_vtbl1_u8(uint8x8_t a, uint8x8_t b) {
11064  return vtbl1_u8(a, b);
11065}
11066
11067// CHECK: test_vtbl1_s8
11068// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
11069int8x8_t test_vtbl1_s8(int8x8_t a, int8x8_t b) {
11070  return vtbl1_s8(a, b);
11071}
11072
11073// CHECK: test_vtbl1_p8
11074// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
11075poly8x8_t test_vtbl1_p8(poly8x8_t a, uint8x8_t b) {
11076  return vtbl1_p8(a, b);
11077}
11078
11079
11080// CHECK: test_vtbl2_u8
11081// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11082uint8x8_t test_vtbl2_u8(uint8x8x2_t a, uint8x8_t b) {
11083  return vtbl2_u8(a, b);
11084}
11085
11086// CHECK: test_vtbl2_s8
11087// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11088int8x8_t test_vtbl2_s8(int8x8x2_t a, int8x8_t b) {
11089  return vtbl2_s8(a, b);
11090}
11091
11092// CHECK: test_vtbl2_p8
11093// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11094poly8x8_t test_vtbl2_p8(poly8x8x2_t a, uint8x8_t b) {
11095  return vtbl2_p8(a, b);
11096}
11097
11098
11099// CHECK: test_vtbl3_u8
11100// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11101uint8x8_t test_vtbl3_u8(uint8x8x3_t a, uint8x8_t b) {
11102  return vtbl3_u8(a, b);
11103}
11104
11105// CHECK: test_vtbl3_s8
11106// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11107int8x8_t test_vtbl3_s8(int8x8x3_t a, int8x8_t b) {
11108  return vtbl3_s8(a, b);
11109}
11110
11111// CHECK: test_vtbl3_p8
11112// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11113poly8x8_t test_vtbl3_p8(poly8x8x3_t a, uint8x8_t b) {
11114  return vtbl3_p8(a, b);
11115}
11116
11117
11118// CHECK: test_vtbl4_u8
11119// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11120uint8x8_t test_vtbl4_u8(uint8x8x4_t a, uint8x8_t b) {
11121  return vtbl4_u8(a, b);
11122}
11123
11124// CHECK: test_vtbl4_s8
11125// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11126int8x8_t test_vtbl4_s8(int8x8x4_t a, int8x8_t b) {
11127  return vtbl4_s8(a, b);
11128}
11129
11130// CHECK: test_vtbl4_p8
11131// CHECK: vtbl.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11132poly8x8_t test_vtbl4_p8(poly8x8x4_t a, uint8x8_t b) {
11133  return vtbl4_p8(a, b);
11134}
11135
11136
11137// CHECK: test_vtbx1_u8
11138// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
11139uint8x8_t test_vtbx1_u8(uint8x8_t a, uint8x8_t b, uint8x8_t c) {
11140  return vtbx1_u8(a, b, c);
11141}
11142
11143// CHECK: test_vtbx1_s8
11144// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
11145int8x8_t test_vtbx1_s8(int8x8_t a, int8x8_t b, int8x8_t c) {
11146  return vtbx1_s8(a, b, c);
11147}
11148
11149// CHECK: test_vtbx1_p8
11150// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}}, d{{[0-9]+}}
11151poly8x8_t test_vtbx1_p8(poly8x8_t a, poly8x8_t b, uint8x8_t c) {
11152  return vtbx1_p8(a, b, c);
11153}
11154
11155
11156// CHECK: test_vtbx2_u8
11157// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11158uint8x8_t test_vtbx2_u8(uint8x8_t a, uint8x8x2_t b, uint8x8_t c) {
11159  return vtbx2_u8(a, b, c);
11160}
11161
11162// CHECK: test_vtbx2_s8
11163// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11164int8x8_t test_vtbx2_s8(int8x8_t a, int8x8x2_t b, int8x8_t c) {
11165  return vtbx2_s8(a, b, c);
11166}
11167
11168// CHECK: test_vtbx2_p8
11169// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11170poly8x8_t test_vtbx2_p8(poly8x8_t a, poly8x8x2_t b, uint8x8_t c) {
11171  return vtbx2_p8(a, b, c);
11172}
11173
11174
11175// CHECK: test_vtbx3_u8
11176// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11177uint8x8_t test_vtbx3_u8(uint8x8_t a, uint8x8x3_t b, uint8x8_t c) {
11178  return vtbx3_u8(a, b, c);
11179}
11180
11181// CHECK: test_vtbx3_s8
11182// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11183int8x8_t test_vtbx3_s8(int8x8_t a, int8x8x3_t b, int8x8_t c) {
11184  return vtbx3_s8(a, b, c);
11185}
11186
11187// CHECK: test_vtbx3_p8
11188// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11189poly8x8_t test_vtbx3_p8(poly8x8_t a, poly8x8x3_t b, uint8x8_t c) {
11190  return vtbx3_p8(a, b, c);
11191}
11192
11193
11194// CHECK: test_vtbx4_u8
11195// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11196uint8x8_t test_vtbx4_u8(uint8x8_t a, uint8x8x4_t b, uint8x8_t c) {
11197  return vtbx4_u8(a, b, c);
11198}
11199
11200// CHECK: test_vtbx4_s8
11201// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11202int8x8_t test_vtbx4_s8(int8x8_t a, int8x8x4_t b, int8x8_t c) {
11203  return vtbx4_s8(a, b, c);
11204}
11205
11206// CHECK: test_vtbx4_p8
11207// CHECK: vtbx.8 d{{[0-9]+}}, {d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}}, d{{[0-9]+}}
11208poly8x8_t test_vtbx4_p8(poly8x8_t a, poly8x8x4_t b, uint8x8_t c) {
11209  return vtbx4_p8(a, b, c);
11210}
11211
11212
11213// CHECK: test_vtrn_s8
11214// CHECK: vtrn.8 d{{[0-9]+}}, d{{[0-9]+}}
11215int8x8x2_t test_vtrn_s8(int8x8_t a, int8x8_t b) {
11216  return vtrn_s8(a, b);
11217}
11218
11219// CHECK: test_vtrn_s16
11220// CHECK: vtrn.16 d{{[0-9]+}}, d{{[0-9]+}}
11221int16x4x2_t test_vtrn_s16(int16x4_t a, int16x4_t b) {
11222  return vtrn_s16(a, b);
11223}
11224
11225// CHECK: test_vtrn_s32
11226// CHECK: vtrn.32 d{{[0-9]+}}, d{{[0-9]+}}
11227int32x2x2_t test_vtrn_s32(int32x2_t a, int32x2_t b) {
11228  return vtrn_s32(a, b);
11229}
11230
11231// CHECK: test_vtrn_u8
11232// CHECK: vtrn.8 d{{[0-9]+}}, d{{[0-9]+}}
11233uint8x8x2_t test_vtrn_u8(uint8x8_t a, uint8x8_t b) {
11234  return vtrn_u8(a, b);
11235}
11236
11237// CHECK: test_vtrn_u16
11238// CHECK: vtrn.16 d{{[0-9]+}}, d{{[0-9]+}}
11239uint16x4x2_t test_vtrn_u16(uint16x4_t a, uint16x4_t b) {
11240  return vtrn_u16(a, b);
11241}
11242
11243// CHECK: test_vtrn_u32
11244// CHECK: vtrn.32 d{{[0-9]+}}, d{{[0-9]+}}
11245uint32x2x2_t test_vtrn_u32(uint32x2_t a, uint32x2_t b) {
11246  return vtrn_u32(a, b);
11247}
11248
11249// CHECK: test_vtrn_f32
11250// CHECK: vtrn.32 d{{[0-9]+}}, d{{[0-9]+}}
11251float32x2x2_t test_vtrn_f32(float32x2_t a, float32x2_t b) {
11252  return vtrn_f32(a, b);
11253}
11254
11255// CHECK: test_vtrn_p8
11256// CHECK: vtrn.8 d{{[0-9]+}}, d{{[0-9]+}}
11257poly8x8x2_t test_vtrn_p8(poly8x8_t a, poly8x8_t b) {
11258  return vtrn_p8(a, b);
11259}
11260
11261// CHECK: test_vtrn_p16
11262// CHECK: vtrn.16 d{{[0-9]+}}, d{{[0-9]+}}
11263poly16x4x2_t test_vtrn_p16(poly16x4_t a, poly16x4_t b) {
11264  return vtrn_p16(a, b);
11265}
11266
11267// CHECK: test_vtrnq_s8
11268// CHECK: vtrn.8 q{{[0-9]+}}, q{{[0-9]+}}
11269int8x16x2_t test_vtrnq_s8(int8x16_t a, int8x16_t b) {
11270  return vtrnq_s8(a, b);
11271}
11272
11273// CHECK: test_vtrnq_s16
11274// CHECK: vtrn.16 q{{[0-9]+}}, q{{[0-9]+}}
11275int16x8x2_t test_vtrnq_s16(int16x8_t a, int16x8_t b) {
11276  return vtrnq_s16(a, b);
11277}
11278
11279// CHECK: test_vtrnq_s32
11280// CHECK: vtrn.32 q{{[0-9]+}}, q{{[0-9]+}}
11281int32x4x2_t test_vtrnq_s32(int32x4_t a, int32x4_t b) {
11282  return vtrnq_s32(a, b);
11283}
11284
11285// CHECK: test_vtrnq_u8
11286// CHECK: vtrn.8 q{{[0-9]+}}, q{{[0-9]+}}
11287uint8x16x2_t test_vtrnq_u8(uint8x16_t a, uint8x16_t b) {
11288  return vtrnq_u8(a, b);
11289}
11290
11291// CHECK: test_vtrnq_u16
11292// CHECK: vtrn.16 q{{[0-9]+}}, q{{[0-9]+}}
11293uint16x8x2_t test_vtrnq_u16(uint16x8_t a, uint16x8_t b) {
11294  return vtrnq_u16(a, b);
11295}
11296
11297// CHECK: test_vtrnq_u32
11298// CHECK: vtrn.32 q{{[0-9]+}}, q{{[0-9]+}}
11299uint32x4x2_t test_vtrnq_u32(uint32x4_t a, uint32x4_t b) {
11300  return vtrnq_u32(a, b);
11301}
11302
11303// CHECK: test_vtrnq_f32
11304// CHECK: vtrn.32 q{{[0-9]+}}, q{{[0-9]+}}
11305float32x4x2_t test_vtrnq_f32(float32x4_t a, float32x4_t b) {
11306  return vtrnq_f32(a, b);
11307}
11308
11309// CHECK: test_vtrnq_p8
11310// CHECK: vtrn.8 q{{[0-9]+}}, q{{[0-9]+}}
11311poly8x16x2_t test_vtrnq_p8(poly8x16_t a, poly8x16_t b) {
11312  return vtrnq_p8(a, b);
11313}
11314
11315// CHECK: test_vtrnq_p16
11316// CHECK: vtrn.16 q{{[0-9]+}}, q{{[0-9]+}}
11317poly16x8x2_t test_vtrnq_p16(poly16x8_t a, poly16x8_t b) {
11318  return vtrnq_p16(a, b);
11319}
11320
11321
11322// CHECK: test_vtst_s8
11323// CHECK: vtst.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11324uint8x8_t test_vtst_s8(int8x8_t a, int8x8_t b) {
11325  return vtst_s8(a, b);
11326}
11327
11328// CHECK: test_vtst_s16
11329// CHECK: vtst.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11330uint16x4_t test_vtst_s16(int16x4_t a, int16x4_t b) {
11331  return vtst_s16(a, b);
11332}
11333
11334// CHECK: test_vtst_s32
11335// CHECK: vtst.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11336uint32x2_t test_vtst_s32(int32x2_t a, int32x2_t b) {
11337  return vtst_s32(a, b);
11338}
11339
11340// CHECK: test_vtst_u8
11341// CHECK: vtst.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11342uint8x8_t test_vtst_u8(uint8x8_t a, uint8x8_t b) {
11343  return vtst_u8(a, b);
11344}
11345
11346// CHECK: test_vtst_u16
11347// CHECK: vtst.16 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11348uint16x4_t test_vtst_u16(uint16x4_t a, uint16x4_t b) {
11349  return vtst_u16(a, b);
11350}
11351
11352// CHECK: test_vtst_u32
11353// CHECK: vtst.32 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11354uint32x2_t test_vtst_u32(uint32x2_t a, uint32x2_t b) {
11355  return vtst_u32(a, b);
11356}
11357
11358// CHECK: test_vtst_p8
11359// CHECK: vtst.8 d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11360uint8x8_t test_vtst_p8(poly8x8_t a, poly8x8_t b) {
11361  return vtst_p8(a, b);
11362}
11363
11364// CHECK: test_vtstq_s8
11365// CHECK: vtst.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
11366uint8x16_t test_vtstq_s8(int8x16_t a, int8x16_t b) {
11367  return vtstq_s8(a, b);
11368}
11369
11370// CHECK: test_vtstq_s16
11371// CHECK: vtst.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
11372uint16x8_t test_vtstq_s16(int16x8_t a, int16x8_t b) {
11373  return vtstq_s16(a, b);
11374}
11375
11376// CHECK: test_vtstq_s32
11377// CHECK: vtst.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
11378uint32x4_t test_vtstq_s32(int32x4_t a, int32x4_t b) {
11379  return vtstq_s32(a, b);
11380}
11381
11382// CHECK: test_vtstq_u8
11383// CHECK: vtst.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
11384uint8x16_t test_vtstq_u8(uint8x16_t a, uint8x16_t b) {
11385  return vtstq_u8(a, b);
11386}
11387
11388// CHECK: test_vtstq_u16
11389// CHECK: vtst.16 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
11390uint16x8_t test_vtstq_u16(uint16x8_t a, uint16x8_t b) {
11391  return vtstq_u16(a, b);
11392}
11393
11394// CHECK: test_vtstq_u32
11395// CHECK: vtst.32 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
11396uint32x4_t test_vtstq_u32(uint32x4_t a, uint32x4_t b) {
11397  return vtstq_u32(a, b);
11398}
11399
11400// CHECK: test_vtstq_p8
11401// CHECK: vtst.8 q{{[0-9]+}}, q{{[0-9]+}}, q{{[0-9]+}}
11402uint8x16_t test_vtstq_p8(poly8x16_t a, poly8x16_t b) {
11403  return vtstq_p8(a, b);
11404}
11405
11406
11407// CHECK: test_vuzp_s8
11408// CHECK: vuzp.8 d{{[0-9]+}}, d{{[0-9]+}}
11409int8x8x2_t test_vuzp_s8(int8x8_t a, int8x8_t b) {
11410  return vuzp_s8(a, b);
11411}
11412
11413// CHECK: test_vuzp_s16
11414// CHECK: vuzp.16 d{{[0-9]+}}, d{{[0-9]+}}
11415int16x4x2_t test_vuzp_s16(int16x4_t a, int16x4_t b) {
11416  return vuzp_s16(a, b);
11417}
11418
11419// CHECK: test_vuzp_s32
11420// CHECK: {{vtrn|vuzp}}.32 d{{[0-9]+}}, d{{[0-9]+}}
11421int32x2x2_t test_vuzp_s32(int32x2_t a, int32x2_t b) {
11422  return vuzp_s32(a, b);
11423}
11424
11425// CHECK: test_vuzp_u8
11426// CHECK: vuzp.8 d{{[0-9]+}}, d{{[0-9]+}}
11427uint8x8x2_t test_vuzp_u8(uint8x8_t a, uint8x8_t b) {
11428  return vuzp_u8(a, b);
11429}
11430
11431// CHECK: test_vuzp_u16
11432// CHECK: vuzp.16 d{{[0-9]+}}, d{{[0-9]+}}
11433uint16x4x2_t test_vuzp_u16(uint16x4_t a, uint16x4_t b) {
11434  return vuzp_u16(a, b);
11435}
11436
11437// CHECK: test_vuzp_u32
11438// CHECK: {{vtrn|vuzp}}.32 d{{[0-9]+}}, d{{[0-9]+}}
11439uint32x2x2_t test_vuzp_u32(uint32x2_t a, uint32x2_t b) {
11440  return vuzp_u32(a, b);
11441}
11442
11443// CHECK: test_vuzp_f32
11444// CHECK: {{vtrn|vuzp}}.32 d{{[0-9]+}}, d{{[0-9]+}}
11445float32x2x2_t test_vuzp_f32(float32x2_t a, float32x2_t b) {
11446  return vuzp_f32(a, b);
11447}
11448
11449// CHECK: test_vuzp_p8
11450// CHECK: vuzp.8 d{{[0-9]+}}, d{{[0-9]+}}
11451poly8x8x2_t test_vuzp_p8(poly8x8_t a, poly8x8_t b) {
11452  return vuzp_p8(a, b);
11453}
11454
11455// CHECK: test_vuzp_p16
11456// CHECK: vuzp.16 d{{[0-9]+}}, d{{[0-9]+}}
11457poly16x4x2_t test_vuzp_p16(poly16x4_t a, poly16x4_t b) {
11458  return vuzp_p16(a, b);
11459}
11460
11461// CHECK: test_vuzpq_s8
11462// CHECK: vuzp.8 q{{[0-9]+}}, q{{[0-9]+}}
11463int8x16x2_t test_vuzpq_s8(int8x16_t a, int8x16_t b) {
11464  return vuzpq_s8(a, b);
11465}
11466
11467// CHECK: test_vuzpq_s16
11468// CHECK: vuzp.16 q{{[0-9]+}}, q{{[0-9]+}}
11469int16x8x2_t test_vuzpq_s16(int16x8_t a, int16x8_t b) {
11470  return vuzpq_s16(a, b);
11471}
11472
11473// CHECK: test_vuzpq_s32
11474// CHECK: {{vtrn|vuzp}}.32 q{{[0-9]+}}, q{{[0-9]+}}
11475int32x4x2_t test_vuzpq_s32(int32x4_t a, int32x4_t b) {
11476  return vuzpq_s32(a, b);
11477}
11478
11479// CHECK: test_vuzpq_u8
11480// CHECK: vuzp.8 q{{[0-9]+}}, q{{[0-9]+}}
11481uint8x16x2_t test_vuzpq_u8(uint8x16_t a, uint8x16_t b) {
11482  return vuzpq_u8(a, b);
11483}
11484
11485// CHECK: test_vuzpq_u16
11486// CHECK: vuzp.16 q{{[0-9]+}}, q{{[0-9]+}}
11487uint16x8x2_t test_vuzpq_u16(uint16x8_t a, uint16x8_t b) {
11488  return vuzpq_u16(a, b);
11489}
11490
11491// CHECK: test_vuzpq_u32
11492// CHECK: {{vtrn|vuzp}}.32 q{{[0-9]+}}, q{{[0-9]+}}
11493uint32x4x2_t test_vuzpq_u32(uint32x4_t a, uint32x4_t b) {
11494  return vuzpq_u32(a, b);
11495}
11496
11497// CHECK: test_vuzpq_f32
11498// CHECK: {{vtrn|vuzp}}.32 q{{[0-9]+}}, q{{[0-9]+}}
11499float32x4x2_t test_vuzpq_f32(float32x4_t a, float32x4_t b) {
11500  return vuzpq_f32(a, b);
11501}
11502
11503// CHECK: test_vuzpq_p8
11504// CHECK: vuzp.8 q{{[0-9]+}}, q{{[0-9]+}}
11505poly8x16x2_t test_vuzpq_p8(poly8x16_t a, poly8x16_t b) {
11506  return vuzpq_p8(a, b);
11507}
11508
11509// CHECK: test_vuzpq_p16
11510// CHECK: vuzp.16 q{{[0-9]+}}, q{{[0-9]+}}
11511poly16x8x2_t test_vuzpq_p16(poly16x8_t a, poly16x8_t b) {
11512  return vuzpq_p16(a, b);
11513}
11514
11515
11516// CHECK: test_vzip_s8
11517// CHECK: vzip.8 d{{[0-9]+}}, d{{[0-9]+}}
11518int8x8x2_t test_vzip_s8(int8x8_t a, int8x8_t b) {
11519  return vzip_s8(a, b);
11520}
11521
11522// CHECK: test_vzip_s16
11523// CHECK: vzip.16 d{{[0-9]+}}, d{{[0-9]+}}
11524int16x4x2_t test_vzip_s16(int16x4_t a, int16x4_t b) {
11525  return vzip_s16(a, b);
11526}
11527
11528// CHECK: test_vzip_s32
11529// CHECK: {{vtrn|vzip}}.32 d{{[0-9]+}}, d{{[0-9]+}}
11530int32x2x2_t test_vzip_s32(int32x2_t a, int32x2_t b) {
11531  return vzip_s32(a, b);
11532}
11533
11534// CHECK: test_vzip_u8
11535// CHECK: vzip.8 d{{[0-9]+}}, d{{[0-9]+}}
11536uint8x8x2_t test_vzip_u8(uint8x8_t a, uint8x8_t b) {
11537  return vzip_u8(a, b);
11538}
11539
11540// CHECK: test_vzip_u16
11541// CHECK: vzip.16 d{{[0-9]+}}, d{{[0-9]+}}
11542uint16x4x2_t test_vzip_u16(uint16x4_t a, uint16x4_t b) {
11543  return vzip_u16(a, b);
11544}
11545
11546// CHECK: test_vzip_u32
11547// CHECK: {{vtrn|vzip}}.32 d{{[0-9]+}}, d{{[0-9]+}}
11548uint32x2x2_t test_vzip_u32(uint32x2_t a, uint32x2_t b) {
11549  return vzip_u32(a, b);
11550}
11551
11552// CHECK: test_vzip_f32
11553// CHECK: {{vtrn|vzip}}.32 d{{[0-9]+}}, d{{[0-9]+}}
11554float32x2x2_t test_vzip_f32(float32x2_t a, float32x2_t b) {
11555  return vzip_f32(a, b);
11556}
11557
11558// CHECK: test_vzip_p8
11559// CHECK: vzip.8 d{{[0-9]+}}, d{{[0-9]+}}
11560poly8x8x2_t test_vzip_p8(poly8x8_t a, poly8x8_t b) {
11561  return vzip_p8(a, b);
11562}
11563
11564// CHECK: test_vzip_p16
11565// CHECK: vzip.16 d{{[0-9]+}}, d{{[0-9]+}}
11566poly16x4x2_t test_vzip_p16(poly16x4_t a, poly16x4_t b) {
11567  return vzip_p16(a, b);
11568}
11569
11570// CHECK: test_vzipq_s8
11571// CHECK: vzip.8 q{{[0-9]+}}, q{{[0-9]+}}
11572int8x16x2_t test_vzipq_s8(int8x16_t a, int8x16_t b) {
11573  return vzipq_s8(a, b);
11574}
11575
11576// CHECK: test_vzipq_s16
11577// CHECK: vzip.16 q{{[0-9]+}}, q{{[0-9]+}}
11578int16x8x2_t test_vzipq_s16(int16x8_t a, int16x8_t b) {
11579  return vzipq_s16(a, b);
11580}
11581
11582// CHECK: test_vzipq_s32
11583// CHECK: {{vtrn|vzip}}.32 q{{[0-9]+}}, q{{[0-9]+}}
11584int32x4x2_t test_vzipq_s32(int32x4_t a, int32x4_t b) {
11585  return vzipq_s32(a, b);
11586}
11587
11588// CHECK: test_vzipq_u8
11589// CHECK: vzip.8 q{{[0-9]+}}, q{{[0-9]+}}
11590uint8x16x2_t test_vzipq_u8(uint8x16_t a, uint8x16_t b) {
11591  return vzipq_u8(a, b);
11592}
11593
11594// CHECK: test_vzipq_u16
11595// CHECK: vzip.16 q{{[0-9]+}}, q{{[0-9]+}}
11596uint16x8x2_t test_vzipq_u16(uint16x8_t a, uint16x8_t b) {
11597  return vzipq_u16(a, b);
11598}
11599
11600// CHECK: test_vzipq_u32
11601// CHECK: {{vtrn|vzip}}.32 q{{[0-9]+}}, q{{[0-9]+}}
11602uint32x4x2_t test_vzipq_u32(uint32x4_t a, uint32x4_t b) {
11603  return vzipq_u32(a, b);
11604}
11605
11606// CHECK: test_vzipq_f32
11607// CHECK: {{vtrn|vzip}}.32 q{{[0-9]+}}, q{{[0-9]+}}
11608float32x4x2_t test_vzipq_f32(float32x4_t a, float32x4_t b) {
11609  return vzipq_f32(a, b);
11610}
11611
11612// CHECK: test_vzipq_p8
11613// CHECK: vzip.8 q{{[0-9]+}}, q{{[0-9]+}}
11614poly8x16x2_t test_vzipq_p8(poly8x16_t a, poly8x16_t b) {
11615  return vzipq_p8(a, b);
11616}
11617
11618// CHECK: test_vzipq_p16
11619// CHECK: vzip.16 q{{[0-9]+}}, q{{[0-9]+}}
11620poly16x8x2_t test_vzipq_p16(poly16x8_t a, poly16x8_t b) {
11621  return vzipq_p16(a, b);
11622}
11623
11624
11625