1// REQUIRES: aarch64-registered-target
2// RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
3// RUN:   -ffp-contract=fast -S -O3 -o - %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-ARM64
4
5// Test new aarch64 intrinsics and types
6
7#include <arm_neon.h>
8
9int8x8_t test_vadd_s8(int8x8_t v1, int8x8_t v2) {
10   // CHECK-LABEL: test_vadd_s8
11  return vadd_s8(v1, v2);
12  // CHECK: add {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
13}
14
15int16x4_t test_vadd_s16(int16x4_t v1, int16x4_t v2) {
16   // CHECK-LABEL: test_vadd_s16
17  return vadd_s16(v1, v2);
18  // CHECK: add {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
19}
20
21int32x2_t test_vadd_s32(int32x2_t v1, int32x2_t v2) {
22   // CHECK-LABEL: test_vadd_s32
23  return vadd_s32(v1, v2);
24  // CHECK: add {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
25}
26
27int64x1_t test_vadd_s64(int64x1_t v1, int64x1_t v2) {
28  // CHECK-LABEL: test_vadd_s64
29  return vadd_s64(v1, v2);
30  // CHECK: add {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
31}
32
33float32x2_t test_vadd_f32(float32x2_t v1, float32x2_t v2) {
34   // CHECK-LABEL: test_vadd_f32
35  return vadd_f32(v1, v2);
36  // CHECK: fadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
37}
38
39uint8x8_t test_vadd_u8(uint8x8_t v1, uint8x8_t v2) {
40   // CHECK-LABEL: test_vadd_u8
41  return vadd_u8(v1, v2);
42  // CHECK: add {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
43}
44
45uint16x4_t test_vadd_u16(uint16x4_t v1, uint16x4_t v2) {
46   // CHECK-LABEL: test_vadd_u16
47  return vadd_u16(v1, v2);
48  // CHECK: add {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
49}
50
51uint32x2_t test_vadd_u32(uint32x2_t v1, uint32x2_t v2) {
52   // CHECK-LABEL: test_vadd_u32
53  return vadd_u32(v1, v2);
54  // CHECK: add {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
55}
56
57uint64x1_t test_vadd_u64(uint64x1_t v1, uint64x1_t v2) {
58   // CHECK-LABEL: test_vadd_u64
59  return vadd_u64(v1, v2);
60  // CHECK: add {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
61}
62
63int8x16_t test_vaddq_s8(int8x16_t v1, int8x16_t v2) {
64   // CHECK-LABEL: test_vaddq_s8
65  return vaddq_s8(v1, v2);
66  // CHECK: add {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
67}
68
69int16x8_t test_vaddq_s16(int16x8_t v1, int16x8_t v2) {
70   // CHECK-LABEL: test_vaddq_s16
71  return vaddq_s16(v1, v2);
72  // CHECK: add {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
73}
74
75int32x4_t test_vaddq_s32(int32x4_t v1,int32x4_t  v2) {
76   // CHECK-LABEL: test_vaddq_s32
77  return vaddq_s32(v1, v2);
78  // CHECK: add {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
79}
80
81int64x2_t test_vaddq_s64(int64x2_t v1, int64x2_t v2) {
82   // CHECK-LABEL: test_vaddq_s64
83  return vaddq_s64(v1, v2);
84  // CHECK: add {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
85}
86
87float32x4_t test_vaddq_f32(float32x4_t v1, float32x4_t v2) {
88   // CHECK-LABEL: test_vaddq_f32
89  return vaddq_f32(v1, v2);
90  // CHECK: fadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
91}
92
93float64x2_t test_vaddq_f64(float64x2_t v1, float64x2_t v2) {
94  // CHECK-LABEL: test_vaddq_f64
95  return vaddq_f64(v1, v2);
96  // CHECK: fadd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
97}
98
99uint8x16_t test_vaddq_u8(uint8x16_t v1, uint8x16_t v2) {
100   // CHECK-LABEL: test_vaddq_u8
101  return vaddq_u8(v1, v2);
102  // CHECK: add {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
103}
104
105uint16x8_t test_vaddq_u16(uint16x8_t v1, uint16x8_t v2) {
106   // CHECK-LABEL: test_vaddq_u16
107  return vaddq_u16(v1, v2);
108  // CHECK: add {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
109}
110
111uint32x4_t test_vaddq_u32(uint32x4_t v1, uint32x4_t v2) {
112   // CHECK: vaddq_u32
113  return vaddq_u32(v1, v2);
114  // CHECK: add {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
115}
116
117uint64x2_t test_vaddq_u64(uint64x2_t v1, uint64x2_t v2) {
118   // CHECK-LABEL: test_vaddq_u64
119  return vaddq_u64(v1, v2);
120  // CHECK: add {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
121}
122
123int8x8_t test_vsub_s8(int8x8_t v1, int8x8_t v2) {
124   // CHECK-LABEL: test_vsub_s8
125  return vsub_s8(v1, v2);
126  // CHECK: sub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
127}
128int16x4_t test_vsub_s16(int16x4_t v1, int16x4_t v2) {
129   // CHECK-LABEL: test_vsub_s16
130  return vsub_s16(v1, v2);
131  // CHECK: sub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
132}
133int32x2_t test_vsub_s32(int32x2_t v1, int32x2_t v2) {
134   // CHECK-LABEL: test_vsub_s32
135  return vsub_s32(v1, v2);
136  // CHECK: sub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
137}
138
139int64x1_t test_vsub_s64(int64x1_t v1, int64x1_t v2) {
140   // CHECK-LABEL: test_vsub_s64
141  return vsub_s64(v1, v2);
142  // CHECK: sub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
143}
144
145float32x2_t test_vsub_f32(float32x2_t v1, float32x2_t v2) {
146   // CHECK-LABEL: test_vsub_f32
147  return vsub_f32(v1, v2);
148  // CHECK: fsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
149}
150
151uint8x8_t test_vsub_u8(uint8x8_t v1, uint8x8_t v2) {
152   // CHECK-LABEL: test_vsub_u8
153  return vsub_u8(v1, v2);
154  // CHECK: sub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
155}
156
157uint16x4_t test_vsub_u16(uint16x4_t v1, uint16x4_t v2) {
158   // CHECK-LABEL: test_vsub_u16
159  return vsub_u16(v1, v2);
160  // CHECK: sub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
161}
162
163uint32x2_t test_vsub_u32(uint32x2_t v1, uint32x2_t v2) {
164   // CHECK-LABEL: test_vsub_u32
165  return vsub_u32(v1, v2);
166  // CHECK: sub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
167}
168
169uint64x1_t test_vsub_u64(uint64x1_t v1, uint64x1_t v2) {
170   // CHECK-LABEL: test_vsub_u64
171  return vsub_u64(v1, v2);
172  // CHECK: sub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
173}
174
175int8x16_t test_vsubq_s8(int8x16_t v1, int8x16_t v2) {
176   // CHECK-LABEL: test_vsubq_s8
177  return vsubq_s8(v1, v2);
178  // CHECK: sub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
179}
180
181int16x8_t test_vsubq_s16(int16x8_t v1, int16x8_t v2) {
182   // CHECK-LABEL: test_vsubq_s16
183  return vsubq_s16(v1, v2);
184  // CHECK: sub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
185}
186
187int32x4_t test_vsubq_s32(int32x4_t v1,int32x4_t  v2) {
188   // CHECK-LABEL: test_vsubq_s32
189  return vsubq_s32(v1, v2);
190  // CHECK: sub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
191}
192
193int64x2_t test_vsubq_s64(int64x2_t v1, int64x2_t v2) {
194   // CHECK-LABEL: test_vsubq_s64
195  return vsubq_s64(v1, v2);
196  // CHECK: sub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
197}
198
199float32x4_t test_vsubq_f32(float32x4_t v1, float32x4_t v2) {
200   // CHECK-LABEL: test_vsubq_f32
201  return vsubq_f32(v1, v2);
202  // CHECK: fsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
203}
204
205float64x2_t test_vsubq_f64(float64x2_t v1, float64x2_t v2) {
206  // CHECK-LABEL: test_vsubq_f64
207  return vsubq_f64(v1, v2);
208  // CHECK: fsub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
209}
210
211uint8x16_t test_vsubq_u8(uint8x16_t v1, uint8x16_t v2) {
212   // CHECK-LABEL: test_vsubq_u8
213  return vsubq_u8(v1, v2);
214  // CHECK: sub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
215}
216
217uint16x8_t test_vsubq_u16(uint16x8_t v1, uint16x8_t v2) {
218   // CHECK-LABEL: test_vsubq_u16
219  return vsubq_u16(v1, v2);
220  // CHECK: sub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
221}
222
223uint32x4_t test_vsubq_u32(uint32x4_t v1, uint32x4_t v2) {
224   // CHECK: vsubq_u32
225  return vsubq_u32(v1, v2);
226  // CHECK: sub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
227}
228
229uint64x2_t test_vsubq_u64(uint64x2_t v1, uint64x2_t v2) {
230   // CHECK-LABEL: test_vsubq_u64
231  return vsubq_u64(v1, v2);
232  // CHECK: sub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
233}
234
235int8x8_t test_vmul_s8(int8x8_t v1, int8x8_t v2) {
236  // CHECK-LABEL: test_vmul_s8
237  return vmul_s8(v1, v2);
238  // CHECK: mul {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
239}
240
241int16x4_t test_vmul_s16(int16x4_t v1, int16x4_t v2) {
242  // CHECK-LABEL: test_vmul_s16
243  return vmul_s16(v1, v2);
244  // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
245}
246
247int32x2_t test_vmul_s32(int32x2_t v1, int32x2_t v2) {
248  // CHECK-LABEL: test_vmul_s32
249  return vmul_s32(v1, v2);
250  // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
251}
252
253float32x2_t test_vmul_f32(float32x2_t v1, float32x2_t v2) {
254  // CHECK-LABEL: test_vmul_f32
255  return vmul_f32(v1, v2);
256  // CHECK: fmul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
257}
258
259
260uint8x8_t test_vmul_u8(uint8x8_t v1, uint8x8_t v2) {
261  // CHECK-LABEL: test_vmul_u8
262  return vmul_u8(v1, v2);
263  // CHECK: mul {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
264}
265
266uint16x4_t test_vmul_u16(uint16x4_t v1, uint16x4_t v2) {
267  // CHECK-LABEL: test_vmul_u16
268  return vmul_u16(v1, v2);
269  // CHECK: mul {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
270}
271
272uint32x2_t test_vmul_u32(uint32x2_t v1, uint32x2_t v2) {
273  // CHECK-LABEL: test_vmul_u32
274  return vmul_u32(v1, v2);
275  // CHECK: mul {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
276}
277
278int8x16_t test_vmulq_s8(int8x16_t v1, int8x16_t v2) {
279  // CHECK-LABEL: test_vmulq_s8
280  return vmulq_s8(v1, v2);
281  // CHECK: mul {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
282}
283
284int16x8_t test_vmulq_s16(int16x8_t v1, int16x8_t v2) {
285  // CHECK-LABEL: test_vmulq_s16
286  return vmulq_s16(v1, v2);
287  // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
288}
289
290int32x4_t test_vmulq_s32(int32x4_t v1, int32x4_t v2) {
291  // CHECK-LABEL: test_vmulq_s32
292  return vmulq_s32(v1, v2);
293  // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
294}
295
296uint8x16_t test_vmulq_u8(uint8x16_t v1, uint8x16_t v2) {
297  // CHECK-LABEL: test_vmulq_u8
298  return vmulq_u8(v1, v2);
299  // CHECK: mul {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
300}
301
302uint16x8_t test_vmulq_u16(uint16x8_t v1, uint16x8_t v2) {
303  // CHECK-LABEL: test_vmulq_u16
304  return vmulq_u16(v1, v2);
305  // CHECK: mul {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
306}
307
308uint32x4_t test_vmulq_u32(uint32x4_t v1, uint32x4_t v2) {
309  // CHECK-LABEL: test_vmulq_u32
310  return vmulq_u32(v1, v2);
311  // CHECK: mul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
312}
313
314float32x4_t test_vmulq_f32(float32x4_t v1, float32x4_t v2) {
315  // CHECK-LABEL: test_vmulq_f32
316  return vmulq_f32(v1, v2);
317  // CHECK: fmul {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
318}
319
320float64x2_t test_vmulq_f64(float64x2_t v1, float64x2_t v2) {
321  // CHECK-LABEL: test_vmulq_f64
322  return vmulq_f64(v1, v2);
323  // CHECK: fmul {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
324}
325
326poly8x8_t test_vmul_p8(poly8x8_t v1, poly8x8_t v2) {
327  //  test_vmul_p8
328  return vmul_p8(v1, v2);
329  //  pmul {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
330}
331
332poly8x16_t test_vmulq_p8(poly8x16_t v1, poly8x16_t v2) {
333  // test_vmulq_p8
334  return vmulq_p8(v1, v2);
335  // pmul {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
336}
337
338
339int8x8_t test_vmla_s8(int8x8_t v1, int8x8_t v2, int8x8_t v3) {
340  // CHECK-LABEL: test_vmla_s8
341  return vmla_s8(v1, v2, v3);
342  // CHECK: mla {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
343}
344
345int8x8_t test_vmla_s16(int16x4_t v1, int16x4_t v2, int16x4_t v3) {
346  // CHECK-LABEL: test_vmla_s16
347  return vmla_s16(v1, v2, v3);
348  // CHECK: mla {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
349}
350
351int32x2_t test_vmla_s32(int32x2_t v1, int32x2_t v2, int32x2_t v3) {
352  // CHECK-LABEL: test_vmla_s32
353  return vmla_s32(v1, v2, v3);
354  // CHECK: mla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
355}
356
357float32x2_t test_vmla_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
358  // CHECK-LABEL: test_vmla_f32
359  return vmla_f32(v1, v2, v3);
360  // CHECK: fmla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
361}
362
363uint8x8_t test_vmla_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
364  // CHECK-LABEL: test_vmla_u8
365  return vmla_u8(v1, v2, v3);
366  // CHECK: mla {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
367}
368
369uint16x4_t test_vmla_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
370  // CHECK-LABEL: test_vmla_u16
371  return vmla_u16(v1, v2, v3);
372  // CHECK: mla {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
373}
374
375uint32x2_t test_vmla_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
376  // CHECK-LABEL: test_vmla_u32
377  return vmla_u32(v1, v2, v3);
378  // CHECK: mla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
379}
380
381int8x16_t test_vmlaq_s8(int8x16_t v1, int8x16_t v2, int8x16_t v3) {
382  // CHECK-LABEL: test_vmlaq_s8
383  return vmlaq_s8(v1, v2, v3);
384  // CHECK: mla {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
385}
386
387int16x8_t test_vmlaq_s16(int16x8_t v1, int16x8_t v2, int16x8_t v3) {
388  // CHECK-LABEL: test_vmlaq_s16
389  return vmlaq_s16(v1, v2, v3);
390  // CHECK: mla {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
391}
392
393int32x4_t test_vmlaq_s32(int32x4_t v1, int32x4_t v2, int32x4_t v3) {
394  // CHECK-LABEL: test_vmlaq_s32
395  return vmlaq_s32(v1, v2, v3);
396  // CHECK: mla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
397}
398
399float32x4_t test_vmlaq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
400  // CHECK-LABEL: test_vmlaq_f32
401  return vmlaq_f32(v1, v2, v3);
402  // CHECK: fmla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
403}
404
405uint8x16_t test_vmlaq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
406   // CHECK-LABEL: test_vmlaq_u8
407  return vmlaq_u8(v1, v2, v3);
408  // CHECK: mla {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
409}
410
411uint16x8_t test_vmlaq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
412  // CHECK-LABEL: test_vmlaq_u16
413  return vmlaq_u16(v1, v2, v3);
414  // CHECK: mla {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
415}
416
417uint32x4_t test_vmlaq_u32(uint32x4_t v1, uint32x4_t v2, uint32x4_t v3) {
418  // CHECK-LABEL: test_vmlaq_u32
419  return vmlaq_u32(v1, v2, v3);
420  // CHECK: mla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
421}
422
423float64x2_t test_vmlaq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
424  // CHECK-LABEL: test_vmlaq_f64
425  return vmlaq_f64(v1, v2, v3);
426  // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
427}
428
429int8x8_t test_vmls_s8(int8x8_t v1, int8x8_t v2, int8x8_t v3) {
430  // CHECK-LABEL: test_vmls_s8
431  return vmls_s8(v1, v2, v3);
432  // CHECK: mls {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
433}
434
435int8x8_t test_vmls_s16(int16x4_t v1, int16x4_t v2, int16x4_t v3) {
436  // CHECK-LABEL: test_vmls_s16
437  return vmls_s16(v1, v2, v3);
438  // CHECK: mls {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
439}
440
441int32x2_t test_vmls_s32(int32x2_t v1, int32x2_t v2, int32x2_t v3) {
442  // CHECK-LABEL: test_vmls_s32
443  return vmls_s32(v1, v2, v3);
444  // CHECK: mls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
445}
446
447float32x2_t test_vmls_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
448  // CHECK-LABEL: test_vmls_f32
449  return vmls_f32(v1, v2, v3);
450  // CHECK: fmls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
451}
452
453uint8x8_t test_vmls_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
454  // CHECK-LABEL: test_vmls_u8
455  return vmls_u8(v1, v2, v3);
456  // CHECK: mls {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
457}
458
459uint16x4_t test_vmls_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
460  // CHECK-LABEL: test_vmls_u16
461  return vmls_u16(v1, v2, v3);
462  // CHECK: mls {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
463}
464
465uint32x2_t test_vmls_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
466  // CHECK-LABEL: test_vmls_u32
467  return vmls_u32(v1, v2, v3);
468  // CHECK: mls {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
469}
470int8x16_t test_vmlsq_s8(int8x16_t v1, int8x16_t v2, int8x16_t v3) {
471  // CHECK-LABEL: test_vmlsq_s8
472  return vmlsq_s8(v1, v2, v3);
473  // CHECK: mls {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
474}
475
476int16x8_t test_vmlsq_s16(int16x8_t v1, int16x8_t v2, int16x8_t v3) {
477  // CHECK-LABEL: test_vmlsq_s16
478  return vmlsq_s16(v1, v2, v3);
479  // CHECK: mls {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
480}
481
482int32x4_t test_vmlsq_s32(int32x4_t v1, int32x4_t v2, int32x4_t v3) {
483  // CHECK-LABEL: test_vmlsq_s32
484  return vmlsq_s32(v1, v2, v3);
485  // CHECK: mls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
486}
487
488float32x4_t test_vmlsq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
489  // CHECK-LABEL: test_vmlsq_f32
490  return vmlsq_f32(v1, v2, v3);
491  // CHECK: fmls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
492}
493uint8x16_t test_vmlsq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
494  // CHECK-LABEL: test_vmlsq_u8
495  return vmlsq_u8(v1, v2, v3);
496  // CHECK: mls {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
497}
498
499uint16x8_t test_vmlsq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
500  // CHECK-LABEL: test_vmlsq_u16
501  return vmlsq_u16(v1, v2, v3);
502  // CHECK: mls {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
503}
504
505uint32x4_t test_vmlsq_u32(uint32x4_t v1, uint32x4_t v2, uint32x4_t v3) {
506  // CHECK-LABEL: test_vmlsq_u32
507  return vmlsq_u32(v1, v2, v3);
508  // CHECK: mls {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
509}
510
511float64x2_t test_vmlsq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
512  // CHECK-LABEL: test_vmlsq_f64
513  return vmlsq_f64(v1, v2, v3);
514  // CHECK: fmls {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
515}
516float32x2_t test_vfma_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
517  // CHECK-LABEL: test_vfma_f32
518  return vfma_f32(v1, v2, v3);
519  // CHECK: fmla {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
520}
521
522float32x4_t test_vfmaq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
523  // CHECK-LABEL: test_vfmaq_f32
524  return vfmaq_f32(v1, v2, v3);
525  // CHECK: fmla {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
526}
527
528float64x2_t test_vfmaq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
529  // CHECK-LABEL: test_vfmaq_f64
530  return vfmaq_f64(v1, v2, v3);
531  // CHECK: fmla {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
532}
533float32x2_t test_vfms_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
534  // CHECK-LABEL: test_vfms_f32
535  return vfms_f32(v1, v2, v3);
536  // CHECK: fmls v0.2s, {{v1.2s, v2.2s|v2.2s, v1.2s}}
537}
538
539float32x4_t test_vfmsq_f32(float32x4_t v1, float32x4_t v2, float32x4_t v3) {
540  // CHECK-LABEL: test_vfmsq_f32
541  return vfmsq_f32(v1, v2, v3);
542  // CHECK: fmls v0.4s, {{v1.4s, v2.4s|v2.4s, v1.4s}}
543}
544
545float64x2_t test_vfmsq_f64(float64x2_t v1, float64x2_t v2, float64x2_t v3) {
546  // CHECK: vfmsq_f64
547  return vfmsq_f64(v1, v2, v3);
548  // CHECK: fmls v0.2d, {{v1.2d, v2.2d|v2.2d, v1.2d}}
549}
550
551float64x2_t test_vdivq_f64(float64x2_t v1, float64x2_t v2) {
552  // CHECK-LABEL: test_vdivq_f64
553  return vdivq_f64(v1, v2);
554  // CHECK: fdiv {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
555}
556
557float32x4_t test_vdivq_f32(float32x4_t v1, float32x4_t v2) {
558  // CHECK-LABEL: test_vdivq_f32
559  return vdivq_f32(v1, v2);
560  // CHECK: fdiv {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
561}
562
563float32x2_t test_vdiv_f32(float32x2_t v1, float32x2_t v2) {
564  // CHECK-LABEL: test_vdiv_f32
565  return vdiv_f32(v1, v2);
566  // CHECK: fdiv {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
567}
568
569int8x8_t test_vaba_s8(int8x8_t v1, int8x8_t v2, int8x8_t v3) {
570  // CHECK-LABEL: test_vaba_s8
571  return vaba_s8(v1, v2, v3);
572  // CHECK: saba {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
573}
574
575int16x4_t test_vaba_s16(int16x4_t v1, int16x4_t v2, int16x4_t v3) {
576  // CHECK-LABEL: test_vaba_s16
577  return vaba_s16(v1, v2, v3);
578  // CHECK: saba {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
579}
580
581int32x2_t test_vaba_s32(int32x2_t v1, int32x2_t v2, int32x2_t v3) {
582  // CHECK-LABEL: test_vaba_s32
583  return vaba_s32(v1, v2, v3);
584  // CHECK: saba {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
585}
586
587uint8x8_t test_vaba_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
588  // CHECK-LABEL: test_vaba_u8
589  return vaba_u8(v1, v2, v3);
590  // CHECK: uaba {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
591}
592
593uint16x4_t test_vaba_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
594  // CHECK-LABEL: test_vaba_u16
595  return vaba_u16(v1, v2, v3);
596  // CHECK: uaba {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
597}
598
599uint32x2_t test_vaba_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
600  // CHECK-LABEL: test_vaba_u32
601  return vaba_u32(v1, v2, v3);
602  // CHECK: uaba {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
603}
604
605int8x16_t test_vabaq_s8(int8x16_t v1, int8x16_t v2, int8x16_t v3) {
606  // CHECK-LABEL: test_vabaq_s8
607  return vabaq_s8(v1, v2, v3);
608  // CHECK: saba {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
609}
610
611int16x8_t test_vabaq_s16(int16x8_t v1, int16x8_t v2, int16x8_t v3) {
612  // CHECK-LABEL: test_vabaq_s16
613  return vabaq_s16(v1, v2, v3);
614  // CHECK: saba {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
615}
616
617int32x4_t test_vabaq_s32(int32x4_t v1, int32x4_t v2, int32x4_t v3) {
618  // CHECK-LABEL: test_vabaq_s32
619  return vabaq_s32(v1, v2, v3);
620  // CHECK: saba {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
621}
622
623uint8x16_t test_vabaq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
624  // CHECK-LABEL: test_vabaq_u8
625  return vabaq_u8(v1, v2, v3);
626  // CHECK: uaba {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
627}
628
629uint16x8_t test_vabaq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
630  // CHECK-LABEL: test_vabaq_u16
631  return vabaq_u16(v1, v2, v3);
632  // CHECK: uaba {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
633}
634
635uint32x4_t test_vabaq_u32(uint32x4_t v1, uint32x4_t v2, uint32x4_t v3) {
636  // CHECK-LABEL: test_vabaq_u32
637  return vabaq_u32(v1, v2, v3);
638  // CHECK: uaba {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
639}
640
641int8x8_t test_vabd_s8(int8x8_t v1, int8x8_t v2) {
642  // CHECK-LABEL: test_vabd_s8
643  return vabd_s8(v1, v2);
644  // CHECK: sabd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
645}
646
647int16x4_t test_vabd_s16(int16x4_t v1, int16x4_t v2) {
648  // CHECK-LABEL: test_vabd_s16
649  return vabd_s16(v1, v2);
650  // CHECK: sabd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
651}
652
653int32x2_t test_vabd_s32(int32x2_t v1, int32x2_t v2) {
654  // CHECK-LABEL: test_vabd_s32
655  return vabd_s32(v1, v2);
656  // CHECK: sabd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
657}
658
659uint8x8_t test_vabd_u8(uint8x8_t v1, uint8x8_t v2) {
660  // CHECK-LABEL: test_vabd_u8
661  return vabd_u8(v1, v2);
662  // CHECK: uabd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
663}
664
665uint16x4_t test_vabd_u16(uint16x4_t v1, uint16x4_t v2) {
666  // CHECK-LABEL: test_vabd_u16
667  return vabd_u16(v1, v2);
668  // CHECK: uabd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
669}
670
671uint32x2_t test_vabd_u32(uint32x2_t v1, uint32x2_t v2) {
672  // CHECK-LABEL: test_vabd_u32
673  return vabd_u32(v1, v2);
674  // CHECK: uabd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
675}
676
677float32x2_t test_vabd_f32(float32x2_t v1, float32x2_t v2) {
678  // CHECK-LABEL: test_vabd_f32
679  return vabd_f32(v1, v2);
680  // CHECK: fabd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
681}
682
683int8x16_t test_vabdq_s8(int8x16_t v1, int8x16_t v2) {
684  // CHECK-LABEL: test_vabdq_s8
685  return vabdq_s8(v1, v2);
686  // CHECK: sabd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
687}
688
689int16x8_t test_vabdq_s16(int16x8_t v1, int16x8_t v2) {
690  // CHECK-LABEL: test_vabdq_s16
691  return vabdq_s16(v1, v2);
692  // CHECK: sabd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
693}
694
695int32x4_t test_vabdq_s32(int32x4_t v1, int32x4_t v2) {
696  // CHECK-LABEL: test_vabdq_s32
697  return vabdq_s32(v1, v2);
698  // CHECK: sabd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
699}
700
701uint8x16_t test_vabdq_u8(uint8x16_t v1, uint8x16_t v2) {
702  // CHECK-LABEL: test_vabdq_u8
703  return vabdq_u8(v1, v2);
704  // CHECK: uabd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
705}
706
707uint16x8_t test_vabdq_u16(uint16x8_t v1, uint16x8_t v2) {
708  // CHECK-LABEL: test_vabdq_u16
709  return vabdq_u16(v1, v2);
710  // CHECK: uabd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
711}
712
713uint32x4_t test_vabdq_u32(uint32x4_t v1, uint32x4_t v2) {
714  // CHECK-LABEL: test_vabdq_u32
715  return vabdq_u32(v1, v2);
716  // CHECK: uabd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
717}
718
719float32x4_t test_vabdq_f32(float32x4_t v1, float32x4_t v2) {
720  // CHECK-LABEL: test_vabdq_f32
721  return vabdq_f32(v1, v2);
722  // CHECK: fabd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
723}
724
725float64x2_t test_vabdq_f64(float64x2_t v1, float64x2_t v2) {
726  // CHECK-LABEL: test_vabdq_f64
727  return vabdq_f64(v1, v2);
728  // CHECK: fabd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
729}
730
731
732int8x8_t test_vbsl_s8(uint8x8_t v1, int8x8_t v2, int8x8_t v3) {
733  // CHECK-LABEL: test_vbsl_s8
734  return vbsl_s8(v1, v2, v3);
735  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
736}
737
738int8x8_t test_vbsl_s16(uint16x4_t v1, int16x4_t v2, int16x4_t v3) {
739  // CHECK-LABEL: test_vbsl_s16
740  return vbsl_s16(v1, v2, v3);
741  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
742}
743
744int32x2_t test_vbsl_s32(uint32x2_t v1, int32x2_t v2, int32x2_t v3) {
745  // CHECK-LABEL: test_vbsl_s32
746  return vbsl_s32(v1, v2, v3);
747  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
748}
749
750uint64x1_t test_vbsl_s64(uint64x1_t v1, uint64x1_t v2, uint64x1_t v3) {
751  // CHECK-LABEL: test_vbsl_s64
752  return vbsl_s64(v1, v2, v3);
753  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
754}
755
756uint8x8_t test_vbsl_u8(uint8x8_t v1, uint8x8_t v2, uint8x8_t v3) {
757  // CHECK-LABEL: test_vbsl_u8
758  return vbsl_u8(v1, v2, v3);
759  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
760}
761
762uint16x4_t test_vbsl_u16(uint16x4_t v1, uint16x4_t v2, uint16x4_t v3) {
763  // CHECK-LABEL: test_vbsl_u16
764  return vbsl_u16(v1, v2, v3);
765  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
766}
767
768uint32x2_t test_vbsl_u32(uint32x2_t v1, uint32x2_t v2, uint32x2_t v3) {
769  // CHECK-LABEL: test_vbsl_u32
770  return vbsl_u32(v1, v2, v3);
771  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
772}
773
774uint64x1_t test_vbsl_u64(uint64x1_t v1, uint64x1_t v2, uint64x1_t v3) {
775  // CHECK-LABEL: test_vbsl_u64
776  return vbsl_u64(v1, v2, v3);
777  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
778}
779
780float32x2_t test_vbsl_f32(float32x2_t v1, float32x2_t v2, float32x2_t v3) {
781  // CHECK-LABEL: test_vbsl_f32
782  return vbsl_f32(v1, v2, v3);
783  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
784}
785
786float64x1_t test_vbsl_f64(uint64x1_t v1, float64x1_t v2, float64x1_t v3) {
787  // CHECK-LABEL: test_vbsl_f64
788  return vbsl_f64(v1, v2, v3);
789  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
790}
791
792poly8x8_t test_vbsl_p8(uint8x8_t v1, poly8x8_t v2, poly8x8_t v3) {
793  // CHECK-LABEL: test_vbsl_p8
794  return vbsl_p8(v1, v2, v3);
795  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
796}
797
798poly16x4_t test_vbsl_p16(uint16x4_t v1, poly16x4_t v2, poly16x4_t v3) {
799  // CHECK-LABEL: test_vbsl_p16
800  return vbsl_p16(v1, v2, v3);
801  // CHECK: bsl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
802}
803
804int8x16_t test_vbslq_s8(uint8x16_t v1, int8x16_t v2, int8x16_t v3) {
805  // CHECK-LABEL: test_vbslq_s8
806  return vbslq_s8(v1, v2, v3);
807  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
808}
809
810int16x8_t test_vbslq_s16(uint16x8_t v1, int16x8_t v2, int16x8_t v3) {
811  // CHECK-LABEL: test_vbslq_s16
812  return vbslq_s16(v1, v2, v3);
813  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
814}
815
816int32x4_t test_vbslq_s32(uint32x4_t v1, int32x4_t v2, int32x4_t v3) {
817  // CHECK-LABEL: test_vbslq_s32
818  return vbslq_s32(v1, v2, v3);
819  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
820}
821
822int64x2_t test_vbslq_s64(uint64x2_t v1, int64x2_t v2, int64x2_t v3) {
823  // CHECK-LABEL: test_vbslq_s64
824  return vbslq_s64(v1, v2, v3);
825  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
826}
827
828uint8x16_t test_vbslq_u8(uint8x16_t v1, uint8x16_t v2, uint8x16_t v3) {
829  // CHECK-LABEL: test_vbslq_u8
830  return vbslq_u8(v1, v2, v3);
831  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
832}
833
834uint16x8_t test_vbslq_u16(uint16x8_t v1, uint16x8_t v2, uint16x8_t v3) {
835  // CHECK-LABEL: test_vbslq_u16
836  return vbslq_u16(v1, v2, v3);
837  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
838}
839
840int32x4_t test_vbslq_u32(uint32x4_t v1, int32x4_t v2, int32x4_t v3) {
841  // CHECK-LABEL: test_vbslq_u32
842  return vbslq_s32(v1, v2, v3);
843  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
844}
845
846uint64x2_t test_vbslq_u64(uint64x2_t v1, uint64x2_t v2, uint64x2_t v3) {
847  // CHECK-LABEL: test_vbslq_u64
848  return vbslq_u64(v1, v2, v3);
849  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
850}
851
852float32x4_t test_vbslq_f32(uint32x4_t v1, float32x4_t v2, float32x4_t v3) {
853  // CHECK-LABEL: test_vbslq_f32
854  return vbslq_f32(v1, v2, v3);
855  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
856}
857
858poly8x16_t test_vbslq_p8(uint8x16_t v1, poly8x16_t v2, poly8x16_t v3) {
859  // CHECK-LABEL: test_vbslq_p8
860  return vbslq_p8(v1, v2, v3);
861  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
862}
863
864poly16x8_t test_vbslq_p16(uint16x8_t v1, poly16x8_t v2, poly16x8_t v3) {
865  // CHECK-LABEL: test_vbslq_p16
866  return vbslq_p16(v1, v2, v3);
867  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
868}
869
870float64x2_t test_vbslq_f64(uint64x2_t v1, float64x2_t v2, float64x2_t v3) {
871  // CHECK-LABEL: test_vbslq_f64
872  return vbslq_f64(v1, v2, v3);
873  // CHECK: bsl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
874}
875
876float32x2_t test_vrecps_f32(float32x2_t v1, float32x2_t v2) {
877   // CHECK-LABEL: test_vrecps_f32
878   return vrecps_f32(v1, v2);
879   // CHECK: frecps {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
880}
881
882float32x4_t test_vrecpsq_f32(float32x4_t v1, float32x4_t v2) {
883   // CHECK-LABEL: test_vrecpsq_f32
884   return vrecpsq_f32(v1, v2);
885   // CHECK: frecps {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
886}
887
888float64x2_t test_vrecpsq_f64(float64x2_t v1, float64x2_t v2) {
889   // CHECK-LABEL: test_vrecpsq_f64
890  return vrecpsq_f64(v1, v2);
891  // CHECK: frecps {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
892}
893
894float32x2_t test_vrsqrts_f32(float32x2_t v1, float32x2_t v2) {
895   // CHECK-LABEL: test_vrsqrts_f32
896  return vrsqrts_f32(v1, v2);
897  // CHECK: frsqrts {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
898}
899
900float32x4_t test_vrsqrtsq_f32(float32x4_t v1, float32x4_t v2) {
901   // CHECK-LABEL: test_vrsqrtsq_f32
902  return vrsqrtsq_f32(v1, v2);
903  // CHECK: frsqrts {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
904}
905
906float64x2_t test_vrsqrtsq_f64(float64x2_t v1, float64x2_t v2) {
907   // CHECK-LABEL: test_vrsqrtsq_f64
908  return vrsqrtsq_f64(v1, v2);
909  // CHECK: frsqrts {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
910}
911
912uint32x2_t test_vcage_f32(float32x2_t v1, float32x2_t v2) {
913  // CHECK-LABEL: test_vcage_f32
914  return vcage_f32(v1, v2);
915  // CHECK: facge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
916}
917
918uint64x1_t test_vcage_f64(float64x1_t a, float64x1_t b) {
919  // CHECK-LABEL: test_vcage_f64
920  return vcage_f64(a, b);
921  // CHECK: facge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
922}
923
924uint32x4_t test_vcageq_f32(float32x4_t v1, float32x4_t v2) {
925  // CHECK-LABEL: test_vcageq_f32
926  return vcageq_f32(v1, v2);
927  // CHECK: facge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
928}
929
930uint64x2_t test_vcageq_f64(float64x2_t v1, float64x2_t v2) {
931  // CHECK-LABEL: test_vcageq_f64
932  return vcageq_f64(v1, v2);
933  // CHECK: facge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
934}
935
936uint32x2_t test_vcagt_f32(float32x2_t v1, float32x2_t v2) {
937  // CHECK-LABEL: test_vcagt_f32
938  return vcagt_f32(v1, v2);
939  // CHECK: facgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
940}
941
942uint64x1_t test_vcagt_f64(float64x1_t a, float64x1_t b) {
943  // CHECK-LABEL: test_vcagt_f64
944  return vcagt_f64(a, b);
945  // CHECK: facgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
946}
947
948uint32x4_t test_vcagtq_f32(float32x4_t v1, float32x4_t v2) {
949  // CHECK-LABEL: test_vcagtq_f32
950  return vcagtq_f32(v1, v2);
951  // CHECK: facgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
952}
953
954uint64x2_t test_vcagtq_f64(float64x2_t v1, float64x2_t v2) {
955  // CHECK-LABEL: test_vcagtq_f64
956  return vcagtq_f64(v1, v2);
957  // CHECK: facgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
958}
959
960uint32x2_t test_vcale_f32(float32x2_t v1, float32x2_t v2) {
961  // CHECK-LABEL: test_vcale_f32
962  return vcale_f32(v1, v2);
963  // Using registers other than v0, v1 are possible, but would be odd.
964  // CHECK: facge {{v[0-9]+}}.2s, v1.2s, v0.2s
965}
966
967uint64x1_t test_vcale_f64(float64x1_t a, float64x1_t b) {
968  // CHECK-LABEL: test_vcale_f64
969  return vcale_f64(a, b);
970  // CHECK: facge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
971}
972
973uint32x4_t test_vcaleq_f32(float32x4_t v1, float32x4_t v2) {
974  // CHECK-LABEL: test_vcaleq_f32
975  return vcaleq_f32(v1, v2);
976  // Using registers other than v0, v1 are possible, but would be odd.
977  // CHECK: facge {{v[0-9]+}}.4s, v1.4s, v0.4s
978}
979
980uint64x2_t test_vcaleq_f64(float64x2_t v1, float64x2_t v2) {
981  // CHECK-LABEL: test_vcaleq_f64
982  return vcaleq_f64(v1, v2);
983  // Using registers other than v0, v1 are possible, but would be odd.
984  // CHECK: facge {{v[0-9]+}}.2d, v1.2d, v0.2d
985}
986
987uint32x2_t test_vcalt_f32(float32x2_t v1, float32x2_t v2) {
988  // CHECK-LABEL: test_vcalt_f32
989  return vcalt_f32(v1, v2);
990  // Using registers other than v0, v1 are possible, but would be odd.
991  // CHECK: facgt {{v[0-9]+}}.2s, v1.2s, v0.2s
992}
993
994uint64x1_t test_vcalt_f64(float64x1_t a, float64x1_t b) {
995  // CHECK-LABEL: test_vcalt_f64
996  return vcalt_f64(a, b);
997  // CHECK: facgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
998}
999
1000uint32x4_t test_vcaltq_f32(float32x4_t v1, float32x4_t v2) {
1001  // CHECK-LABEL: test_vcaltq_f32
1002  return vcaltq_f32(v1, v2);
1003  // Using registers other than v0, v1 are possible, but would be odd.
1004  // CHECK: facgt {{v[0-9]+}}.4s, v1.4s, v0.4s
1005}
1006
1007uint64x2_t test_vcaltq_f64(float64x2_t v1, float64x2_t v2) {
1008  // CHECK-LABEL: test_vcaltq_f64
1009  return vcaltq_f64(v1, v2);
1010  // Using registers other than v0, v1 are possible, but would be odd.
1011  // CHECK: facgt {{v[0-9]+}}.2d, v1.2d, v0.2d
1012}
1013
1014uint8x8_t test_vtst_s8(int8x8_t v1, int8x8_t v2) {
1015   // CHECK-LABEL: test_vtst_s8
1016  return vtst_s8(v1, v2);
1017  // CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1018}
1019
1020uint16x4_t test_vtst_s16(int16x4_t v1, int16x4_t v2) {
1021   // CHECK-LABEL: test_vtst_s16
1022  return vtst_s16(v1, v2);
1023  // CHECK: cmtst {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1024}
1025
1026uint32x2_t test_vtst_s32(int32x2_t v1, int32x2_t v2) {
1027   // CHECK-LABEL: test_vtst_s32
1028  return vtst_s32(v1, v2);
1029  // CHECK: cmtst {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1030}
1031
1032uint8x8_t test_vtst_u8(uint8x8_t v1, uint8x8_t v2) {
1033   // CHECK-LABEL: test_vtst_u8
1034  return vtst_u8(v1, v2);
1035  // CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1036}
1037
1038uint16x4_t test_vtst_u16(uint16x4_t v1, uint16x4_t v2) {
1039   // CHECK-LABEL: test_vtst_u16
1040  return vtst_u16(v1, v2);
1041  // CHECK: cmtst {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1042}
1043
1044uint32x2_t test_vtst_u32(uint32x2_t v1, uint32x2_t v2) {
1045   // CHECK-LABEL: test_vtst_u32
1046  return vtst_u32(v1, v2);
1047  // CHECK: cmtst {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1048}
1049
1050uint8x16_t test_vtstq_s8(int8x16_t v1, int8x16_t v2) {
1051   // CHECK-LABEL: test_vtstq_s8
1052  return vtstq_s8(v1, v2);
1053  // CHECK: cmtst {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1054}
1055
1056uint16x8_t test_vtstq_s16(int16x8_t v1, int16x8_t v2) {
1057   // CHECK-LABEL: test_vtstq_s16
1058  return vtstq_s16(v1, v2);
1059  // CHECK: cmtst {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1060}
1061
1062uint32x4_t test_vtstq_s32(int32x4_t v1, int32x4_t v2) {
1063   // CHECK-LABEL: test_vtstq_s32
1064  return vtstq_s32(v1, v2);
1065  // CHECK: cmtst {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1066}
1067
1068uint8x16_t test_vtstq_u8(uint8x16_t v1, uint8x16_t v2) {
1069   // CHECK-LABEL: test_vtstq_u8
1070  return vtstq_u8(v1, v2);
1071  // CHECK: cmtst {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1072}
1073
1074uint16x8_t test_vtstq_u16(uint16x8_t v1, uint16x8_t v2) {
1075   // CHECK-LABEL: test_vtstq_u16
1076  return vtstq_u16(v1, v2);
1077  // CHECK: cmtst {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1078}
1079
1080uint32x4_t test_vtstq_u32(uint32x4_t v1, uint32x4_t v2) {
1081   // CHECK-LABEL: test_vtstq_u32
1082  return vtstq_u32(v1, v2);
1083  // CHECK: cmtst {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1084}
1085
1086uint64x2_t test_vtstq_s64(int64x2_t v1, int64x2_t v2) {
1087   // CHECK-LABEL: test_vtstq_s64
1088  return vtstq_s64(v1, v2);
1089  // CHECK: cmtst {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1090}
1091
1092uint64x2_t test_vtstq_u64(uint64x2_t v1, uint64x2_t v2) {
1093   // CHECK-LABEL: test_vtstq_u64
1094  return vtstq_u64(v1, v2);
1095  // CHECK: cmtst {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1096}
1097
1098uint8x8_t test_vtst_p8(poly8x8_t v1, poly8x8_t v2) {
1099   // CHECK-LABEL: test_vtst_p8
1100  return vtst_p8(v1, v2);
1101  // CHECK: cmtst {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1102}
1103
1104uint16x4_t test_vtst_p16(poly16x4_t v1, poly16x4_t v2) {
1105   // CHECK-LABEL: test_vtst_p16
1106  return vtst_p16(v1, v2);
1107  // CHECK: cmtst {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1108}
1109
1110uint8x16_t test_vtstq_p8(poly8x16_t v1, poly8x16_t v2) {
1111   // CHECK-LABEL: test_vtstq_p8
1112  return vtstq_p8(v1, v2);
1113  // CHECK: cmtst {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1114}
1115
1116uint16x8_t test_vtstq_p16(poly16x8_t v1, poly16x8_t v2) {
1117   // CHECK-LABEL: test_vtstq_p16
1118  return vtstq_p16(v1, v2);
1119  // CHECK: cmtst {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1120}
1121
1122uint64x1_t test_vtst_s64(int64x1_t a, int64x1_t b) {
1123  // CHECK-LABEL: test_vtst_s64
1124  return vtst_s64(a, b);
1125  // CHECK: cmtst {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1126}
1127
1128uint64x1_t test_vtst_u64(uint64x1_t a, uint64x1_t b) {
1129  // CHECK-LABEL: test_vtst_u64
1130  return vtst_u64(a, b);
1131  // CHECK: cmtst {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1132}
1133
1134uint8x8_t test_vceq_s8(int8x8_t v1, int8x8_t v2) {
1135  // CHECK-LABEL: test_vceq_s8
1136  return vceq_s8(v1, v2);
1137  // CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1138}
1139
1140uint16x4_t test_vceq_s16(int16x4_t v1, int16x4_t v2) {
1141  // CHECK-LABEL: test_vceq_s16
1142  return vceq_s16(v1, v2);
1143  // CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1144}
1145
1146uint32x2_t test_vceq_s32(int32x2_t v1, int32x2_t v2) {
1147  // CHECK-LABEL: test_vceq_s32
1148  return vceq_s32(v1, v2);
1149  // CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1150}
1151
1152uint64x1_t test_vceq_s64(int64x1_t a, int64x1_t b) {
1153  // CHECK-LABEL: test_vceq_s64
1154  return vceq_s64(a, b);
1155  // CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1156}
1157
1158uint64x1_t test_vceq_u64(uint64x1_t a, uint64x1_t b) {
1159  // CHECK-LABEL: test_vceq_u64
1160  return vceq_u64(a, b);
1161  // CHECK: cmeq {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1162}
1163
1164uint32x2_t test_vceq_f32(float32x2_t v1, float32x2_t v2) {
1165  // CHECK-LABEL: test_vceq_f32
1166  return vceq_f32(v1, v2);
1167  // CHECK: fcmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1168}
1169
1170uint64x1_t test_vceq_f64(float64x1_t a, float64x1_t b) {
1171  // CHECK-LABEL: test_vceq_f64
1172  return vceq_f64(a, b);
1173  // CHECK: fcmeq {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1174}
1175
1176uint8x8_t test_vceq_u8(uint8x8_t v1, uint8x8_t v2) {
1177  // CHECK-LABEL: test_vceq_u8
1178  return vceq_u8(v1, v2);
1179  // CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1180}
1181
1182uint16x4_t test_vceq_u16(uint16x4_t v1, uint16x4_t v2) {
1183  // CHECK-LABEL: test_vceq_u16
1184  return vceq_u16(v1, v2);
1185  // CHECK: cmeq {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1186}
1187
1188uint32x2_t test_vceq_u32(uint32x2_t v1, uint32x2_t v2) {
1189  // CHECK-LABEL: test_vceq_u32
1190  return vceq_u32(v1, v2);
1191  // CHECK: cmeq {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1192}
1193
1194uint8x8_t test_vceq_p8(poly8x8_t v1, poly8x8_t v2) {
1195  // CHECK-LABEL: test_vceq_p8
1196  return vceq_p8(v1, v2);
1197  // CHECK: cmeq {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1198}
1199
1200uint8x16_t test_vceqq_s8(int8x16_t v1, int8x16_t v2) {
1201  // CHECK-LABEL: test_vceqq_s8
1202  return vceqq_s8(v1, v2);
1203  // CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1204}
1205
1206uint16x8_t test_vceqq_s16(int16x8_t v1, int16x8_t v2) {
1207  // CHECK-LABEL: test_vceqq_s16
1208  return vceqq_s16(v1, v2);
1209  // CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1210}
1211
1212uint32x4_t test_vceqq_s32(int32x4_t v1, int32x4_t v2) {
1213  // CHECK-LABEL: test_vceqq_s32
1214  return vceqq_s32(v1, v2);
1215  // CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1216}
1217
1218uint32x4_t test_vceqq_f32(float32x4_t v1, float32x4_t v2) {
1219  // CHECK-LABEL: test_vceqq_f32
1220  return vceqq_f32(v1, v2);
1221  // CHECK: fcmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1222}
1223
1224uint8x16_t test_vceqq_u8(uint8x16_t v1, uint8x16_t v2) {
1225  // CHECK-LABEL: test_vceqq_u8
1226  return vceqq_u8(v1, v2);
1227  // CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1228}
1229
1230uint16x8_t test_vceqq_u16(uint16x8_t v1, uint16x8_t v2) {
1231  // CHECK-LABEL: test_vceqq_u16
1232  return vceqq_u16(v1, v2);
1233  // CHECK: cmeq {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1234}
1235
1236uint32x4_t test_vceqq_u32(uint32x4_t v1, uint32x4_t v2) {
1237  // CHECK-LABEL: test_vceqq_u32
1238  return vceqq_u32(v1, v2);
1239  // CHECK: cmeq {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1240}
1241
1242uint8x16_t test_vceqq_p8(poly8x16_t v1, poly8x16_t v2) {
1243  // CHECK-LABEL: test_vceqq_p8
1244  return vceqq_p8(v1, v2);
1245  // CHECK: cmeq {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1246}
1247
1248
1249uint64x2_t test_vceqq_s64(int64x2_t v1, int64x2_t v2) {
1250  // CHECK-LABEL: test_vceqq_s64
1251  return vceqq_s64(v1, v2);
1252  // CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1253}
1254
1255uint64x2_t test_vceqq_u64(uint64x2_t v1, uint64x2_t v2) {
1256  // CHECK-LABEL: test_vceqq_u64
1257  return vceqq_u64(v1, v2);
1258  // CHECK: cmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1259}
1260
1261uint64x2_t test_vceqq_f64(float64x2_t v1, float64x2_t v2) {
1262  // CHECK-LABEL: test_vceqq_f64
1263  return vceqq_f64(v1, v2);
1264  // CHECK: fcmeq {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1265}
1266uint8x8_t test_vcge_s8(int8x8_t v1, int8x8_t v2) {
1267// CHECK-LABEL: test_vcge_s8
1268  return vcge_s8(v1, v2);
1269// CHECK: cmge {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1270}
1271
1272uint16x4_t test_vcge_s16(int16x4_t v1, int16x4_t v2) {
1273// CHECK-LABEL: test_vcge_s16
1274  return vcge_s16(v1, v2);
1275// CHECK: cmge {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1276}
1277
1278uint32x2_t test_vcge_s32(int32x2_t v1, int32x2_t v2) {
1279// CHECK-LABEL: test_vcge_s32
1280  return vcge_s32(v1, v2);
1281// CHECK: cmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1282}
1283
1284uint64x1_t test_vcge_s64(int64x1_t a, int64x1_t b) {
1285  // CHECK-LABEL: test_vcge_s64
1286  return vcge_s64(a, b);
1287  // CHECK: cmge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1288}
1289
1290uint64x1_t test_vcge_u64(uint64x1_t a, uint64x1_t b) {
1291  // CHECK-LABEL: test_vcge_u64
1292  return vcge_u64(a, b);
1293  // CHECK: cmhs {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1294}
1295
1296uint32x2_t test_vcge_f32(float32x2_t v1, float32x2_t v2) {
1297// CHECK-LABEL: test_vcge_f32
1298  return vcge_f32(v1, v2);
1299// CHECK: fcmge {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1300}
1301
1302uint64x1_t test_vcge_f64(float64x1_t a, float64x1_t b) {
1303  // CHECK-LABEL: test_vcge_f64
1304  return vcge_f64(a, b);
1305  // CHECK: fcmge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1306}
1307
1308uint8x8_t test_vcge_u8(uint8x8_t v1, uint8x8_t v2) {
1309// CHECK-LABEL: test_vcge_u8
1310  return vcge_u8(v1, v2);
1311// CHECK: cmhs {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1312}
1313
1314uint16x4_t test_vcge_u16(uint16x4_t v1, uint16x4_t v2) {
1315// CHECK-LABEL: test_vcge_u16
1316  return vcge_u16(v1, v2);
1317// CHECK: cmhs {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1318}
1319
1320uint32x2_t test_vcge_u32(uint32x2_t v1, uint32x2_t v2) {
1321// CHECK-LABEL: test_vcge_u32
1322  return vcge_u32(v1, v2);
1323// CHECK: cmhs {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1324}
1325
1326uint8x16_t test_vcgeq_s8(int8x16_t v1, int8x16_t v2) {
1327// CHECK-LABEL: test_vcgeq_s8
1328  return vcgeq_s8(v1, v2);
1329// CHECK: cmge {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1330}
1331
1332uint16x8_t test_vcgeq_s16(int16x8_t v1, int16x8_t v2) {
1333// CHECK-LABEL: test_vcgeq_s16
1334  return vcgeq_s16(v1, v2);
1335// CHECK: cmge {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1336}
1337
1338uint32x4_t test_vcgeq_s32(int32x4_t v1, int32x4_t v2) {
1339// CHECK-LABEL: test_vcgeq_s32
1340  return vcgeq_s32(v1, v2);
1341// CHECK: cmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1342}
1343
1344uint32x4_t test_vcgeq_f32(float32x4_t v1, float32x4_t v2) {
1345// CHECK-LABEL: test_vcgeq_f32
1346  return vcgeq_f32(v1, v2);
1347// CHECK: fcmge {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1348}
1349
1350uint8x16_t test_vcgeq_u8(uint8x16_t v1, uint8x16_t v2) {
1351// CHECK-LABEL: test_vcgeq_u8
1352  return vcgeq_u8(v1, v2);
1353// CHECK: cmhs {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1354}
1355
1356uint16x8_t test_vcgeq_u16(uint16x8_t v1, uint16x8_t v2) {
1357// CHECK-LABEL: test_vcgeq_u16
1358  return vcgeq_u16(v1, v2);
1359// CHECK: cmhs {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1360}
1361
1362uint32x4_t test_vcgeq_u32(uint32x4_t v1, uint32x4_t v2) {
1363// CHECK-LABEL: test_vcgeq_u32
1364  return vcgeq_u32(v1, v2);
1365// CHECK: cmhs {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1366}
1367
1368uint64x2_t test_vcgeq_s64(int64x2_t v1, int64x2_t v2) {
1369// CHECK-LABEL: test_vcgeq_s64
1370  return vcgeq_s64(v1, v2);
1371// CHECK: cmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1372}
1373
1374uint64x2_t test_vcgeq_u64(uint64x2_t v1, uint64x2_t v2) {
1375// CHECK-LABEL: test_vcgeq_u64
1376  return vcgeq_u64(v1, v2);
1377// CHECK: cmhs {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1378}
1379
1380uint64x2_t test_vcgeq_f64(float64x2_t v1, float64x2_t v2) {
1381// CHECK-LABEL: test_vcgeq_f64
1382  return vcgeq_f64(v1, v2);
1383// CHECK: fcmge {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1384}
1385
1386// Notes about vcle:
1387// LE condition predicate implemented as GE, so check reversed operands.
1388// Using registers other than v0, v1 are possible, but would be odd.
1389uint8x8_t test_vcle_s8(int8x8_t v1, int8x8_t v2) {
1390  // CHECK-LABEL: test_vcle_s8
1391  return vcle_s8(v1, v2);
1392  // CHECK: cmge {{v[0-9]+}}.8b, v1.8b, v0.8b
1393}
1394
1395uint16x4_t test_vcle_s16(int16x4_t v1, int16x4_t v2) {
1396  // CHECK-LABEL: test_vcle_s16
1397  return vcle_s16(v1, v2);
1398  // CHECK: cmge {{v[0-9]+}}.4h, v1.4h, v0.4h
1399}
1400
1401uint32x2_t test_vcle_s32(int32x2_t v1, int32x2_t v2) {
1402  // CHECK-LABEL: test_vcle_s32
1403  return vcle_s32(v1, v2);
1404  // CHECK: cmge {{v[0-9]+}}.2s, v1.2s, v0.2s
1405}
1406
1407uint64x1_t test_vcle_s64(int64x1_t a, int64x1_t b) {
1408  // CHECK-LABEL: test_vcle_s64
1409  return vcle_s64(a, b);
1410  // CHECK: cmge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1411}
1412
1413uint64x1_t test_vcle_u64(uint64x1_t a, uint64x1_t b) {
1414  // CHECK-LABEL: test_vcle_u64
1415  return vcle_u64(a, b);
1416  // CHECK: cmhs {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1417}
1418
1419uint32x2_t test_vcle_f32(float32x2_t v1, float32x2_t v2) {
1420  // CHECK-LABEL: test_vcle_f32
1421  return vcle_f32(v1, v2);
1422  // CHECK: fcmge {{v[0-9]+}}.2s, v1.2s, v0.2s
1423}
1424
1425uint64x1_t test_vcle_f64(float64x1_t a, float64x1_t b) {
1426  // CHECK-LABEL: test_vcle_f64
1427  return vcle_f64(a, b);
1428  // CHECK: fcmge {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1429}
1430
1431uint8x8_t test_vcle_u8(uint8x8_t v1, uint8x8_t v2) {
1432  // CHECK-LABEL: test_vcle_u8
1433  return vcle_u8(v1, v2);
1434  // CHECK: cmhs {{v[0-9]+}}.8b, v1.8b, v0.8b
1435}
1436
1437uint16x4_t test_vcle_u16(uint16x4_t v1, uint16x4_t v2) {
1438  // CHECK-LABEL: test_vcle_u16
1439  return vcle_u16(v1, v2);
1440  // CHECK: cmhs {{v[0-9]+}}.4h, v1.4h, v0.4h
1441}
1442
1443uint32x2_t test_vcle_u32(uint32x2_t v1, uint32x2_t v2) {
1444  // CHECK-LABEL: test_vcle_u32
1445  return vcle_u32(v1, v2);
1446  // CHECK: cmhs {{v[0-9]+}}.2s, v1.2s, v0.2s
1447}
1448
1449uint8x16_t test_vcleq_s8(int8x16_t v1, int8x16_t v2) {
1450  // CHECK-LABEL: test_vcleq_s8
1451  return vcleq_s8(v1, v2);
1452  // CHECK: cmge {{v[0-9]+}}.16b, v1.16b, v0.16b
1453}
1454
1455uint16x8_t test_vcleq_s16(int16x8_t v1, int16x8_t v2) {
1456  // CHECK-LABEL: test_vcleq_s16
1457  return vcleq_s16(v1, v2);
1458  // CHECK: cmge {{v[0-9]+}}.8h, v1.8h, v0.8h
1459}
1460
1461uint32x4_t test_vcleq_s32(int32x4_t v1, int32x4_t v2) {
1462  // CHECK-LABEL: test_vcleq_s32
1463  return vcleq_s32(v1, v2);
1464  // CHECK: cmge {{v[0-9]+}}.4s, v1.4s, v0.4s
1465}
1466
1467uint32x4_t test_vcleq_f32(float32x4_t v1, float32x4_t v2) {
1468  // CHECK-LABEL: test_vcleq_f32
1469  return vcleq_f32(v1, v2);
1470  // CHECK: fcmge {{v[0-9]+}}.4s, v1.4s, v0.4s
1471}
1472
1473uint8x16_t test_vcleq_u8(uint8x16_t v1, uint8x16_t v2) {
1474  // CHECK-LABEL: test_vcleq_u8
1475  return vcleq_u8(v1, v2);
1476  // CHECK: cmhs {{v[0-9]+}}.16b, v1.16b, v0.16b
1477}
1478
1479uint16x8_t test_vcleq_u16(uint16x8_t v1, uint16x8_t v2) {
1480  // CHECK-LABEL: test_vcleq_u16
1481  return vcleq_u16(v1, v2);
1482  // CHECK: cmhs {{v[0-9]+}}.8h, v1.8h, v0.8h
1483}
1484
1485uint32x4_t test_vcleq_u32(uint32x4_t v1, uint32x4_t v2) {
1486  // CHECK-LABEL: test_vcleq_u32
1487  return vcleq_u32(v1, v2);
1488  // CHECK: cmhs {{v[0-9]+}}.4s, v1.4s, v0.4s
1489}
1490
1491uint64x2_t test_vcleq_s64(int64x2_t v1, int64x2_t v2) {
1492  // CHECK-LABEL: test_vcleq_s64
1493  return vcleq_s64(v1, v2);
1494  // CHECK: cmge {{v[0-9]+}}.2d, v1.2d, v0.2d
1495}
1496
1497uint64x2_t test_vcleq_u64(uint64x2_t v1, uint64x2_t v2) {
1498  // CHECK-LABEL: test_vcleq_u64
1499  return vcleq_u64(v1, v2);
1500  // CHECK: cmhs {{v[0-9]+}}.2d, v1.2d, v0.2d
1501}
1502
1503uint64x2_t test_vcleq_f64(float64x2_t v1, float64x2_t v2) {
1504  // CHECK-LABEL: test_vcleq_f64
1505  return vcleq_f64(v1, v2);
1506  // CHECK: fcmge {{v[0-9]+}}.2d, v1.2d, v0.2d
1507}
1508
1509
1510uint8x8_t test_vcgt_s8(int8x8_t v1, int8x8_t v2) {
1511  // CHECK-LABEL: test_vcgt_s8
1512  return vcgt_s8(v1, v2);
1513  // CHECK: cmgt {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1514}
1515
1516uint16x4_t test_vcgt_s16(int16x4_t v1, int16x4_t v2) {
1517  // CHECK-LABEL: test_vcgt_s16
1518  return vcgt_s16(v1, v2);
1519  // CHECK: cmgt {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1520}
1521
1522uint32x2_t test_vcgt_s32(int32x2_t v1, int32x2_t v2) {
1523  // CHECK-LABEL: test_vcgt_s32
1524  return vcgt_s32(v1, v2);
1525  // CHECK: cmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1526}
1527
1528uint64x1_t test_vcgt_s64(int64x1_t a, int64x1_t b) {
1529  // CHECK-LABEL: test_vcgt_s64
1530  return vcgt_s64(a, b);
1531  // CHECK: cmgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1532}
1533
1534uint64x1_t test_vcgt_u64(uint64x1_t a, uint64x1_t b) {
1535  // CHECK-LABEL: test_vcgt_u64
1536  return vcgt_u64(a, b);
1537  // CHECK: cmhi {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1538}
1539
1540uint32x2_t test_vcgt_f32(float32x2_t v1, float32x2_t v2) {
1541  // CHECK-LABEL: test_vcgt_f32
1542  return vcgt_f32(v1, v2);
1543  // CHECK: fcmgt {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1544}
1545
1546uint64x1_t test_vcgt_f64(float64x1_t a, float64x1_t b) {
1547  // CHECK-LABEL: test_vcgt_f64
1548  return vcgt_f64(a, b);
1549  // CHECK: fcmgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1550}
1551
1552uint8x8_t test_vcgt_u8(uint8x8_t v1, uint8x8_t v2) {
1553  // CHECK-LABEL: test_vcgt_u8
1554  return vcgt_u8(v1, v2);
1555  // CHECK: cmhi {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1556}
1557
1558uint16x4_t test_vcgt_u16(uint16x4_t v1, uint16x4_t v2) {
1559  // CHECK-LABEL: test_vcgt_u16
1560  return vcgt_u16(v1, v2);
1561  // CHECK: cmhi {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1562}
1563
1564uint32x2_t test_vcgt_u32(uint32x2_t v1, uint32x2_t v2) {
1565  // CHECK-LABEL: test_vcgt_u32
1566  return vcgt_u32(v1, v2);
1567  // CHECK: cmhi {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1568}
1569
1570uint8x16_t test_vcgtq_s8(int8x16_t v1, int8x16_t v2) {
1571  // CHECK-LABEL: test_vcgtq_s8
1572  return vcgtq_s8(v1, v2);
1573  // CHECK: cmgt {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1574}
1575
1576uint16x8_t test_vcgtq_s16(int16x8_t v1, int16x8_t v2) {
1577  // CHECK-LABEL: test_vcgtq_s16
1578  return vcgtq_s16(v1, v2);
1579  // CHECK: cmgt {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1580}
1581
1582uint32x4_t test_vcgtq_s32(int32x4_t v1, int32x4_t v2) {
1583  // CHECK-LABEL: test_vcgtq_s32
1584  return vcgtq_s32(v1, v2);
1585  // CHECK: cmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1586}
1587
1588uint32x4_t test_vcgtq_f32(float32x4_t v1, float32x4_t v2) {
1589  // CHECK-LABEL: test_vcgtq_f32
1590  return vcgtq_f32(v1, v2);
1591  // CHECK: fcmgt {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1592}
1593
1594uint8x16_t test_vcgtq_u8(uint8x16_t v1, uint8x16_t v2) {
1595  // CHECK-LABEL: test_vcgtq_u8
1596  return vcgtq_u8(v1, v2);
1597  // CHECK: cmhi {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1598}
1599
1600uint16x8_t test_vcgtq_u16(uint16x8_t v1, uint16x8_t v2) {
1601  // CHECK-LABEL: test_vcgtq_u16
1602  return vcgtq_u16(v1, v2);
1603  // CHECK: cmhi {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1604}
1605
1606uint32x4_t test_vcgtq_u32(uint32x4_t v1, uint32x4_t v2) {
1607  // CHECK-LABEL: test_vcgtq_u32
1608  return vcgtq_u32(v1, v2);
1609  // CHECK: cmhi {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1610}
1611
1612uint64x2_t test_vcgtq_s64(int64x2_t v1, int64x2_t v2) {
1613  // CHECK-LABEL: test_vcgtq_s64
1614  return vcgtq_s64(v1, v2);
1615  // CHECK: cmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1616}
1617
1618uint64x2_t test_vcgtq_u64(uint64x2_t v1, uint64x2_t v2) {
1619  // CHECK-LABEL: test_vcgtq_u64
1620  return vcgtq_u64(v1, v2);
1621  // CHECK: cmhi {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1622}
1623
1624uint64x2_t test_vcgtq_f64(float64x2_t v1, float64x2_t v2) {
1625  // CHECK-LABEL: test_vcgtq_f64
1626  return vcgtq_f64(v1, v2);
1627  // CHECK: fcmgt {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
1628}
1629
1630
1631// Notes about vclt:
1632// LT condition predicate implemented as GT, so check reversed operands.
1633// Using registers other than v0, v1 are possible, but would be odd.
1634
1635uint8x8_t test_vclt_s8(int8x8_t v1, int8x8_t v2) {
1636  // CHECK-LABEL: test_vclt_s8
1637  return vclt_s8(v1, v2);
1638  // CHECK: cmgt {{v[0-9]+}}.8b, v1.8b, v0.8b
1639}
1640
1641uint16x4_t test_vclt_s16(int16x4_t v1, int16x4_t v2) {
1642  // CHECK-LABEL: test_vclt_s16
1643  return vclt_s16(v1, v2);
1644  // CHECK: cmgt {{v[0-9]+}}.4h, v1.4h, v0.4h
1645}
1646
1647uint32x2_t test_vclt_s32(int32x2_t v1, int32x2_t v2) {
1648  // CHECK-LABEL: test_vclt_s32
1649  return vclt_s32(v1, v2);
1650  // CHECK: cmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
1651}
1652
1653uint64x1_t test_vclt_s64(int64x1_t a, int64x1_t b) {
1654  // CHECK-LABEL: test_vclt_s64
1655  return vclt_s64(a, b);
1656  // CHECK: cmgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1657}
1658
1659uint64x1_t test_vclt_u64(uint64x1_t a, uint64x1_t b) {
1660  // CHECK-LABEL: test_vclt_u64
1661  return vclt_u64(a, b);
1662  // CHECK: cmhi {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1663}
1664
1665uint32x2_t test_vclt_f32(float32x2_t v1, float32x2_t v2) {
1666  // CHECK-LABEL: test_vclt_f32
1667  return vclt_f32(v1, v2);
1668  // CHECK: fcmgt {{v[0-9]+}}.2s, v1.2s, v0.2s
1669}
1670
1671uint64x1_t test_vclt_f64(float64x1_t a, float64x1_t b) {
1672  // CHECK-LABEL: test_vclt_f64
1673  return vclt_f64(a, b);
1674  // CHECK: fcmgt {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1675}
1676
1677uint8x8_t test_vclt_u8(uint8x8_t v1, uint8x8_t v2) {
1678  // CHECK-LABEL: test_vclt_u8
1679  return vclt_u8(v1, v2);
1680  // CHECK: cmhi {{v[0-9]+}}.8b, v1.8b, v0.8b
1681}
1682
1683uint16x4_t test_vclt_u16(uint16x4_t v1, uint16x4_t v2) {
1684  // CHECK-LABEL: test_vclt_u16
1685  return vclt_u16(v1, v2);
1686  // CHECK: cmhi {{v[0-9]+}}.4h, v1.4h, v0.4h
1687}
1688
1689uint32x2_t test_vclt_u32(uint32x2_t v1, uint32x2_t v2) {
1690  // CHECK-LABEL: test_vclt_u32
1691  return vclt_u32(v1, v2);
1692  // CHECK: cmhi {{v[0-9]+}}.2s, v1.2s, v0.2s
1693}
1694
1695uint8x16_t test_vcltq_s8(int8x16_t v1, int8x16_t v2) {
1696  // CHECK-LABEL: test_vcltq_s8
1697  return vcltq_s8(v1, v2);
1698  // CHECK: cmgt {{v[0-9]+}}.16b, v1.16b, v0.16b
1699}
1700
1701uint16x8_t test_vcltq_s16(int16x8_t v1, int16x8_t v2) {
1702  // CHECK-LABEL: test_vcltq_s16
1703  return vcltq_s16(v1, v2);
1704  // CHECK: cmgt {{v[0-9]+}}.8h, v1.8h, v0.8h
1705}
1706
1707uint32x4_t test_vcltq_s32(int32x4_t v1, int32x4_t v2) {
1708  // CHECK-LABEL: test_vcltq_s32
1709  return vcltq_s32(v1, v2);
1710  // CHECK: cmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
1711}
1712
1713uint32x4_t test_vcltq_f32(float32x4_t v1, float32x4_t v2) {
1714  // CHECK-LABEL: test_vcltq_f32
1715  return vcltq_f32(v1, v2);
1716  // CHECK: fcmgt {{v[0-9]+}}.4s, v1.4s, v0.4s
1717}
1718
1719uint8x16_t test_vcltq_u8(uint8x16_t v1, uint8x16_t v2) {
1720  // CHECK-LABEL: test_vcltq_u8
1721  return vcltq_u8(v1, v2);
1722  // CHECK: cmhi {{v[0-9]+}}.16b, v1.16b, v0.16b
1723}
1724
1725uint16x8_t test_vcltq_u16(uint16x8_t v1, uint16x8_t v2) {
1726  // CHECK-LABEL: test_vcltq_u16
1727  return vcltq_u16(v1, v2);
1728  // CHECK: cmhi {{v[0-9]+}}.8h, v1.8h, v0.8h
1729}
1730
1731uint32x4_t test_vcltq_u32(uint32x4_t v1, uint32x4_t v2) {
1732  // CHECK-LABEL: test_vcltq_u32
1733  return vcltq_u32(v1, v2);
1734  // CHECK: cmhi {{v[0-9]+}}.4s, v1.4s, v0.4s
1735}
1736
1737uint64x2_t test_vcltq_s64(int64x2_t v1, int64x2_t v2) {
1738  // CHECK-LABEL: test_vcltq_s64
1739  return vcltq_s64(v1, v2);
1740  // CHECK: cmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
1741}
1742
1743uint64x2_t test_vcltq_u64(uint64x2_t v1, uint64x2_t v2) {
1744  // CHECK-LABEL: test_vcltq_u64
1745  return vcltq_u64(v1, v2);
1746  // CHECK: cmhi {{v[0-9]+}}.2d, v1.2d, v0.2d
1747}
1748
1749uint64x2_t test_vcltq_f64(float64x2_t v1, float64x2_t v2) {
1750  // CHECK-LABEL: test_vcltq_f64
1751  return vcltq_f64(v1, v2);
1752  // CHECK: fcmgt {{v[0-9]+}}.2d, v1.2d, v0.2d
1753}
1754
1755
1756int8x8_t test_vhadd_s8(int8x8_t v1, int8x8_t v2) {
1757// CHECK-LABEL: test_vhadd_s8
1758  return vhadd_s8(v1, v2);
1759  // CHECK: shadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1760}
1761
1762int16x4_t test_vhadd_s16(int16x4_t v1, int16x4_t v2) {
1763// CHECK-LABEL: test_vhadd_s16
1764  return vhadd_s16(v1, v2);
1765  // CHECK: shadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1766}
1767
1768int32x2_t test_vhadd_s32(int32x2_t v1, int32x2_t v2) {
1769// CHECK-LABEL: test_vhadd_s32
1770  return vhadd_s32(v1, v2);
1771  // CHECK: shadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1772}
1773
1774uint8x8_t test_vhadd_u8(uint8x8_t v1, uint8x8_t v2) {
1775// CHECK-LABEL: test_vhadd_u8
1776  return vhadd_u8(v1, v2);
1777  // CHECK: uhadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1778}
1779
1780uint16x4_t test_vhadd_u16(uint16x4_t v1, uint16x4_t v2) {
1781// CHECK-LABEL: test_vhadd_u16
1782  return vhadd_u16(v1, v2);
1783  // CHECK: uhadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1784}
1785
1786uint32x2_t test_vhadd_u32(uint32x2_t v1, uint32x2_t v2) {
1787// CHECK-LABEL: test_vhadd_u32
1788  return vhadd_u32(v1, v2);
1789  // CHECK: uhadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1790}
1791
1792int8x16_t test_vhaddq_s8(int8x16_t v1, int8x16_t v2) {
1793// CHECK-LABEL: test_vhaddq_s8
1794  return vhaddq_s8(v1, v2);
1795  // CHECK: shadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1796}
1797
1798int16x8_t test_vhaddq_s16(int16x8_t v1, int16x8_t v2) {
1799// CHECK-LABEL: test_vhaddq_s16
1800  return vhaddq_s16(v1, v2);
1801  // CHECK: shadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1802}
1803
1804int32x4_t test_vhaddq_s32(int32x4_t v1, int32x4_t v2) {
1805// CHECK-LABEL: test_vhaddq_s32
1806  return vhaddq_s32(v1, v2);
1807  // CHECK: shadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1808}
1809
1810uint8x16_t test_vhaddq_u8(uint8x16_t v1, uint8x16_t v2) {
1811// CHECK-LABEL: test_vhaddq_u8
1812  return vhaddq_u8(v1, v2);
1813  // CHECK: uhadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1814}
1815
1816uint16x8_t test_vhaddq_u16(uint16x8_t v1, uint16x8_t v2) {
1817// CHECK-LABEL: test_vhaddq_u16
1818  return vhaddq_u16(v1, v2);
1819  // CHECK: uhadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1820}
1821
1822uint32x4_t test_vhaddq_u32(uint32x4_t v1, uint32x4_t v2) {
1823// CHECK-LABEL: test_vhaddq_u32
1824  return vhaddq_u32(v1, v2);
1825  // CHECK: uhadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1826}
1827
1828
1829int8x8_t test_vhsub_s8(int8x8_t v1, int8x8_t v2) {
1830// CHECK-LABEL: test_vhsub_s8
1831  return vhsub_s8(v1, v2);
1832  // CHECK: shsub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1833}
1834
1835int16x4_t test_vhsub_s16(int16x4_t v1, int16x4_t v2) {
1836// CHECK-LABEL: test_vhsub_s16
1837  return vhsub_s16(v1, v2);
1838  // CHECK: shsub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1839}
1840
1841int32x2_t test_vhsub_s32(int32x2_t v1, int32x2_t v2) {
1842// CHECK-LABEL: test_vhsub_s32
1843  return vhsub_s32(v1, v2);
1844  // CHECK: shsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1845}
1846
1847uint8x8_t test_vhsub_u8(uint8x8_t v1, uint8x8_t v2) {
1848// CHECK-LABEL: test_vhsub_u8
1849  return vhsub_u8(v1, v2);
1850  // CHECK: uhsub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1851}
1852
1853uint16x4_t test_vhsub_u16(uint16x4_t v1, uint16x4_t v2) {
1854// CHECK-LABEL: test_vhsub_u16
1855  return vhsub_u16(v1, v2);
1856  // CHECK: uhsub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1857}
1858
1859uint32x2_t test_vhsub_u32(uint32x2_t v1, uint32x2_t v2) {
1860// CHECK-LABEL: test_vhsub_u32
1861  return vhsub_u32(v1, v2);
1862  // CHECK: uhsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1863}
1864
1865int8x16_t test_vhsubq_s8(int8x16_t v1, int8x16_t v2) {
1866// CHECK-LABEL: test_vhsubq_s8
1867  return vhsubq_s8(v1, v2);
1868  // CHECK: shsub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1869}
1870
1871int16x8_t test_vhsubq_s16(int16x8_t v1, int16x8_t v2) {
1872// CHECK-LABEL: test_vhsubq_s16
1873  return vhsubq_s16(v1, v2);
1874  // CHECK: shsub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1875}
1876
1877int32x4_t test_vhsubq_s32(int32x4_t v1, int32x4_t v2) {
1878// CHECK-LABEL: test_vhsubq_s32
1879  return vhsubq_s32(v1, v2);
1880  // CHECK: shsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1881}
1882
1883uint8x16_t test_vhsubq_u8(uint8x16_t v1, uint8x16_t v2) {
1884// CHECK-LABEL: test_vhsubq_u8
1885  return vhsubq_u8(v1, v2);
1886  // CHECK: uhsub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1887}
1888
1889uint16x8_t test_vhsubq_u16(uint16x8_t v1, uint16x8_t v2) {
1890// CHECK-LABEL: test_vhsubq_u16
1891  return vhsubq_u16(v1, v2);
1892  // CHECK: uhsub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1893}
1894
1895uint32x4_t test_vhsubq_u32(uint32x4_t v1, uint32x4_t v2) {
1896// CHECK-LABEL: test_vhsubq_u32
1897  return vhsubq_u32(v1, v2);
1898  // CHECK: uhsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1899}
1900
1901
1902int8x8_t test_vrhadd_s8(int8x8_t v1, int8x8_t v2) {
1903// CHECK-LABEL: test_vrhadd_s8
1904  return vrhadd_s8(v1, v2);
1905// CHECK: srhadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1906}
1907
1908int16x4_t test_vrhadd_s16(int16x4_t v1, int16x4_t v2) {
1909// CHECK-LABEL: test_vrhadd_s16
1910  return vrhadd_s16(v1, v2);
1911// CHECK: srhadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1912}
1913
1914int32x2_t test_vrhadd_s32(int32x2_t v1, int32x2_t v2) {
1915// CHECK-LABEL: test_vrhadd_s32
1916  return vrhadd_s32(v1, v2);
1917// CHECK: srhadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1918}
1919
1920uint8x8_t test_vrhadd_u8(uint8x8_t v1, uint8x8_t v2) {
1921// CHECK-LABEL: test_vrhadd_u8
1922  return vrhadd_u8(v1, v2);
1923// CHECK: urhadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1924}
1925
1926uint16x4_t test_vrhadd_u16(uint16x4_t v1, uint16x4_t v2) {
1927// CHECK-LABEL: test_vrhadd_u16
1928  return vrhadd_u16(v1, v2);
1929// CHECK: urhadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1930}
1931
1932uint32x2_t test_vrhadd_u32(uint32x2_t v1, uint32x2_t v2) {
1933// CHECK-LABEL: test_vrhadd_u32
1934  return vrhadd_u32(v1, v2);
1935// CHECK: urhadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1936}
1937
1938int8x16_t test_vrhaddq_s8(int8x16_t v1, int8x16_t v2) {
1939// CHECK-LABEL: test_vrhaddq_s8
1940  return vrhaddq_s8(v1, v2);
1941// CHECK: srhadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1942}
1943
1944int16x8_t test_vrhaddq_s16(int16x8_t v1, int16x8_t v2) {
1945// CHECK-LABEL: test_vrhaddq_s16
1946  return vrhaddq_s16(v1, v2);
1947// CHECK: srhadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1948}
1949
1950int32x4_t test_vrhaddq_s32(int32x4_t v1, int32x4_t v2) {
1951// CHECK-LABEL: test_vrhaddq_s32
1952  return vrhaddq_s32(v1, v2);
1953// CHECK: srhadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1954}
1955
1956uint8x16_t test_vrhaddq_u8(uint8x16_t v1, uint8x16_t v2) {
1957// CHECK-LABEL: test_vrhaddq_u8
1958  return vrhaddq_u8(v1, v2);
1959// CHECK: urhadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
1960}
1961
1962uint16x8_t test_vrhaddq_u16(uint16x8_t v1, uint16x8_t v2) {
1963// CHECK-LABEL: test_vrhaddq_u16
1964  return vrhaddq_u16(v1, v2);
1965// CHECK: urhadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
1966}
1967
1968uint32x4_t test_vrhaddq_u32(uint32x4_t v1, uint32x4_t v2) {
1969// CHECK-LABEL: test_vrhaddq_u32
1970  return vrhaddq_u32(v1, v2);
1971// CHECK: urhadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
1972}
1973int8x8_t test_vqadd_s8(int8x8_t a, int8x8_t b) {
1974// CHECK-LABEL: test_vqadd_s8
1975  return vqadd_s8(a, b);
1976  // CHECK: sqadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
1977}
1978
1979int16x4_t test_vqadd_s16(int16x4_t a, int16x4_t b) {
1980// CHECK-LABEL: test_vqadd_s16
1981  return vqadd_s16(a, b);
1982  // CHECK: sqadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
1983}
1984
1985int32x2_t test_vqadd_s32(int32x2_t a, int32x2_t b) {
1986// CHECK-LABEL: test_vqadd_s32
1987  return vqadd_s32(a, b);
1988  // CHECK: sqadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
1989}
1990
1991int64x1_t test_vqadd_s64(int64x1_t a, int64x1_t b) {
1992// CHECK-LABEL: test_vqadd_s64
1993  return vqadd_s64(a, b);
1994// CHECK:  sqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
1995}
1996
1997uint8x8_t test_vqadd_u8(uint8x8_t a, uint8x8_t b) {
1998// CHECK-LABEL: test_vqadd_u8
1999  return vqadd_u8(a, b);
2000  // CHECK: uqadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2001}
2002
2003uint16x4_t test_vqadd_u16(uint16x4_t a, uint16x4_t b) {
2004// CHECK-LABEL: test_vqadd_u16
2005  return vqadd_u16(a, b);
2006  // CHECK: uqadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2007}
2008
2009uint32x2_t test_vqadd_u32(uint32x2_t a, uint32x2_t b) {
2010// CHECK-LABEL: test_vqadd_u32
2011  return vqadd_u32(a, b);
2012  // CHECK: uqadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2013}
2014
2015uint64x1_t test_vqadd_u64(uint64x1_t a, uint64x1_t b) {
2016// CHECK:  test_vqadd_u64
2017  return vqadd_u64(a, b);
2018// CHECK:  uqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2019}
2020
2021int8x16_t test_vqaddq_s8(int8x16_t a, int8x16_t b) {
2022// CHECK-LABEL: test_vqaddq_s8
2023  return vqaddq_s8(a, b);
2024  // CHECK: sqadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2025}
2026
2027int16x8_t test_vqaddq_s16(int16x8_t a, int16x8_t b) {
2028// CHECK-LABEL: test_vqaddq_s16
2029  return vqaddq_s16(a, b);
2030  // CHECK: sqadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2031}
2032
2033int32x4_t test_vqaddq_s32(int32x4_t a, int32x4_t b) {
2034// CHECK-LABEL: test_vqaddq_s32
2035  return vqaddq_s32(a, b);
2036  // CHECK: sqadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2037}
2038
2039int64x2_t test_vqaddq_s64(int64x2_t a, int64x2_t b) {
2040// CHECK-LABEL: test_vqaddq_s64
2041  return vqaddq_s64(a, b);
2042// CHECK: sqadd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2043}
2044
2045uint8x16_t test_vqaddq_u8(uint8x16_t a, uint8x16_t b) {
2046// CHECK-LABEL: test_vqaddq_u8
2047  return vqaddq_u8(a, b);
2048  // CHECK: uqadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2049}
2050
2051uint16x8_t test_vqaddq_u16(uint16x8_t a, uint16x8_t b) {
2052// CHECK-LABEL: test_vqaddq_u16
2053  return vqaddq_u16(a, b);
2054  // CHECK: uqadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2055}
2056
2057uint32x4_t test_vqaddq_u32(uint32x4_t a, uint32x4_t b) {
2058// CHECK-LABEL: test_vqaddq_u32
2059  return vqaddq_u32(a, b);
2060  // CHECK: uqadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2061}
2062
2063uint64x2_t test_vqaddq_u64(uint64x2_t a, uint64x2_t b) {
2064// CHECK-LABEL: test_vqaddq_u64
2065  return vqaddq_u64(a, b);
2066// CHECK: uqadd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2067}
2068
2069
2070int8x8_t test_vqsub_s8(int8x8_t a, int8x8_t b) {
2071// CHECK-LABEL: test_vqsub_s8
2072  return vqsub_s8(a, b);
2073  // CHECK: sqsub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2074}
2075
2076int16x4_t test_vqsub_s16(int16x4_t a, int16x4_t b) {
2077// CHECK-LABEL: test_vqsub_s16
2078  return vqsub_s16(a, b);
2079  // CHECK: sqsub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2080}
2081
2082int32x2_t test_vqsub_s32(int32x2_t a, int32x2_t b) {
2083// CHECK-LABEL: test_vqsub_s32
2084  return vqsub_s32(a, b);
2085  // CHECK: sqsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2086}
2087
2088int64x1_t test_vqsub_s64(int64x1_t a, int64x1_t b) {
2089// CHECK-LABEL: test_vqsub_s64
2090  return vqsub_s64(a, b);
2091// CHECK: sqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2092}
2093
2094uint8x8_t test_vqsub_u8(uint8x8_t a, uint8x8_t b) {
2095// CHECK-LABEL: test_vqsub_u8
2096  return vqsub_u8(a, b);
2097  // CHECK: uqsub {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2098}
2099
2100uint16x4_t test_vqsub_u16(uint16x4_t a, uint16x4_t b) {
2101// CHECK-LABEL: test_vqsub_u16
2102  return vqsub_u16(a, b);
2103  // CHECK: uqsub {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2104}
2105
2106uint32x2_t test_vqsub_u32(uint32x2_t a, uint32x2_t b) {
2107// CHECK-LABEL: test_vqsub_u32
2108  return vqsub_u32(a, b);
2109  // CHECK: uqsub {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2110}
2111
2112uint64x1_t test_vqsub_u64(uint64x1_t a, uint64x1_t b) {
2113// CHECK-LABEL: test_vqsub_u64
2114  return vqsub_u64(a, b);
2115// CHECK:  uqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2116}
2117
2118int8x16_t test_vqsubq_s8(int8x16_t a, int8x16_t b) {
2119// CHECK-LABEL: test_vqsubq_s8
2120  return vqsubq_s8(a, b);
2121  // CHECK: sqsub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2122}
2123
2124int16x8_t test_vqsubq_s16(int16x8_t a, int16x8_t b) {
2125// CHECK-LABEL: test_vqsubq_s16
2126  return vqsubq_s16(a, b);
2127  // CHECK: sqsub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2128}
2129
2130int32x4_t test_vqsubq_s32(int32x4_t a, int32x4_t b) {
2131// CHECK-LABEL: test_vqsubq_s32
2132  return vqsubq_s32(a, b);
2133  // CHECK: sqsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2134}
2135
2136int64x2_t test_vqsubq_s64(int64x2_t a, int64x2_t b) {
2137// CHECK-LABEL: test_vqsubq_s64
2138  return vqsubq_s64(a, b);
2139// CHECK: sqsub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2140}
2141
2142uint8x16_t test_vqsubq_u8(uint8x16_t a, uint8x16_t b) {
2143// CHECK-LABEL: test_vqsubq_u8
2144  return vqsubq_u8(a, b);
2145  // CHECK: uqsub {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2146}
2147
2148uint16x8_t test_vqsubq_u16(uint16x8_t a, uint16x8_t b) {
2149// CHECK-LABEL: test_vqsubq_u16
2150  return vqsubq_u16(a, b);
2151  // CHECK: uqsub {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2152}
2153
2154uint32x4_t test_vqsubq_u32(uint32x4_t a, uint32x4_t b) {
2155// CHECK-LABEL: test_vqsubq_u32
2156  return vqsubq_u32(a, b);
2157  // CHECK: uqsub {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2158}
2159
2160uint64x2_t test_vqsubq_u64(uint64x2_t a, uint64x2_t b) {
2161// CHECK-LABEL: test_vqsubq_u64
2162  return vqsubq_u64(a, b);
2163  // CHECK: uqsub {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2164}
2165
2166
2167int8x8_t test_vshl_s8(int8x8_t a, int8x8_t b) {
2168// CHECK-LABEL: test_vshl_s8
2169  return vshl_s8(a, b);
2170// CHECK: sshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2171}
2172
2173int16x4_t test_vshl_s16(int16x4_t a, int16x4_t b) {
2174// CHECK-LABEL: test_vshl_s16
2175  return vshl_s16(a, b);
2176// CHECK: sshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2177}
2178
2179int32x2_t test_vshl_s32(int32x2_t a, int32x2_t b) {
2180// CHECK-LABEL: test_vshl_s32
2181  return vshl_s32(a, b);
2182// CHECK: sshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2183}
2184
2185int64x1_t test_vshl_s64(int64x1_t a, int64x1_t b) {
2186// CHECK-LABEL: test_vshl_s64
2187  return vshl_s64(a, b);
2188// CHECK: sshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2189}
2190
2191uint8x8_t test_vshl_u8(uint8x8_t a, int8x8_t b) {
2192// CHECK-LABEL: test_vshl_u8
2193  return vshl_u8(a, b);
2194// CHECK: ushl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2195}
2196
2197uint16x4_t test_vshl_u16(uint16x4_t a, int16x4_t b) {
2198// CHECK-LABEL: test_vshl_u16
2199  return vshl_u16(a, b);
2200// CHECK: ushl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2201}
2202
2203uint32x2_t test_vshl_u32(uint32x2_t a, int32x2_t b) {
2204// CHECK-LABEL: test_vshl_u32
2205  return vshl_u32(a, b);
2206// CHECK: ushl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2207}
2208
2209uint64x1_t test_vshl_u64(uint64x1_t a, int64x1_t b) {
2210// CHECK-LABEL: test_vshl_u64
2211  return vshl_u64(a, b);
2212// CHECK: ushl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2213}
2214
2215int8x16_t test_vshlq_s8(int8x16_t a, int8x16_t b) {
2216// CHECK-LABEL: test_vshlq_s8
2217  return vshlq_s8(a, b);
2218// CHECK: sshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2219}
2220
2221int16x8_t test_vshlq_s16(int16x8_t a, int16x8_t b) {
2222// CHECK-LABEL: test_vshlq_s16
2223  return vshlq_s16(a, b);
2224// CHECK: sshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2225}
2226
2227int32x4_t test_vshlq_s32(int32x4_t a, int32x4_t b) {
2228// CHECK-LABEL: test_vshlq_s32
2229  return vshlq_s32(a, b);
2230// CHECK: sshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2231}
2232
2233int64x2_t test_vshlq_s64(int64x2_t a, int64x2_t b) {
2234// CHECK-LABEL: test_vshlq_s64
2235  return vshlq_s64(a, b);
2236// CHECK: sshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2237}
2238
2239uint8x16_t test_vshlq_u8(uint8x16_t a, int8x16_t b) {
2240// CHECK-LABEL: test_vshlq_u8
2241  return vshlq_u8(a, b);
2242// CHECK: ushl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2243}
2244
2245uint16x8_t test_vshlq_u16(uint16x8_t a, int16x8_t b) {
2246// CHECK-LABEL: test_vshlq_u16
2247  return vshlq_u16(a, b);
2248// CHECK: ushl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2249}
2250
2251uint32x4_t test_vshlq_u32(uint32x4_t a, int32x4_t b) {
2252// CHECK-LABEL: test_vshlq_u32
2253  return vshlq_u32(a, b);
2254// CHECK: ushl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2255}
2256
2257uint64x2_t test_vshlq_u64(uint64x2_t a, int64x2_t b) {
2258// CHECK-LABEL: test_vshlq_u64
2259  return vshlq_u64(a, b);
2260// CHECK: ushl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2261}
2262
2263
2264int8x8_t test_vqshl_s8(int8x8_t a, int8x8_t b) {
2265// CHECK-LABEL: test_vqshl_s8
2266  return vqshl_s8(a, b);
2267// CHECK: sqshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2268}
2269
2270int16x4_t test_vqshl_s16(int16x4_t a, int16x4_t b) {
2271// CHECK-LABEL: test_vqshl_s16
2272  return vqshl_s16(a, b);
2273// CHECK: sqshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2274}
2275
2276int32x2_t test_vqshl_s32(int32x2_t a, int32x2_t b) {
2277// CHECK-LABEL: test_vqshl_s32
2278  return vqshl_s32(a, b);
2279// CHECK: sqshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2280}
2281
2282int64x1_t test_vqshl_s64(int64x1_t a, int64x1_t b) {
2283// CHECK-LABEL: test_vqshl_s64
2284  return vqshl_s64(a, b);
2285// CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2286}
2287
2288uint8x8_t test_vqshl_u8(uint8x8_t a, int8x8_t b) {
2289// CHECK-LABEL: test_vqshl_u8
2290  return vqshl_u8(a, b);
2291// CHECK: uqshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2292}
2293
2294uint16x4_t test_vqshl_u16(uint16x4_t a, int16x4_t b) {
2295// CHECK-LABEL: test_vqshl_u16
2296  return vqshl_u16(a, b);
2297// CHECK: uqshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2298}
2299
2300uint32x2_t test_vqshl_u32(uint32x2_t a, int32x2_t b) {
2301// CHECK-LABEL: test_vqshl_u32
2302  return vqshl_u32(a, b);
2303// CHECK: uqshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2304}
2305
2306uint64x1_t test_vqshl_u64(uint64x1_t a, int64x1_t b) {
2307// CHECK-LABEL: test_vqshl_u64
2308  return vqshl_u64(a, b);
2309// CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2310}
2311
2312int8x16_t test_vqshlq_s8(int8x16_t a, int8x16_t b) {
2313// CHECK-LABEL: test_vqshlq_s8
2314  return vqshlq_s8(a, b);
2315// CHECK: sqshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2316}
2317
2318int16x8_t test_vqshlq_s16(int16x8_t a, int16x8_t b) {
2319// CHECK-LABEL: test_vqshlq_s16
2320  return vqshlq_s16(a, b);
2321// CHECK: sqshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2322}
2323
2324int32x4_t test_vqshlq_s32(int32x4_t a, int32x4_t b) {
2325// CHECK-LABEL: test_vqshlq_s32
2326  return vqshlq_s32(a, b);
2327// CHECK: sqshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2328}
2329
2330int64x2_t test_vqshlq_s64(int64x2_t a, int64x2_t b) {
2331// CHECK-LABEL: test_vqshlq_s64
2332  return vqshlq_s64(a, b);
2333// CHECK: sqshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2334}
2335
2336uint8x16_t test_vqshlq_u8(uint8x16_t a, int8x16_t b) {
2337// CHECK-LABEL: test_vqshlq_u8
2338  return vqshlq_u8(a, b);
2339// CHECK: uqshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2340}
2341
2342uint16x8_t test_vqshlq_u16(uint16x8_t a, int16x8_t b) {
2343// CHECK-LABEL: test_vqshlq_u16
2344  return vqshlq_u16(a, b);
2345// CHECK: uqshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2346}
2347
2348uint32x4_t test_vqshlq_u32(uint32x4_t a, int32x4_t b) {
2349// CHECK-LABEL: test_vqshlq_u32
2350  return vqshlq_u32(a, b);
2351// CHECK: uqshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2352}
2353
2354uint64x2_t test_vqshlq_u64(uint64x2_t a, int64x2_t b) {
2355// CHECK-LABEL: test_vqshlq_u64
2356  return vqshlq_u64(a, b);
2357// CHECK: uqshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2358}
2359
2360int8x8_t test_vrshl_s8(int8x8_t a, int8x8_t b) {
2361// CHECK-LABEL: test_vrshl_s8
2362  return vrshl_s8(a, b);
2363// CHECK: srshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2364}
2365
2366int16x4_t test_vrshl_s16(int16x4_t a, int16x4_t b) {
2367// CHECK-LABEL: test_vrshl_s16
2368  return vrshl_s16(a, b);
2369// CHECK: srshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2370}
2371
2372int32x2_t test_vrshl_s32(int32x2_t a, int32x2_t b) {
2373// CHECK-LABEL: test_vrshl_s32
2374  return vrshl_s32(a, b);
2375// CHECK: srshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2376}
2377
2378int64x1_t test_vrshl_s64(int64x1_t a, int64x1_t b) {
2379// CHECK-LABEL: test_vrshl_s64
2380  return vrshl_s64(a, b);
2381// CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2382}
2383
2384uint8x8_t test_vrshl_u8(uint8x8_t a, int8x8_t b) {
2385// CHECK-LABEL: test_vrshl_u8
2386  return vrshl_u8(a, b);
2387// CHECK: urshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2388}
2389
2390uint16x4_t test_vrshl_u16(uint16x4_t a, int16x4_t b) {
2391// CHECK-LABEL: test_vrshl_u16
2392  return vrshl_u16(a, b);
2393// CHECK: urshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2394}
2395
2396uint32x2_t test_vrshl_u32(uint32x2_t a, int32x2_t b) {
2397// CHECK-LABEL: test_vrshl_u32
2398  return vrshl_u32(a, b);
2399// CHECK: urshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2400}
2401
2402uint64x1_t test_vrshl_u64(uint64x1_t a, int64x1_t b) {
2403// CHECK-LABEL: test_vrshl_u64
2404  return vrshl_u64(a, b);
2405// CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2406}
2407
2408int8x16_t test_vrshlq_s8(int8x16_t a, int8x16_t b) {
2409// CHECK-LABEL: test_vrshlq_s8
2410  return vrshlq_s8(a, b);
2411// CHECK: srshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2412}
2413
2414int16x8_t test_vrshlq_s16(int16x8_t a, int16x8_t b) {
2415// CHECK-LABEL: test_vrshlq_s16
2416  return vrshlq_s16(a, b);
2417// CHECK: srshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2418}
2419
2420int32x4_t test_vrshlq_s32(int32x4_t a, int32x4_t b) {
2421// CHECK-LABEL: test_vrshlq_s32
2422  return vrshlq_s32(a, b);
2423// CHECK: srshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2424}
2425
2426int64x2_t test_vrshlq_s64(int64x2_t a, int64x2_t b) {
2427// CHECK-LABEL: test_vrshlq_s64
2428  return vrshlq_s64(a, b);
2429// CHECK: srshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2430}
2431
2432uint8x16_t test_vrshlq_u8(uint8x16_t a, int8x16_t b) {
2433// CHECK-LABEL: test_vrshlq_u8
2434  return vrshlq_u8(a, b);
2435// CHECK: urshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2436}
2437
2438uint16x8_t test_vrshlq_u16(uint16x8_t a, int16x8_t b) {
2439// CHECK-LABEL: test_vrshlq_u16
2440  return vrshlq_u16(a, b);
2441// CHECK: urshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2442}
2443
2444uint32x4_t test_vrshlq_u32(uint32x4_t a, int32x4_t b) {
2445// CHECK-LABEL: test_vrshlq_u32
2446  return vrshlq_u32(a, b);
2447// CHECK: urshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2448}
2449
2450uint64x2_t test_vrshlq_u64(uint64x2_t a, int64x2_t b) {
2451// CHECK-LABEL: test_vrshlq_u64
2452  return vrshlq_u64(a, b);
2453// CHECK: urshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2454}
2455
2456
2457int8x8_t test_vqrshl_s8(int8x8_t a, int8x8_t b) {
2458// CHECK-LABEL: test_vqrshl_s8
2459  return vqrshl_s8(a, b);
2460// CHECK: sqrshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2461}
2462
2463int16x4_t test_vqrshl_s16(int16x4_t a, int16x4_t b) {
2464// CHECK-LABEL: test_vqrshl_s16
2465  return vqrshl_s16(a, b);
2466// CHECK: sqrshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2467}
2468
2469int32x2_t test_vqrshl_s32(int32x2_t a, int32x2_t b) {
2470// CHECK-LABEL: test_vqrshl_s32
2471  return vqrshl_s32(a, b);
2472// CHECK: sqrshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2473}
2474
2475int64x1_t test_vqrshl_s64(int64x1_t a, int64x1_t b) {
2476// CHECK-LABEL: test_vqrshl_s64
2477  return vqrshl_s64(a, b);
2478// CHECK: sqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2479}
2480
2481uint8x8_t test_vqrshl_u8(uint8x8_t a, int8x8_t b) {
2482// CHECK-LABEL: test_vqrshl_u8
2483  return vqrshl_u8(a, b);
2484// CHECK: uqrshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2485}
2486
2487uint16x4_t test_vqrshl_u16(uint16x4_t a, int16x4_t b) {
2488// CHECK-LABEL: test_vqrshl_u16
2489  return vqrshl_u16(a, b);
2490// CHECK: uqrshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2491}
2492
2493uint32x2_t test_vqrshl_u32(uint32x2_t a, int32x2_t b) {
2494// CHECK-LABEL: test_vqrshl_u32
2495  return vqrshl_u32(a, b);
2496// CHECK: uqrshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2497}
2498
2499uint64x1_t test_vqrshl_u64(uint64x1_t a, int64x1_t b) {
2500// CHECK-LABEL: test_vqrshl_u64
2501  return vqrshl_u64(a, b);
2502// CHECK: uqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
2503}
2504
2505int8x16_t test_vqrshlq_s8(int8x16_t a, int8x16_t b) {
2506// CHECK-LABEL: test_vqrshlq_s8
2507  return vqrshlq_s8(a, b);
2508// CHECK: sqrshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2509}
2510
2511int16x8_t test_vqrshlq_s16(int16x8_t a, int16x8_t b) {
2512// CHECK-LABEL: test_vqrshlq_s16
2513  return vqrshlq_s16(a, b);
2514// CHECK: sqrshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2515}
2516
2517int32x4_t test_vqrshlq_s32(int32x4_t a, int32x4_t b) {
2518// CHECK-LABEL: test_vqrshlq_s32
2519  return vqrshlq_s32(a, b);
2520// CHECK: sqrshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2521}
2522
2523int64x2_t test_vqrshlq_s64(int64x2_t a, int64x2_t b) {
2524// CHECK-LABEL: test_vqrshlq_s64
2525  return vqrshlq_s64(a, b);
2526// CHECK: sqrshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2527}
2528
2529// CHECK-LABEL: test_vqrshlq_u8
2530uint8x16_t test_vqrshlq_u8(uint8x16_t a, int8x16_t b) {
2531  return vqrshlq_u8(a, b);
2532// CHECK: uqrshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2533}
2534
2535uint16x8_t test_vqrshlq_u16(uint16x8_t a, int16x8_t b) {
2536// CHECK-LABEL: test_vqrshlq_u16
2537  return vqrshlq_u16(a, b);
2538// CHECK: uqrshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2539}
2540
2541uint32x4_t test_vqrshlq_u32(uint32x4_t a, int32x4_t b) {
2542// CHECK-LABEL: test_vqrshlq_u32
2543  return vqrshlq_u32(a, b);
2544// CHECK: uqrshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2545}
2546
2547uint64x2_t test_vqrshlq_u64(uint64x2_t a, int64x2_t b) {
2548// CHECK-LABEL: test_vqrshlq_u64
2549  return vqrshlq_u64(a, b);
2550// CHECK: uqrshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2551}
2552
2553poly64x1_t test_vsli_n_p64(poly64x1_t a, poly64x1_t b) {
2554// CHECK-LABEL: test_vsli_n_p64
2555  return vsli_n_p64(a, b, 0);
2556// CHECK: sli {{d[0-9]+}}, {{d[0-9]+}}, #0
2557}
2558
2559poly64x2_t test_vsliq_n_p64(poly64x2_t a, poly64x2_t b) {
2560// CHECK-LABEL: test_vsliq_n_p64
2561  return vsliq_n_p64(a, b, 0);
2562// CHECK: sli {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
2563}
2564
2565int8x8_t test_vmax_s8(int8x8_t a, int8x8_t b) {
2566// CHECK-LABEL: test_vmax_s8
2567  return vmax_s8(a, b);
2568// CHECK: smax {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2569}
2570
2571int16x4_t test_vmax_s16(int16x4_t a, int16x4_t b) {
2572// CHECK-LABEL: test_vmax_s16
2573  return vmax_s16(a, b);
2574// CHECK: smax {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2575}
2576
2577int32x2_t test_vmax_s32(int32x2_t a, int32x2_t b) {
2578// CHECK-LABEL: test_vmax_s32
2579  return vmax_s32(a, b);
2580// CHECK: smax {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2581}
2582
2583uint8x8_t test_vmax_u8(uint8x8_t a, uint8x8_t b) {
2584// CHECK-LABEL: test_vmax_u8
2585  return vmax_u8(a, b);
2586// CHECK: umax {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2587}
2588
2589uint16x4_t test_vmax_u16(uint16x4_t a, uint16x4_t b) {
2590// CHECK-LABEL: test_vmax_u16
2591  return vmax_u16(a, b);
2592// CHECK: umax {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2593}
2594
2595uint32x2_t test_vmax_u32(uint32x2_t a, uint32x2_t b) {
2596// CHECK-LABEL: test_vmax_u32
2597  return vmax_u32(a, b);
2598// CHECK: umax {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2599}
2600
2601float32x2_t test_vmax_f32(float32x2_t a, float32x2_t b) {
2602// CHECK-LABEL: test_vmax_f32
2603  return vmax_f32(a, b);
2604// CHECK: fmax {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2605}
2606
2607int8x16_t test_vmaxq_s8(int8x16_t a, int8x16_t b) {
2608// CHECK-LABEL: test_vmaxq_s8
2609  return vmaxq_s8(a, b);
2610// CHECK: smax {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2611}
2612
2613int16x8_t test_vmaxq_s16(int16x8_t a, int16x8_t b) {
2614// CHECK-LABEL: test_vmaxq_s16
2615  return vmaxq_s16(a, b);
2616// CHECK: smax {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2617}
2618
2619int32x4_t test_vmaxq_s32(int32x4_t a, int32x4_t b) {
2620// CHECK-LABEL: test_vmaxq_s32
2621  return vmaxq_s32(a, b);
2622// CHECK: smax {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2623}
2624
2625uint8x16_t test_vmaxq_u8(uint8x16_t a, uint8x16_t b) {
2626// CHECK-LABEL: test_vmaxq_u8
2627  return vmaxq_u8(a, b);
2628// CHECK: umax {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2629}
2630
2631uint16x8_t test_vmaxq_u16(uint16x8_t a, uint16x8_t b) {
2632// CHECK-LABEL: test_vmaxq_u16
2633  return vmaxq_u16(a, b);
2634// CHECK: umax {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2635}
2636
2637uint32x4_t test_vmaxq_u32(uint32x4_t a, uint32x4_t b) {
2638// CHECK-LABEL: test_vmaxq_u32
2639  return vmaxq_u32(a, b);
2640// CHECK: umax {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2641}
2642
2643float32x4_t test_vmaxq_f32(float32x4_t a, float32x4_t b) {
2644// CHECK-LABEL: test_vmaxq_f32
2645  return vmaxq_f32(a, b);
2646// CHECK: fmax {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2647}
2648
2649float64x2_t test_vmaxq_f64(float64x2_t a, float64x2_t b) {
2650// CHECK-LABEL: test_vmaxq_f64
2651  return vmaxq_f64(a, b);
2652// CHECK: fmax {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2653}
2654
2655
2656int8x8_t test_vmin_s8(int8x8_t a, int8x8_t b) {
2657// CHECK-LABEL: test_vmin_s8
2658  return vmin_s8(a, b);
2659// CHECK: smin {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2660}
2661
2662int16x4_t test_vmin_s16(int16x4_t a, int16x4_t b) {
2663// CHECK-LABEL: test_vmin_s16
2664  return vmin_s16(a, b);
2665// CHECK: smin {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2666}
2667
2668int32x2_t test_vmin_s32(int32x2_t a, int32x2_t b) {
2669// CHECK-LABEL: test_vmin_s32
2670  return vmin_s32(a, b);
2671// CHECK: smin {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2672}
2673
2674uint8x8_t test_vmin_u8(uint8x8_t a, uint8x8_t b) {
2675// CHECK-LABEL: test_vmin_u8
2676  return vmin_u8(a, b);
2677// CHECK: umin {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2678}
2679
2680uint16x4_t test_vmin_u16(uint16x4_t a, uint16x4_t b) {
2681// CHECK-LABEL: test_vmin_u16
2682  return vmin_u16(a, b);
2683// CHECK: umin {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2684}
2685
2686uint32x2_t test_vmin_u32(uint32x2_t a, uint32x2_t b) {
2687// CHECK-LABEL: test_vmin_u32
2688  return vmin_u32(a, b);
2689// CHECK: umin {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2690}
2691
2692float32x2_t test_vmin_f32(float32x2_t a, float32x2_t b) {
2693// CHECK-LABEL: test_vmin_f32
2694  return vmin_f32(a, b);
2695// CHECK: fmin {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2696}
2697
2698int8x16_t test_vminq_s8(int8x16_t a, int8x16_t b) {
2699// CHECK-LABEL: test_vminq_s8
2700  return vminq_s8(a, b);
2701// CHECK: smin {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2702}
2703
2704int16x8_t test_vminq_s16(int16x8_t a, int16x8_t b) {
2705// CHECK-LABEL: test_vminq_s16
2706  return vminq_s16(a, b);
2707// CHECK: smin {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2708}
2709
2710int32x4_t test_vminq_s32(int32x4_t a, int32x4_t b) {
2711// CHECK-LABEL: test_vminq_s32
2712  return vminq_s32(a, b);
2713// CHECK: smin {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2714}
2715
2716uint8x16_t test_vminq_u8(uint8x16_t a, uint8x16_t b) {
2717// CHECK-LABEL: test_vminq_u8
2718  return vminq_u8(a, b);
2719// CHECK: umin {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2720}
2721
2722uint16x8_t test_vminq_u16(uint16x8_t a, uint16x8_t b) {
2723// CHECK-LABEL: test_vminq_u16
2724  return vminq_u16(a, b);
2725// CHECK: umin {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2726}
2727
2728uint32x4_t test_vminq_u32(uint32x4_t a, uint32x4_t b) {
2729// CHECK-LABEL: test_vminq_u32
2730  return vminq_u32(a, b);
2731// CHECK: umin {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2732}
2733
2734float32x4_t test_vminq_f32(float32x4_t a, float32x4_t b) {
2735// CHECK-LABEL: test_vminq_f32
2736  return vminq_f32(a, b);
2737// CHECK: fmin {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2738}
2739
2740float64x2_t test_vminq_f64(float64x2_t a, float64x2_t b) {
2741// CHECK-LABEL: test_vminq_f64
2742  return vminq_f64(a, b);
2743// CHECK: fmin {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2744}
2745
2746float32x2_t test_vmaxnm_f32(float32x2_t a, float32x2_t b) {
2747// CHECK-LABEL: test_vmaxnm_f32
2748  return vmaxnm_f32(a, b);
2749// CHECK: fmaxnm {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2750}
2751
2752float32x4_t test_vmaxnmq_f32(float32x4_t a, float32x4_t b) {
2753// CHECK-LABEL: test_vmaxnmq_f32
2754  return vmaxnmq_f32(a, b);
2755// CHECK: fmaxnm {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2756}
2757
2758float64x2_t test_vmaxnmq_f64(float64x2_t a, float64x2_t b) {
2759// CHECK-LABEL: test_vmaxnmq_f64
2760  return vmaxnmq_f64(a, b);
2761// CHECK: fmaxnm {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2762}
2763
2764float32x2_t test_vminnm_f32(float32x2_t a, float32x2_t b) {
2765// CHECK-LABEL: test_vminnm_f32
2766  return vminnm_f32(a, b);
2767// CHECK: fminnm {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2768}
2769
2770float32x4_t test_vminnmq_f32(float32x4_t a, float32x4_t b) {
2771// CHECK-LABEL: test_vminnmq_f32
2772  return vminnmq_f32(a, b);
2773// CHECK: fminnm {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2774}
2775
2776float64x2_t test_vminnmq_f64(float64x2_t a, float64x2_t b) {
2777// CHECK-LABEL: test_vminnmq_f64
2778  return vminnmq_f64(a, b);
2779// CHECK: fminnm {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2780}
2781
2782int8x8_t test_vpmax_s8(int8x8_t a, int8x8_t b) {
2783// CHECK-LABEL: test_vpmax_s8
2784  return vpmax_s8(a, b);
2785// CHECK: smaxp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2786}
2787
2788int16x4_t test_vpmax_s16(int16x4_t a, int16x4_t b) {
2789// CHECK-LABEL: test_vpmax_s16
2790  return vpmax_s16(a, b);
2791// CHECK: smaxp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2792}
2793
2794int32x2_t test_vpmax_s32(int32x2_t a, int32x2_t b) {
2795// CHECK-LABEL: test_vpmax_s32
2796  return vpmax_s32(a, b);
2797// CHECK: smaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2798}
2799
2800uint8x8_t test_vpmax_u8(uint8x8_t a, uint8x8_t b) {
2801// CHECK-LABEL: test_vpmax_u8
2802  return vpmax_u8(a, b);
2803// CHECK: umaxp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2804}
2805
2806uint16x4_t test_vpmax_u16(uint16x4_t a, uint16x4_t b) {
2807// CHECK-LABEL: test_vpmax_u16
2808  return vpmax_u16(a, b);
2809// CHECK: umaxp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2810}
2811
2812uint32x2_t test_vpmax_u32(uint32x2_t a, uint32x2_t b) {
2813// CHECK-LABEL: test_vpmax_u32
2814  return vpmax_u32(a, b);
2815// CHECK: umaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2816}
2817
2818float32x2_t test_vpmax_f32(float32x2_t a, float32x2_t b) {
2819// CHECK-LABEL: test_vpmax_f32
2820  return vpmax_f32(a, b);
2821// CHECK: fmaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2822}
2823
2824int8x16_t test_vpmaxq_s8(int8x16_t a, int8x16_t b) {
2825// CHECK-LABEL: test_vpmaxq_s8
2826  return vpmaxq_s8(a, b);
2827// CHECK: smaxp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2828}
2829
2830int16x8_t test_vpmaxq_s16(int16x8_t a, int16x8_t b) {
2831// CHECK-LABEL: test_vpmaxq_s16
2832  return vpmaxq_s16(a, b);
2833// CHECK: smaxp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2834}
2835
2836int32x4_t test_vpmaxq_s32(int32x4_t a, int32x4_t b) {
2837// CHECK-LABEL: test_vpmaxq_s32
2838  return vpmaxq_s32(a, b);
2839// CHECK: smaxp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2840}
2841
2842uint8x16_t test_vpmaxq_u8(uint8x16_t a, uint8x16_t b) {
2843// CHECK-LABEL: test_vpmaxq_u8
2844  return vpmaxq_u8(a, b);
2845// CHECK: umaxp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2846}
2847
2848uint16x8_t test_vpmaxq_u16(uint16x8_t a, uint16x8_t b) {
2849// CHECK-LABEL: test_vpmaxq_u16
2850  return vpmaxq_u16(a, b);
2851// CHECK: umaxp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2852}
2853
2854uint32x4_t test_vpmaxq_u32(uint32x4_t a, uint32x4_t b) {
2855// CHECK-LABEL: test_vpmaxq_u32
2856  return vpmaxq_u32(a, b);
2857// CHECK: umaxp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2858}
2859
2860float32x4_t test_vpmaxq_f32(float32x4_t a, float32x4_t b) {
2861// CHECK-LABEL: test_vpmaxq_f32
2862  return vpmaxq_f32(a, b);
2863// CHECK: fmaxp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2864}
2865
2866float64x2_t test_vpmaxq_f64(float64x2_t a, float64x2_t b) {
2867// CHECK-LABEL: test_vpmaxq_f64
2868  return vpmaxq_f64(a, b);
2869// CHECK: fmaxp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2870}
2871
2872int8x8_t test_vpmin_s8(int8x8_t a, int8x8_t b) {
2873// CHECK-LABEL: test_vpmin_s8
2874  return vpmin_s8(a, b);
2875// CHECK: sminp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2876}
2877
2878int16x4_t test_vpmin_s16(int16x4_t a, int16x4_t b) {
2879// CHECK-LABEL: test_vpmin_s16
2880  return vpmin_s16(a, b);
2881// CHECK: sminp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2882}
2883
2884int32x2_t test_vpmin_s32(int32x2_t a, int32x2_t b) {
2885// CHECK-LABEL: test_vpmin_s32
2886  return vpmin_s32(a, b);
2887// CHECK: sminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2888}
2889
2890uint8x8_t test_vpmin_u8(uint8x8_t a, uint8x8_t b) {
2891// CHECK-LABEL: test_vpmin_u8
2892  return vpmin_u8(a, b);
2893// CHECK: uminp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
2894}
2895
2896uint16x4_t test_vpmin_u16(uint16x4_t a, uint16x4_t b) {
2897// CHECK-LABEL: test_vpmin_u16
2898  return vpmin_u16(a, b);
2899// CHECK: uminp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
2900}
2901
2902uint32x2_t test_vpmin_u32(uint32x2_t a, uint32x2_t b) {
2903// CHECK-LABEL: test_vpmin_u32
2904  return vpmin_u32(a, b);
2905// CHECK: uminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2906}
2907
2908float32x2_t test_vpmin_f32(float32x2_t a, float32x2_t b) {
2909// CHECK-LABEL: test_vpmin_f32
2910  return vpmin_f32(a, b);
2911// CHECK: fminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2912}
2913
2914int8x16_t test_vpminq_s8(int8x16_t a, int8x16_t b) {
2915// CHECK-LABEL: test_vpminq_s8
2916  return vpminq_s8(a, b);
2917// CHECK: sminp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2918}
2919
2920int16x8_t test_vpminq_s16(int16x8_t a, int16x8_t b) {
2921// CHECK-LABEL: test_vpminq_s16
2922  return vpminq_s16(a, b);
2923// CHECK: sminp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2924}
2925
2926int32x4_t test_vpminq_s32(int32x4_t a, int32x4_t b) {
2927// CHECK-LABEL: test_vpminq_s32
2928  return vpminq_s32(a, b);
2929// CHECK: sminp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2930}
2931
2932uint8x16_t test_vpminq_u8(uint8x16_t a, uint8x16_t b) {
2933// CHECK-LABEL: test_vpminq_u8
2934  return vpminq_u8(a, b);
2935// CHECK: uminp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
2936}
2937
2938uint16x8_t test_vpminq_u16(uint16x8_t a, uint16x8_t b) {
2939// CHECK-LABEL: test_vpminq_u16
2940  return vpminq_u16(a, b);
2941// CHECK: uminp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
2942}
2943
2944uint32x4_t test_vpminq_u32(uint32x4_t a, uint32x4_t b) {
2945// CHECK-LABEL: test_vpminq_u32
2946  return vpminq_u32(a, b);
2947// CHECK: uminp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2948}
2949
2950float32x4_t test_vpminq_f32(float32x4_t a, float32x4_t b) {
2951// CHECK-LABEL: test_vpminq_f32
2952  return vpminq_f32(a, b);
2953// CHECK: fminp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2954}
2955
2956float64x2_t test_vpminq_f64(float64x2_t a, float64x2_t b) {
2957// CHECK-LABEL: test_vpminq_f64
2958  return vpminq_f64(a, b);
2959// CHECK: fminp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2960}
2961
2962float32x2_t test_vpmaxnm_f32(float32x2_t a, float32x2_t b) {
2963// CHECK-LABEL: test_vpmaxnm_f32
2964  return vpmaxnm_f32(a, b);
2965// CHECK: fmaxnmp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2966}
2967
2968float32x4_t test_vpmaxnmq_f32(float32x4_t a, float32x4_t b) {
2969// CHECK-LABEL: test_vpmaxnmq_f32
2970  return vpmaxnmq_f32(a, b);
2971// CHECK: fmaxnmp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2972}
2973
2974float64x2_t test_vpmaxnmq_f64(float64x2_t a, float64x2_t b) {
2975// CHECK-LABEL: test_vpmaxnmq_f64
2976  return vpmaxnmq_f64(a, b);
2977// CHECK: fmaxnmp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2978}
2979
2980float32x2_t test_vpminnm_f32(float32x2_t a, float32x2_t b) {
2981// CHECK-LABEL: test_vpminnm_f32
2982  return vpminnm_f32(a, b);
2983// CHECK: fminnmp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
2984}
2985
2986float32x4_t test_vpminnmq_f32(float32x4_t a, float32x4_t b) {
2987// CHECK-LABEL: test_vpminnmq_f32
2988  return vpminnmq_f32(a, b);
2989// CHECK: fminnmp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
2990}
2991
2992float64x2_t test_vpminnmq_f64(float64x2_t a, float64x2_t b) {
2993// CHECK-LABEL: test_vpminnmq_f64
2994  return vpminnmq_f64(a, b);
2995// CHECK: fminnmp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
2996}
2997
2998int8x8_t test_vpadd_s8(int8x8_t a, int8x8_t b) {
2999// CHECK-LABEL: test_vpadd_s8
3000  return vpadd_s8(a, b);
3001// CHECK: addp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
3002}
3003
3004int16x4_t test_vpadd_s16(int16x4_t a, int16x4_t b) {
3005// CHECK-LABEL: test_vpadd_s16
3006  return vpadd_s16(a, b);
3007// CHECK: addp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
3008}
3009
3010int32x2_t test_vpadd_s32(int32x2_t a, int32x2_t b) {
3011// CHECK-LABEL: test_vpadd_s32
3012  return vpadd_s32(a, b);
3013// CHECK: addp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
3014}
3015
3016uint8x8_t test_vpadd_u8(uint8x8_t a, uint8x8_t b) {
3017// CHECK-LABEL: test_vpadd_u8
3018  return vpadd_u8(a, b);
3019// CHECK: addp {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
3020}
3021
3022uint16x4_t test_vpadd_u16(uint16x4_t a, uint16x4_t b) {
3023// CHECK-LABEL: test_vpadd_u16
3024  return vpadd_u16(a, b);
3025// CHECK: addp {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
3026}
3027
3028uint32x2_t test_vpadd_u32(uint32x2_t a, uint32x2_t b) {
3029// CHECK-LABEL: test_vpadd_u32
3030  return vpadd_u32(a, b);
3031// CHECK: addp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
3032}
3033
3034float32x2_t test_vpadd_f32(float32x2_t a, float32x2_t b) {
3035// CHECK-LABEL: test_vpadd_f32
3036  return vpadd_f32(a, b);
3037// CHECK: faddp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
3038}
3039
3040int8x16_t test_vpaddq_s8(int8x16_t a, int8x16_t b) {
3041// CHECK-LABEL: test_vpaddq_s8
3042  return vpaddq_s8(a, b);
3043// CHECK: addp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
3044}
3045
3046int16x8_t test_vpaddq_s16(int16x8_t a, int16x8_t b) {
3047// CHECK-LABEL: test_vpaddq_s16
3048  return vpaddq_s16(a, b);
3049// CHECK: addp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3050}
3051
3052int32x4_t test_vpaddq_s32(int32x4_t a, int32x4_t b) {
3053// CHECK-LABEL: test_vpaddq_s32
3054  return vpaddq_s32(a, b);
3055// CHECK: addp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3056}
3057
3058uint8x16_t test_vpaddq_u8(uint8x16_t a, uint8x16_t b) {
3059// CHECK-LABEL: test_vpaddq_u8
3060  return vpaddq_u8(a, b);
3061// CHECK: addp {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
3062}
3063
3064uint16x8_t test_vpaddq_u16(uint16x8_t a, uint16x8_t b) {
3065// CHECK-LABEL: test_vpaddq_u16
3066  return vpaddq_u16(a, b);
3067// CHECK: addp {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3068}
3069
3070uint32x4_t test_vpaddq_u32(uint32x4_t a, uint32x4_t b) {
3071// CHECK-LABEL: test_vpaddq_u32
3072  return vpaddq_u32(a, b);
3073// CHECK: addp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3074}
3075
3076float32x4_t test_vpaddq_f32(float32x4_t a, float32x4_t b) {
3077// CHECK-LABEL: test_vpaddq_f32
3078  return vpaddq_f32(a, b);
3079// CHECK: faddp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3080}
3081
3082float64x2_t test_vpaddq_f64(float64x2_t a, float64x2_t b) {
3083// CHECK-LABEL: test_vpaddq_f64
3084  return vpaddq_f64(a, b);
3085// CHECK: faddp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
3086}
3087
3088int16x4_t test_vqdmulh_s16(int16x4_t a, int16x4_t b) {
3089// CHECK-LABEL: test_vqdmulh_s16
3090  return vqdmulh_s16(a, b);
3091// CHECK: sqdmulh {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
3092}
3093
3094int32x2_t test_vqdmulh_s32(int32x2_t a, int32x2_t b) {
3095// CHECK-LABEL: test_vqdmulh_s32
3096  return vqdmulh_s32(a, b);
3097// CHECK: sqdmulh {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
3098}
3099
3100int16x8_t test_vqdmulhq_s16(int16x8_t a, int16x8_t b) {
3101// CHECK-LABEL: test_vqdmulhq_s16
3102  return vqdmulhq_s16(a, b);
3103// CHECK: sqdmulh {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3104}
3105
3106int32x4_t test_vqdmulhq_s32(int32x4_t a, int32x4_t b) {
3107// CHECK-LABEL: test_vqdmulhq_s32
3108  return vqdmulhq_s32(a, b);
3109// CHECK: sqdmulh {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3110}
3111
3112int16x4_t test_vqrdmulh_s16(int16x4_t a, int16x4_t b) {
3113// CHECK-LABEL: test_vqrdmulh_s16
3114  return vqrdmulh_s16(a, b);
3115// CHECK: sqrdmulh {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
3116}
3117
3118int32x2_t test_vqrdmulh_s32(int32x2_t a, int32x2_t b) {
3119// CHECK-LABEL: test_vqrdmulh_s32
3120  return vqrdmulh_s32(a, b);
3121// CHECK: sqrdmulh {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
3122}
3123
3124int16x8_t test_vqrdmulhq_s16(int16x8_t a, int16x8_t b) {
3125// CHECK-LABEL: test_vqrdmulhq_s16
3126  return vqrdmulhq_s16(a, b);
3127// CHECK: sqrdmulh {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
3128}
3129
3130int32x4_t test_vqrdmulhq_s32(int32x4_t a, int32x4_t b) {
3131// CHECK-LABEL: test_vqrdmulhq_s32
3132  return vqrdmulhq_s32(a, b);
3133// CHECK: sqrdmulh {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3134}
3135
3136float32x2_t test_vmulx_f32(float32x2_t a, float32x2_t b) {
3137// CHECK-LABEL: test_vmulx_f32
3138  return vmulx_f32(a, b);
3139// CHECK: fmulx {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
3140}
3141
3142float32x4_t test_vmulxq_f32(float32x4_t a, float32x4_t b) {
3143// CHECK-LABEL: test_vmulxq_f32
3144  return vmulxq_f32(a, b);
3145// CHECK: fmulx {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
3146}
3147
3148float64x2_t test_vmulxq_f64(float64x2_t a, float64x2_t b) {
3149// CHECK-LABEL: test_vmulxq_f64
3150  return vmulxq_f64(a, b);
3151// CHECK: fmulx {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
3152}
3153
3154int8x8_t test_vshl_n_s8(int8x8_t a) {
3155// CHECK-LABEL: test_vshl_n_s8
3156  return vshl_n_s8(a, 3);
3157// CHECK: shl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3158}
3159
3160int16x4_t test_vshl_n_s16(int16x4_t a) {
3161// CHECK-LABEL: test_vshl_n_s16
3162  return vshl_n_s16(a, 3);
3163// CHECK: shl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3164}
3165
3166int32x2_t test_vshl_n_s32(int32x2_t a) {
3167// CHECK-LABEL: test_vshl_n_s32
3168  return vshl_n_s32(a, 3);
3169// CHECK: shl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3170}
3171
3172int8x16_t test_vshlq_n_s8(int8x16_t a) {
3173// CHECK-LABEL: test_vshlq_n_s8
3174  return vshlq_n_s8(a, 3);
3175// CHECK: shl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3176}
3177
3178int16x8_t test_vshlq_n_s16(int16x8_t a) {
3179// CHECK-LABEL: test_vshlq_n_s16
3180  return vshlq_n_s16(a, 3);
3181// CHECK: shl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3182}
3183
3184int32x4_t test_vshlq_n_s32(int32x4_t a) {
3185// CHECK-LABEL: test_vshlq_n_s32
3186  return vshlq_n_s32(a, 3);
3187// CHECK: shl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3188}
3189
3190int64x2_t test_vshlq_n_s64(int64x2_t a) {
3191// CHECK-LABEL: test_vshlq_n_s64
3192  return vshlq_n_s64(a, 3);
3193// CHECK: shl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3194}
3195
3196int8x8_t test_vshl_n_u8(int8x8_t a) {
3197// CHECK-LABEL: test_vshl_n_u8
3198  return vshl_n_u8(a, 3);
3199// CHECK: shl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3200}
3201
3202int16x4_t test_vshl_n_u16(int16x4_t a) {
3203// CHECK-LABEL: test_vshl_n_u16
3204  return vshl_n_u16(a, 3);
3205// CHECK: shl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3206}
3207
3208int32x2_t test_vshl_n_u32(int32x2_t a) {
3209// CHECK-LABEL: test_vshl_n_u32
3210  return vshl_n_u32(a, 3);
3211// CHECK: shl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3212}
3213
3214int8x16_t test_vshlq_n_u8(int8x16_t a) {
3215// CHECK-LABEL: test_vshlq_n_u8
3216  return vshlq_n_u8(a, 3);
3217// CHECK: shl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3218}
3219
3220int16x8_t test_vshlq_n_u16(int16x8_t a) {
3221// CHECK-LABEL: test_vshlq_n_u16
3222  return vshlq_n_u16(a, 3);
3223// CHECK: shl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3224}
3225
3226int32x4_t test_vshlq_n_u32(int32x4_t a) {
3227// CHECK-LABEL: test_vshlq_n_u32
3228  return vshlq_n_u32(a, 3);
3229// CHECK: shl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3230}
3231
3232int64x2_t test_vshlq_n_u64(int64x2_t a) {
3233// CHECK-LABEL: test_vshlq_n_u64
3234  return vshlq_n_u64(a, 3);
3235// CHECK: shl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3236}
3237
3238int8x8_t test_vshr_n_s8(int8x8_t a) {
3239  // CHECK-LABEL: test_vshr_n_s8
3240  return vshr_n_s8(a, 3);
3241  // CHECK: sshr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3242}
3243
3244int16x4_t test_vshr_n_s16(int16x4_t a) {
3245  // CHECK-LABEL: test_vshr_n_s16
3246  return vshr_n_s16(a, 3);
3247  // CHECK: sshr {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3248}
3249
3250int32x2_t test_vshr_n_s32(int32x2_t a) {
3251  // CHECK-LABEL: test_vshr_n_s32
3252  return vshr_n_s32(a, 3);
3253  // CHECK: sshr {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3254}
3255
3256int8x16_t test_vshrq_n_s8(int8x16_t a) {
3257  // CHECK-LABEL: test_vshrq_n_s8
3258  return vshrq_n_s8(a, 3);
3259  // CHECK: sshr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3260}
3261
3262int16x8_t test_vshrq_n_s16(int16x8_t a) {
3263  // CHECK-LABEL: test_vshrq_n_s16
3264  return vshrq_n_s16(a, 3);
3265  // CHECK: sshr {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3266}
3267
3268int32x4_t test_vshrq_n_s32(int32x4_t a) {
3269  // CHECK-LABEL: test_vshrq_n_s32
3270  return vshrq_n_s32(a, 3);
3271  // CHECK: sshr {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3272}
3273
3274int64x2_t test_vshrq_n_s64(int64x2_t a) {
3275  // CHECK-LABEL: test_vshrq_n_s64
3276  return vshrq_n_s64(a, 3);
3277  // CHECK: sshr {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3278}
3279
3280int8x8_t test_vshr_n_u8(int8x8_t a) {
3281  // CHECK-LABEL: test_vshr_n_u8
3282  return vshr_n_u8(a, 3);
3283  // CHECK: ushr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3284}
3285
3286int16x4_t test_vshr_n_u16(int16x4_t a) {
3287  // CHECK-LABEL: test_vshr_n_u16
3288  return vshr_n_u16(a, 3);
3289  // CHECK: ushr {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3290}
3291
3292int32x2_t test_vshr_n_u32(int32x2_t a) {
3293  // CHECK-LABEL: test_vshr_n_u32
3294  return vshr_n_u32(a, 3);
3295  // CHECK: ushr {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3296}
3297
3298int8x16_t test_vshrq_n_u8(int8x16_t a) {
3299  // CHECK-LABEL: test_vshrq_n_u8
3300  return vshrq_n_u8(a, 3);
3301  // CHECK: ushr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3302}
3303
3304int16x8_t test_vshrq_n_u16(int16x8_t a) {
3305  // CHECK-LABEL: test_vshrq_n_u16
3306  return vshrq_n_u16(a, 3);
3307  // CHECK: ushr {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3308}
3309
3310int32x4_t test_vshrq_n_u32(int32x4_t a) {
3311  // CHECK-LABEL: test_vshrq_n_u32
3312  return vshrq_n_u32(a, 3);
3313  // CHECK: ushr {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3314}
3315
3316int64x2_t test_vshrq_n_u64(int64x2_t a) {
3317  // CHECK-LABEL: test_vshrq_n_u64
3318  return vshrq_n_u64(a, 3);
3319  // CHECK: ushr {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3320}
3321
3322int8x8_t test_vsra_n_s8(int8x8_t a, int8x8_t b) {
3323  // CHECK-LABEL: test_vsra_n_s8
3324  return vsra_n_s8(a, b, 3);
3325  // CHECK: ssra {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3326}
3327
3328int16x4_t test_vsra_n_s16(int16x4_t a, int16x4_t b) {
3329  // CHECK-LABEL: test_vsra_n_s16
3330  return vsra_n_s16(a, b, 3);
3331  // CHECK: ssra {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3332}
3333
3334int32x2_t test_vsra_n_s32(int32x2_t a, int32x2_t b) {
3335  // CHECK-LABEL: test_vsra_n_s32
3336  return vsra_n_s32(a, b, 3);
3337  // CHECK: ssra {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3338}
3339
3340int8x16_t test_vsraq_n_s8(int8x16_t a, int8x16_t b) {
3341  // CHECK-LABEL: test_vsraq_n_s8
3342  return vsraq_n_s8(a, b, 3);
3343  // CHECK: ssra {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3344}
3345
3346int16x8_t test_vsraq_n_s16(int16x8_t a, int16x8_t b) {
3347  // CHECK-LABEL: test_vsraq_n_s16
3348  return vsraq_n_s16(a, b, 3);
3349  // CHECK: ssra {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3350}
3351
3352int32x4_t test_vsraq_n_s32(int32x4_t a, int32x4_t b) {
3353  // CHECK-LABEL: test_vsraq_n_s32
3354  return vsraq_n_s32(a, b, 3);
3355  // CHECK: ssra {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3356}
3357
3358int64x2_t test_vsraq_n_s64(int64x2_t a, int64x2_t b) {
3359  // CHECK-LABEL: test_vsraq_n_s64
3360  return vsraq_n_s64(a, b, 3);
3361  // CHECK: ssra {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3362}
3363
3364int8x8_t test_vsra_n_u8(int8x8_t a, int8x8_t b) {
3365  // CHECK-LABEL: test_vsra_n_u8
3366  return vsra_n_u8(a, b, 3);
3367  // CHECK: usra {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3368}
3369
3370int16x4_t test_vsra_n_u16(int16x4_t a, int16x4_t b) {
3371  // CHECK-LABEL: test_vsra_n_u16
3372  return vsra_n_u16(a, b, 3);
3373  // CHECK: usra {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3374}
3375
3376int32x2_t test_vsra_n_u32(int32x2_t a, int32x2_t b) {
3377  // CHECK-LABEL: test_vsra_n_u32
3378  return vsra_n_u32(a, b, 3);
3379  // CHECK: usra {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3380}
3381
3382int8x16_t test_vsraq_n_u8(int8x16_t a, int8x16_t b) {
3383  // CHECK-LABEL: test_vsraq_n_u8
3384  return vsraq_n_u8(a, b, 3);
3385  // CHECK: usra {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3386}
3387
3388int16x8_t test_vsraq_n_u16(int16x8_t a, int16x8_t b) {
3389  // CHECK-LABEL: test_vsraq_n_u16
3390  return vsraq_n_u16(a, b, 3);
3391  // CHECK: usra {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3392}
3393
3394int32x4_t test_vsraq_n_u32(int32x4_t a, int32x4_t b) {
3395  // CHECK-LABEL: test_vsraq_n_u32
3396  return vsraq_n_u32(a, b, 3);
3397  // CHECK: usra {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3398}
3399
3400int64x2_t test_vsraq_n_u64(int64x2_t a, int64x2_t b) {
3401  // CHECK-LABEL: test_vsraq_n_u64
3402  return vsraq_n_u64(a, b, 3);
3403  // CHECK: usra {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3404}
3405
3406int8x8_t test_vrshr_n_s8(int8x8_t a) {
3407  // CHECK-LABEL: test_vrshr_n_s8
3408  return vrshr_n_s8(a, 3);
3409  // CHECK: srshr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3410}
3411
3412int16x4_t test_vrshr_n_s16(int16x4_t a) {
3413  // CHECK-LABEL: test_vrshr_n_s16
3414  return vrshr_n_s16(a, 3);
3415  // CHECK: srshr {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3416}
3417
3418int32x2_t test_vrshr_n_s32(int32x2_t a) {
3419  // CHECK-LABEL: test_vrshr_n_s32
3420  return vrshr_n_s32(a, 3);
3421  // CHECK: srshr {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3422}
3423
3424int8x16_t test_vrshrq_n_s8(int8x16_t a) {
3425  // CHECK-LABEL: test_vrshrq_n_s8
3426  return vrshrq_n_s8(a, 3);
3427  // CHECK: srshr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3428}
3429
3430int16x8_t test_vrshrq_n_s16(int16x8_t a) {
3431  // CHECK-LABEL: test_vrshrq_n_s16
3432  return vrshrq_n_s16(a, 3);
3433  // CHECK: srshr {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3434}
3435
3436int32x4_t test_vrshrq_n_s32(int32x4_t a) {
3437  // CHECK-LABEL: test_vrshrq_n_s32
3438  return vrshrq_n_s32(a, 3);
3439  // CHECK: srshr {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3440}
3441
3442int64x2_t test_vrshrq_n_s64(int64x2_t a) {
3443  // CHECK-LABEL: test_vrshrq_n_s64
3444  return vrshrq_n_s64(a, 3);
3445  // CHECK: srshr {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3446}
3447
3448int8x8_t test_vrshr_n_u8(int8x8_t a) {
3449  // CHECK-LABEL: test_vrshr_n_u8
3450  return vrshr_n_u8(a, 3);
3451  // CHECK: urshr {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3452}
3453
3454int16x4_t test_vrshr_n_u16(int16x4_t a) {
3455  // CHECK-LABEL: test_vrshr_n_u16
3456  return vrshr_n_u16(a, 3);
3457  // CHECK: urshr {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3458}
3459
3460int32x2_t test_vrshr_n_u32(int32x2_t a) {
3461  // CHECK-LABEL: test_vrshr_n_u32
3462  return vrshr_n_u32(a, 3);
3463  // CHECK: urshr {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3464}
3465
3466int8x16_t test_vrshrq_n_u8(int8x16_t a) {
3467  // CHECK-LABEL: test_vrshrq_n_u8
3468  return vrshrq_n_u8(a, 3);
3469  // CHECK: urshr {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3470}
3471
3472int16x8_t test_vrshrq_n_u16(int16x8_t a) {
3473  // CHECK-LABEL: test_vrshrq_n_u16
3474  return vrshrq_n_u16(a, 3);
3475  // CHECK: urshr {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3476}
3477
3478int32x4_t test_vrshrq_n_u32(int32x4_t a) {
3479  // CHECK-LABEL: test_vrshrq_n_u32
3480  return vrshrq_n_u32(a, 3);
3481  // CHECK: urshr {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3482}
3483
3484int64x2_t test_vrshrq_n_u64(int64x2_t a) {
3485  // CHECK-LABEL: test_vrshrq_n_u64
3486  return vrshrq_n_u64(a, 3);
3487  // CHECK: urshr {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3488}
3489
3490int8x8_t test_vrsra_n_s8(int8x8_t a, int8x8_t b) {
3491  // CHECK-LABEL: test_vrsra_n_s8
3492  return vrsra_n_s8(a, b, 3);
3493  // CHECK: srsra {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3494}
3495
3496int16x4_t test_vrsra_n_s16(int16x4_t a, int16x4_t b) {
3497  // CHECK-LABEL: test_vrsra_n_s16
3498  return vrsra_n_s16(a, b, 3);
3499  // CHECK: srsra {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3500}
3501
3502int32x2_t test_vrsra_n_s32(int32x2_t a, int32x2_t b) {
3503  // CHECK-LABEL: test_vrsra_n_s32
3504  return vrsra_n_s32(a, b, 3);
3505  // CHECK: srsra {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3506}
3507
3508int8x16_t test_vrsraq_n_s8(int8x16_t a, int8x16_t b) {
3509  // CHECK-LABEL: test_vrsraq_n_s8
3510  return vrsraq_n_s8(a, b, 3);
3511  // CHECK: srsra {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3512}
3513
3514int16x8_t test_vrsraq_n_s16(int16x8_t a, int16x8_t b) {
3515  // CHECK-LABEL: test_vrsraq_n_s16
3516  return vrsraq_n_s16(a, b, 3);
3517  // CHECK: srsra {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3518}
3519
3520int32x4_t test_vrsraq_n_s32(int32x4_t a, int32x4_t b) {
3521  // CHECK-LABEL: test_vrsraq_n_s32
3522  return vrsraq_n_s32(a, b, 3);
3523  // CHECK: srsra {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3524}
3525
3526int64x2_t test_vrsraq_n_s64(int64x2_t a, int64x2_t b) {
3527  // CHECK-LABEL: test_vrsraq_n_s64
3528  return vrsraq_n_s64(a, b, 3);
3529  // CHECK: srsra {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3530}
3531
3532int8x8_t test_vrsra_n_u8(int8x8_t a, int8x8_t b) {
3533  // CHECK-LABEL: test_vrsra_n_u8
3534  return vrsra_n_u8(a, b, 3);
3535  // CHECK: ursra {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3536}
3537
3538int16x4_t test_vrsra_n_u16(int16x4_t a, int16x4_t b) {
3539  // CHECK-LABEL: test_vrsra_n_u16
3540  return vrsra_n_u16(a, b, 3);
3541  // CHECK: ursra {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3542}
3543
3544int32x2_t test_vrsra_n_u32(int32x2_t a, int32x2_t b) {
3545  // CHECK-LABEL: test_vrsra_n_u32
3546  return vrsra_n_u32(a, b, 3);
3547  // CHECK: ursra {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3548}
3549
3550int8x16_t test_vrsraq_n_u8(int8x16_t a, int8x16_t b) {
3551  // CHECK-LABEL: test_vrsraq_n_u8
3552  return vrsraq_n_u8(a, b, 3);
3553  // CHECK: ursra {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3554}
3555
3556int16x8_t test_vrsraq_n_u16(int16x8_t a, int16x8_t b) {
3557  // CHECK-LABEL: test_vrsraq_n_u16
3558  return vrsraq_n_u16(a, b, 3);
3559  // CHECK: ursra {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3560}
3561
3562int32x4_t test_vrsraq_n_u32(int32x4_t a, int32x4_t b) {
3563  // CHECK-LABEL: test_vrsraq_n_u32
3564  return vrsraq_n_u32(a, b, 3);
3565  // CHECK: ursra {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3566}
3567
3568int64x2_t test_vrsraq_n_u64(int64x2_t a, int64x2_t b) {
3569  // CHECK-LABEL: test_vrsraq_n_u64
3570  return vrsraq_n_u64(a, b, 3);
3571  // CHECK: ursra {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3572}
3573
3574int8x8_t test_vsri_n_s8(int8x8_t a, int8x8_t b) {
3575  // CHECK-LABEL: test_vsri_n_s8
3576  return vsri_n_s8(a, b, 3);
3577  // CHECK: sri {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3578}
3579
3580int16x4_t test_vsri_n_s16(int16x4_t a, int16x4_t b) {
3581  // CHECK-LABEL: test_vsri_n_s16
3582  return vsri_n_s16(a, b, 3);
3583  // CHECK: sri {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3584}
3585
3586int32x2_t test_vsri_n_s32(int32x2_t a, int32x2_t b) {
3587  // CHECK-LABEL: test_vsri_n_s32
3588  return vsri_n_s32(a, b, 3);
3589  // CHECK: sri {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3590}
3591
3592int8x16_t test_vsriq_n_s8(int8x16_t a, int8x16_t b) {
3593  // CHECK-LABEL: test_vsriq_n_s8
3594  return vsriq_n_s8(a, b, 3);
3595  // CHECK: sri {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3596}
3597
3598int16x8_t test_vsriq_n_s16(int16x8_t a, int16x8_t b) {
3599  // CHECK-LABEL: test_vsriq_n_s16
3600  return vsriq_n_s16(a, b, 3);
3601  // CHECK: sri {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3602}
3603
3604int32x4_t test_vsriq_n_s32(int32x4_t a, int32x4_t b) {
3605  // CHECK-LABEL: test_vsriq_n_s32
3606  return vsriq_n_s32(a, b, 3);
3607  // CHECK: sri {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3608}
3609
3610int64x2_t test_vsriq_n_s64(int64x2_t a, int64x2_t b) {
3611  // CHECK-LABEL: test_vsriq_n_s64
3612  return vsriq_n_s64(a, b, 3);
3613  // CHECK: sri {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3614}
3615
3616int8x8_t test_vsri_n_u8(int8x8_t a, int8x8_t b) {
3617  // CHECK-LABEL: test_vsri_n_u8
3618  return vsri_n_u8(a, b, 3);
3619  // CHECK: sri {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3620}
3621
3622int16x4_t test_vsri_n_u16(int16x4_t a, int16x4_t b) {
3623  // CHECK-LABEL: test_vsri_n_u16
3624  return vsri_n_u16(a, b, 3);
3625  // CHECK: sri {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3626}
3627
3628int32x2_t test_vsri_n_u32(int32x2_t a, int32x2_t b) {
3629  // CHECK-LABEL: test_vsri_n_u32
3630  return vsri_n_u32(a, b, 3);
3631  // CHECK: sri {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3632}
3633
3634int8x16_t test_vsriq_n_u8(int8x16_t a, int8x16_t b) {
3635  // CHECK-LABEL: test_vsriq_n_u8
3636  return vsriq_n_u8(a, b, 3);
3637  // CHECK: sri {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3638}
3639
3640int16x8_t test_vsriq_n_u16(int16x8_t a, int16x8_t b) {
3641  // CHECK-LABEL: test_vsriq_n_u16
3642  return vsriq_n_u16(a, b, 3);
3643  // CHECK: sri {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3644}
3645
3646int32x4_t test_vsriq_n_u32(int32x4_t a, int32x4_t b) {
3647  // CHECK-LABEL: test_vsriq_n_u32
3648  return vsriq_n_u32(a, b, 3);
3649  // CHECK: sri {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3650}
3651
3652int64x2_t test_vsriq_n_u64(int64x2_t a, int64x2_t b) {
3653  // CHECK-LABEL: test_vsriq_n_u64
3654  return vsriq_n_u64(a, b, 3);
3655  // CHECK: sri {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3656}
3657
3658poly8x8_t test_vsri_n_p8(poly8x8_t a, poly8x8_t b) {
3659  // CHECK-LABEL: test_vsri_n_p8
3660  return vsri_n_p8(a, b, 3);
3661  // CHECK: sri {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3662}
3663
3664poly16x4_t test_vsri_n_p16(poly16x4_t a, poly16x4_t b) {
3665  // CHECK-LABEL: test_vsri_n_p16
3666  return vsri_n_p16(a, b, 15);
3667  // CHECK: sri {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #15
3668}
3669
3670poly8x16_t test_vsriq_n_p8(poly8x16_t a, poly8x16_t b) {
3671  // CHECK-LABEL: test_vsriq_n_p8
3672  return vsriq_n_p8(a, b, 3);
3673  // CHECK: sri {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3674}
3675
3676poly16x8_t test_vsriq_n_p16(poly16x8_t a, poly16x8_t b) {
3677  // CHECK-LABEL: test_vsriq_n_p16
3678  return vsriq_n_p16(a, b, 15);
3679  // CHECK: sri {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #15
3680}
3681
3682int8x8_t test_vsli_n_s8(int8x8_t a, int8x8_t b) {
3683  // CHECK-LABEL: test_vsli_n_s8
3684  return vsli_n_s8(a, b, 3);
3685  // CHECK: sli {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3686}
3687
3688int16x4_t test_vsli_n_s16(int16x4_t a, int16x4_t b) {
3689  // CHECK-LABEL: test_vsli_n_s16
3690  return vsli_n_s16(a, b, 3);
3691  // CHECK: sli {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3692}
3693
3694int32x2_t test_vsli_n_s32(int32x2_t a, int32x2_t b) {
3695  // CHECK-LABEL: test_vsli_n_s32
3696  return vsli_n_s32(a, b, 3);
3697  // CHECK: sli {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3698}
3699
3700int8x16_t test_vsliq_n_s8(int8x16_t a, int8x16_t b) {
3701  // CHECK-LABEL: test_vsliq_n_s8
3702  return vsliq_n_s8(a, b, 3);
3703  // CHECK: sli {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3704}
3705
3706int16x8_t test_vsliq_n_s16(int16x8_t a, int16x8_t b) {
3707  // CHECK-LABEL: test_vsliq_n_s16
3708  return vsliq_n_s16(a, b, 3);
3709  // CHECK: sli {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3710}
3711
3712int32x4_t test_vsliq_n_s32(int32x4_t a, int32x4_t b) {
3713  // CHECK-LABEL: test_vsliq_n_s32
3714  return vsliq_n_s32(a, b, 3);
3715  // CHECK: sli {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3716}
3717
3718int64x2_t test_vsliq_n_s64(int64x2_t a, int64x2_t b) {
3719  // CHECK-LABEL: test_vsliq_n_s64
3720  return vsliq_n_s64(a, b, 3);
3721  // CHECK: sli {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3722}
3723
3724uint8x8_t test_vsli_n_u8(uint8x8_t a, uint8x8_t b) {
3725  // CHECK-LABEL: test_vsli_n_u8
3726  return vsli_n_u8(a, b, 3);
3727  // CHECK: sli {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3728}
3729
3730uint16x4_t test_vsli_n_u16(uint16x4_t a, uint16x4_t b) {
3731  // CHECK-LABEL: test_vsli_n_u16
3732  return vsli_n_u16(a, b, 3);
3733  // CHECK: sli {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3734}
3735
3736uint32x2_t test_vsli_n_u32(uint32x2_t a, uint32x2_t b) {
3737  // CHECK-LABEL: test_vsli_n_u32
3738  return vsli_n_u32(a, b, 3);
3739  // CHECK: sli {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3740}
3741
3742uint8x16_t test_vsliq_n_u8(uint8x16_t a, uint8x16_t b) {
3743  // CHECK-LABEL: test_vsliq_n_u8
3744  return vsliq_n_u8(a, b, 3);
3745  // CHECK: sli {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3746}
3747
3748uint16x8_t test_vsliq_n_u16(uint16x8_t a, uint16x8_t b) {
3749  // CHECK-LABEL: test_vsliq_n_u16
3750  return vsliq_n_u16(a, b, 3);
3751  // CHECK: sli {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3752}
3753
3754uint32x4_t test_vsliq_n_u32(uint32x4_t a, uint32x4_t b) {
3755  // CHECK-LABEL: test_vsliq_n_u32
3756  return vsliq_n_u32(a, b, 3);
3757  // CHECK: sli {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3758}
3759
3760uint64x2_t test_vsliq_n_u64(uint64x2_t a, uint64x2_t b) {
3761  // CHECK-LABEL: test_vsliq_n_u64
3762  return vsliq_n_u64(a, b, 3);
3763  // CHECK: sli {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3764}
3765
3766poly8x8_t test_vsli_n_p8(poly8x8_t a, poly8x8_t b) {
3767  // CHECK-LABEL: test_vsli_n_p8
3768  return vsli_n_p8(a, b, 3);
3769  // CHECK: sli {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3770}
3771
3772poly16x4_t test_vsli_n_p16(poly16x4_t a, poly16x4_t b) {
3773  // CHECK-LABEL: test_vsli_n_p16
3774  return vsli_n_p16(a, b, 15);
3775  // CHECK: sli {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #15
3776}
3777
3778poly8x16_t test_vsliq_n_p8(poly8x16_t a, poly8x16_t b) {
3779  // CHECK-LABEL: test_vsliq_n_p8
3780  return vsliq_n_p8(a, b, 3);
3781  // CHECK: sli {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3782}
3783
3784poly16x8_t test_vsliq_n_p16(poly16x8_t a, poly16x8_t b) {
3785  // CHECK-LABEL: test_vsliq_n_p16
3786  return vsliq_n_p16(a, b, 15);
3787  // CHECK: sli {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #15
3788}
3789
3790int8x8_t test_vqshlu_n_s8(int8x8_t a) {
3791  // CHECK-LABEL: test_vqshlu_n_s8
3792  return vqshlu_n_s8(a, 3);
3793  // CHECK: sqshlu {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #3
3794}
3795
3796int16x4_t test_vqshlu_n_s16(int16x4_t a) {
3797  // CHECK-LABEL: test_vqshlu_n_s16
3798  return vqshlu_n_s16(a, 3);
3799  // CHECK: sqshlu {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #3
3800}
3801
3802int32x2_t test_vqshlu_n_s32(int32x2_t a) {
3803  // CHECK-LABEL: test_vqshlu_n_s32
3804  return vqshlu_n_s32(a, 3);
3805  // CHECK: sqshlu {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #3
3806}
3807
3808int8x16_t test_vqshluq_n_s8(int8x16_t a) {
3809  // CHECK-LABEL: test_vqshluq_n_s8
3810  return vqshluq_n_s8(a, 3);
3811  // CHECK: sqshlu {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #3
3812}
3813
3814int16x8_t test_vqshluq_n_s16(int16x8_t a) {
3815  // CHECK-LABEL: test_vqshluq_n_s16
3816  return vqshluq_n_s16(a, 3);
3817  // CHECK: sqshlu {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #3
3818}
3819
3820int32x4_t test_vqshluq_n_s32(int32x4_t a) {
3821  // CHECK-LABEL: test_vqshluq_n_s32
3822  return vqshluq_n_s32(a, 3);
3823  // CHECK: sqshlu {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #3
3824}
3825
3826int64x2_t test_vqshluq_n_s64(int64x2_t a) {
3827  // CHECK-LABEL: test_vqshluq_n_s64
3828  return vqshluq_n_s64(a, 3);
3829  // CHECK: sqshlu {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #3
3830}
3831
3832int8x8_t test_vshrn_n_s16(int16x8_t a) {
3833  // CHECK-LABEL: test_vshrn_n_s16
3834  return vshrn_n_s16(a, 3);
3835  // CHECK: shrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
3836}
3837
3838int16x4_t test_vshrn_n_s32(int32x4_t a) {
3839  // CHECK-LABEL: test_vshrn_n_s32
3840  return vshrn_n_s32(a, 9);
3841  // CHECK: shrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
3842}
3843
3844int32x2_t test_vshrn_n_s64(int64x2_t a) {
3845  // CHECK-LABEL: test_vshrn_n_s64
3846  return vshrn_n_s64(a, 19);
3847  // CHECK: shrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
3848}
3849
3850uint8x8_t test_vshrn_n_u16(uint16x8_t a) {
3851  // CHECK-LABEL: test_vshrn_n_u16
3852  return vshrn_n_u16(a, 3);
3853  // CHECK: shrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
3854}
3855
3856uint16x4_t test_vshrn_n_u32(uint32x4_t a) {
3857  // CHECK-LABEL: test_vshrn_n_u32
3858  return vshrn_n_u32(a, 9);
3859  // CHECK: shrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
3860}
3861
3862uint32x2_t test_vshrn_n_u64(uint64x2_t a) {
3863  // CHECK-LABEL: test_vshrn_n_u64
3864  return vshrn_n_u64(a, 19);
3865  // CHECK: shrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
3866}
3867
3868int8x16_t test_vshrn_high_n_s16(int8x8_t a, int16x8_t b) {
3869  // CHECK-LABEL: test_vshrn_high_n_s16
3870  return vshrn_high_n_s16(a, b, 3);
3871  // CHECK: shrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
3872}
3873
3874int16x8_t test_vshrn_high_n_s32(int16x4_t a, int32x4_t b) {
3875  // CHECK-LABEL: test_vshrn_high_n_s32
3876  return vshrn_high_n_s32(a, b, 9);
3877  // CHECK: shrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
3878}
3879
3880int32x4_t test_vshrn_high_n_s64(int32x2_t a, int64x2_t b) {
3881  // CHECK-LABEL: test_vshrn_high_n_s64
3882  return vshrn_high_n_s64(a, b, 19);
3883  // CHECK: shrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
3884}
3885
3886uint8x16_t test_vshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
3887  // CHECK-LABEL: test_vshrn_high_n_u16
3888  return vshrn_high_n_u16(a, b, 3);
3889  // CHECK: shrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
3890}
3891
3892uint16x8_t test_vshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
3893  // CHECK-LABEL: test_vshrn_high_n_u32
3894  return vshrn_high_n_u32(a, b, 9);
3895  // CHECK: shrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
3896}
3897
3898uint32x4_t test_vshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
3899  // CHECK-LABEL: test_vshrn_high_n_u64
3900  return vshrn_high_n_u64(a, b, 19);
3901  // CHECK: shrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
3902}
3903
3904int8x8_t test_vqshrun_n_s16(int16x8_t a) {
3905  // CHECK-LABEL: test_vqshrun_n_s16
3906  return vqshrun_n_s16(a, 3);
3907  // CHECK: sqshrun {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
3908}
3909
3910int16x4_t test_vqshrun_n_s32(int32x4_t a) {
3911  // CHECK-LABEL: test_vqshrun_n_s32
3912  return vqshrun_n_s32(a, 9);
3913  // CHECK: sqshrun {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
3914}
3915
3916int32x2_t test_vqshrun_n_s64(int64x2_t a) {
3917  // CHECK-LABEL: test_vqshrun_n_s64
3918  return vqshrun_n_s64(a, 19);
3919  // CHECK: sqshrun {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
3920}
3921
3922int8x16_t test_vqshrun_high_n_s16(int8x8_t a, int16x8_t b) {
3923  // CHECK-LABEL: test_vqshrun_high_n_s16
3924  return vqshrun_high_n_s16(a, b, 3);
3925  // CHECK: sqshrun2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
3926}
3927
3928int16x8_t test_vqshrun_high_n_s32(int16x4_t a, int32x4_t b) {
3929  // CHECK-LABEL: test_vqshrun_high_n_s32
3930  return vqshrun_high_n_s32(a, b, 9);
3931  // CHECK: sqshrun2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
3932}
3933
3934int32x4_t test_vqshrun_high_n_s64(int32x2_t a, int64x2_t b) {
3935  // CHECK-LABEL: test_vqshrun_high_n_s64
3936  return vqshrun_high_n_s64(a, b, 19);
3937  // CHECK: sqshrun2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
3938}
3939
3940int8x8_t test_vrshrn_n_s16(int16x8_t a) {
3941  // CHECK-LABEL: test_vrshrn_n_s16
3942  return vrshrn_n_s16(a, 3);
3943  // CHECK: rshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
3944}
3945
3946int16x4_t test_vrshrn_n_s32(int32x4_t a) {
3947  // CHECK-LABEL: test_vrshrn_n_s32
3948  return vrshrn_n_s32(a, 9);
3949  // CHECK: rshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
3950}
3951
3952int32x2_t test_vrshrn_n_s64(int64x2_t a) {
3953  // CHECK-LABEL: test_vrshrn_n_s64
3954  return vrshrn_n_s64(a, 19);
3955  // CHECK: rshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
3956}
3957
3958uint8x8_t test_vrshrn_n_u16(uint16x8_t a) {
3959  // CHECK-LABEL: test_vrshrn_n_u16
3960  return vrshrn_n_u16(a, 3);
3961  // CHECK: rshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
3962}
3963
3964uint16x4_t test_vrshrn_n_u32(uint32x4_t a) {
3965  // CHECK-LABEL: test_vrshrn_n_u32
3966  return vrshrn_n_u32(a, 9);
3967  // CHECK: rshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
3968}
3969
3970uint32x2_t test_vrshrn_n_u64(uint64x2_t a) {
3971  // CHECK-LABEL: test_vrshrn_n_u64
3972  return vrshrn_n_u64(a, 19);
3973  // CHECK: rshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
3974}
3975
3976int8x16_t test_vrshrn_high_n_s16(int8x8_t a, int16x8_t b) {
3977  // CHECK-LABEL: test_vrshrn_high_n_s16
3978  return vrshrn_high_n_s16(a, b, 3);
3979  // CHECK: rshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
3980}
3981
3982int16x8_t test_vrshrn_high_n_s32(int16x4_t a, int32x4_t b) {
3983  // CHECK-LABEL: test_vrshrn_high_n_s32
3984  return vrshrn_high_n_s32(a, b, 9);
3985  // CHECK: rshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
3986}
3987
3988int32x4_t test_vrshrn_high_n_s64(int32x2_t a, int64x2_t b) {
3989  // CHECK-LABEL: test_vrshrn_high_n_s64
3990  return vrshrn_high_n_s64(a, b, 19);
3991  // CHECK: rshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
3992}
3993
3994uint8x16_t test_vrshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
3995  // CHECK-LABEL: test_vrshrn_high_n_u16
3996  return vrshrn_high_n_u16(a, b, 3);
3997  // CHECK: rshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
3998}
3999
4000uint16x8_t test_vrshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
4001  // CHECK-LABEL: test_vrshrn_high_n_u32
4002  return vrshrn_high_n_u32(a, b, 9);
4003  // CHECK: rshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
4004}
4005
4006uint32x4_t test_vrshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
4007  // CHECK-LABEL: test_vrshrn_high_n_u64
4008  return vrshrn_high_n_u64(a, b, 19);
4009  // CHECK: rshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
4010}
4011
4012int8x8_t test_vqrshrun_n_s16(int16x8_t a) {
4013  // CHECK-LABEL: test_vqrshrun_n_s16
4014  return vqrshrun_n_s16(a, 3);
4015  // CHECK: sqrshrun {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
4016}
4017
4018int16x4_t test_vqrshrun_n_s32(int32x4_t a) {
4019  // CHECK-LABEL: test_vqrshrun_n_s32
4020  return vqrshrun_n_s32(a, 9);
4021  // CHECK: sqrshrun {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
4022}
4023
4024int32x2_t test_vqrshrun_n_s64(int64x2_t a) {
4025  // CHECK-LABEL: test_vqrshrun_n_s64
4026  return vqrshrun_n_s64(a, 19);
4027  // CHECK: sqrshrun {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
4028}
4029
4030int8x16_t test_vqrshrun_high_n_s16(int8x8_t a, int16x8_t b) {
4031  // CHECK-LABEL: test_vqrshrun_high_n_s16
4032  return vqrshrun_high_n_s16(a, b, 3);
4033  // CHECK: sqrshrun2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
4034}
4035
4036int16x8_t test_vqrshrun_high_n_s32(int16x4_t a, int32x4_t b) {
4037  // CHECK-LABEL: test_vqrshrun_high_n_s32
4038  return vqrshrun_high_n_s32(a, b, 9);
4039  // CHECK: sqrshrun2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
4040}
4041
4042int32x4_t test_vqrshrun_high_n_s64(int32x2_t a, int64x2_t b) {
4043  // CHECK-LABEL: test_vqrshrun_high_n_s64
4044  return vqrshrun_high_n_s64(a, b, 19);
4045  // CHECK: sqrshrun2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
4046}
4047
4048int8x8_t test_vqshrn_n_s16(int16x8_t a) {
4049  // CHECK-LABEL: test_vqshrn_n_s16
4050  return vqshrn_n_s16(a, 3);
4051  // CHECK: sqshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
4052}
4053
4054int16x4_t test_vqshrn_n_s32(int32x4_t a) {
4055  // CHECK-LABEL: test_vqshrn_n_s32
4056  return vqshrn_n_s32(a, 9);
4057  // CHECK: sqshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
4058}
4059
4060int32x2_t test_vqshrn_n_s64(int64x2_t a) {
4061  // CHECK-LABEL: test_vqshrn_n_s64
4062  return vqshrn_n_s64(a, 19);
4063  // CHECK: sqshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
4064}
4065
4066uint8x8_t test_vqshrn_n_u16(uint16x8_t a) {
4067  // CHECK-LABEL: test_vqshrn_n_u16
4068  return vqshrn_n_u16(a, 3);
4069  // CHECK: uqshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
4070}
4071
4072uint16x4_t test_vqshrn_n_u32(uint32x4_t a) {
4073  // CHECK-LABEL: test_vqshrn_n_u32
4074  return vqshrn_n_u32(a, 9);
4075  // CHECK: uqshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
4076}
4077
4078uint32x2_t test_vqshrn_n_u64(uint64x2_t a) {
4079  // CHECK-LABEL: test_vqshrn_n_u64
4080  return vqshrn_n_u64(a, 19);
4081  // CHECK: uqshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
4082}
4083
4084int8x16_t test_vqshrn_high_n_s16(int8x8_t a, int16x8_t b) {
4085  // CHECK-LABEL: test_vqshrn_high_n_s16
4086  return vqshrn_high_n_s16(a, b, 3);
4087  // CHECK: sqshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
4088}
4089
4090int16x8_t test_vqshrn_high_n_s32(int16x4_t a, int32x4_t b) {
4091  // CHECK-LABEL: test_vqshrn_high_n_s32
4092  return vqshrn_high_n_s32(a, b, 9);
4093  // CHECK: sqshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
4094}
4095
4096int32x4_t test_vqshrn_high_n_s64(int32x2_t a, int64x2_t b) {
4097  // CHECK-LABEL: test_vqshrn_high_n_s64
4098  return vqshrn_high_n_s64(a, b, 19);
4099  // CHECK: sqshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
4100}
4101
4102uint8x16_t test_vqshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
4103  // CHECK-LABEL: test_vqshrn_high_n_u16
4104  return vqshrn_high_n_u16(a, b, 3);
4105  // CHECK: uqshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
4106}
4107
4108uint16x8_t test_vqshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
4109  // CHECK-LABEL: test_vqshrn_high_n_u32
4110  return vqshrn_high_n_u32(a, b, 9);
4111  // CHECK: uqshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
4112}
4113
4114uint32x4_t test_vqshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
4115  // CHECK-LABEL: test_vqshrn_high_n_u64
4116  return vqshrn_high_n_u64(a, b, 19);
4117  // CHECK: uqshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
4118}
4119
4120int8x8_t test_vqrshrn_n_s16(int16x8_t a) {
4121  // CHECK-LABEL: test_vqrshrn_n_s16
4122  return vqrshrn_n_s16(a, 3);
4123  // CHECK: sqrshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
4124}
4125
4126int16x4_t test_vqrshrn_n_s32(int32x4_t a) {
4127  // CHECK-LABEL: test_vqrshrn_n_s32
4128  return vqrshrn_n_s32(a, 9);
4129  // CHECK: sqrshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
4130}
4131
4132int32x2_t test_vqrshrn_n_s64(int64x2_t a) {
4133  // CHECK-LABEL: test_vqrshrn_n_s64
4134  return vqrshrn_n_s64(a, 19);
4135  // CHECK: sqrshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
4136}
4137
4138uint8x8_t test_vqrshrn_n_u16(uint16x8_t a) {
4139  // CHECK-LABEL: test_vqrshrn_n_u16
4140  return vqrshrn_n_u16(a, 3);
4141  // CHECK: uqrshrn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, #3
4142}
4143
4144uint16x4_t test_vqrshrn_n_u32(uint32x4_t a) {
4145  // CHECK-LABEL: test_vqrshrn_n_u32
4146  return vqrshrn_n_u32(a, 9);
4147  // CHECK: uqrshrn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, #9
4148}
4149
4150uint32x2_t test_vqrshrn_n_u64(uint64x2_t a) {
4151  // CHECK-LABEL: test_vqrshrn_n_u64
4152  return vqrshrn_n_u64(a, 19);
4153  // CHECK: uqrshrn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, #19
4154}
4155
4156int8x16_t test_vqrshrn_high_n_s16(int8x8_t a, int16x8_t b) {
4157  // CHECK-LABEL: test_vqrshrn_high_n_s16
4158  return vqrshrn_high_n_s16(a, b, 3);
4159  // CHECK: sqrshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
4160}
4161
4162int16x8_t test_vqrshrn_high_n_s32(int16x4_t a, int32x4_t b) {
4163  // CHECK-LABEL: test_vqrshrn_high_n_s32
4164  return vqrshrn_high_n_s32(a, b, 9);
4165  // CHECK: sqrshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
4166}
4167
4168int32x4_t test_vqrshrn_high_n_s64(int32x2_t a, int64x2_t b) {
4169  // CHECK-LABEL: test_vqrshrn_high_n_s64
4170  return vqrshrn_high_n_s64(a, b, 19);
4171  // CHECK: sqrshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
4172}
4173
4174uint8x16_t test_vqrshrn_high_n_u16(uint8x8_t a, uint16x8_t b) {
4175  // CHECK-LABEL: test_vqrshrn_high_n_u16
4176  return vqrshrn_high_n_u16(a, b, 3);
4177  // CHECK: uqrshrn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, #3
4178}
4179
4180uint16x8_t test_vqrshrn_high_n_u32(uint16x4_t a, uint32x4_t b) {
4181  // CHECK-LABEL: test_vqrshrn_high_n_u32
4182  return vqrshrn_high_n_u32(a, b, 9);
4183  // CHECK: uqrshrn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, #9
4184}
4185
4186uint32x4_t test_vqrshrn_high_n_u64(uint32x2_t a, uint64x2_t b) {
4187  // CHECK-LABEL: test_vqrshrn_high_n_u64
4188  return vqrshrn_high_n_u64(a, b, 19);
4189  // CHECK: uqrshrn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, #19
4190}
4191
4192int16x8_t test_vshll_n_s8(int8x8_t a) {
4193// CHECK-LABEL: test_vshll_n_s8
4194  return vshll_n_s8(a, 3);
4195// CHECK: sshll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #3
4196}
4197
4198int32x4_t test_vshll_n_s16(int16x4_t a) {
4199// CHECK-LABEL: test_vshll_n_s16
4200  return vshll_n_s16(a, 9);
4201// CHECK: sshll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #9
4202}
4203
4204int64x2_t test_vshll_n_s32(int32x2_t a) {
4205// CHECK-LABEL: test_vshll_n_s32
4206  return vshll_n_s32(a, 19);
4207// CHECK: sshll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #19
4208}
4209
4210uint16x8_t test_vshll_n_u8(uint8x8_t a) {
4211// CHECK-LABEL: test_vshll_n_u8
4212  return vshll_n_u8(a, 3);
4213// CHECK: ushll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #3
4214}
4215
4216uint32x4_t test_vshll_n_u16(uint16x4_t a) {
4217// CHECK-LABEL: test_vshll_n_u16
4218  return vshll_n_u16(a, 9);
4219// CHECK: ushll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #9
4220}
4221
4222uint64x2_t test_vshll_n_u32(uint32x2_t a) {
4223// CHECK-LABEL: test_vshll_n_u32
4224  return vshll_n_u32(a, 19);
4225// CHECK: ushll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #19
4226}
4227
4228int16x8_t test_vshll_high_n_s8(int8x16_t a) {
4229// CHECK-LABEL: test_vshll_high_n_s8
4230  return vshll_high_n_s8(a, 3);
4231// CHECK: sshll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #3
4232}
4233
4234int32x4_t test_vshll_high_n_s16(int16x8_t a) {
4235// CHECK-LABEL: test_vshll_high_n_s16
4236  return vshll_high_n_s16(a, 9);
4237// CHECK: sshll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #9
4238}
4239
4240int64x2_t test_vshll_high_n_s32(int32x4_t a) {
4241// CHECK-LABEL: test_vshll_high_n_s32
4242  return vshll_high_n_s32(a, 19);
4243// CHECK: sshll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #19
4244}
4245
4246uint16x8_t test_vshll_high_n_u8(uint8x16_t a) {
4247// CHECK-LABEL: test_vshll_high_n_u8
4248  return vshll_high_n_u8(a, 3);
4249// CHECK: ushll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #3
4250}
4251
4252uint32x4_t test_vshll_high_n_u16(uint16x8_t a) {
4253// CHECK-LABEL: test_vshll_high_n_u16
4254  return vshll_high_n_u16(a, 9);
4255// CHECK: ushll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #9
4256}
4257
4258uint64x2_t test_vshll_high_n_u32(uint32x4_t a) {
4259// CHECK-LABEL: test_vshll_high_n_u32
4260  return vshll_high_n_u32(a, 19);
4261// CHECK: ushll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #19
4262}
4263
4264int16x8_t test_vmovl_s8(int8x8_t a) {
4265// CHECK-LABEL: test_vmovl_s8
4266  return vmovl_s8(a);
4267// CHECK: sshll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #0
4268}
4269
4270int32x4_t test_vmovl_s16(int16x4_t a) {
4271// CHECK-LABEL: test_vmovl_s16
4272  return vmovl_s16(a);
4273// CHECK: sshll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #0
4274}
4275
4276int64x2_t test_vmovl_s32(int32x2_t a) {
4277// CHECK-LABEL: test_vmovl_s32
4278  return vmovl_s32(a);
4279// CHECK: sshll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #0
4280}
4281
4282uint16x8_t test_vmovl_u8(uint8x8_t a) {
4283// CHECK-LABEL: test_vmovl_u8
4284  return vmovl_u8(a);
4285// CHECK: ushll {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, #0
4286}
4287
4288uint32x4_t test_vmovl_u16(uint16x4_t a) {
4289// CHECK-LABEL: test_vmovl_u16
4290  return vmovl_u16(a);
4291// CHECK: ushll {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, #0
4292}
4293
4294uint64x2_t test_vmovl_u32(uint32x2_t a) {
4295// CHECK-LABEL: test_vmovl_u32
4296  return vmovl_u32(a);
4297// CHECK: ushll {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, #0
4298}
4299
4300int16x8_t test_vmovl_high_s8(int8x16_t a) {
4301// CHECK-LABEL: test_vmovl_high_s8
4302  return vmovl_high_s8(a);
4303// CHECK: sshll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #0
4304}
4305
4306int32x4_t test_vmovl_high_s16(int16x8_t a) {
4307// CHECK-LABEL: test_vmovl_high_s16
4308  return vmovl_high_s16(a);
4309// CHECK: sshll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #0
4310}
4311
4312int64x2_t test_vmovl_high_s32(int32x4_t a) {
4313// CHECK-LABEL: test_vmovl_high_s32
4314  return vmovl_high_s32(a);
4315// CHECK: sshll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #0
4316}
4317
4318uint16x8_t test_vmovl_high_u8(uint8x16_t a) {
4319// CHECK-LABEL: test_vmovl_high_u8
4320  return vmovl_high_u8(a);
4321// CHECK: ushll2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, #0
4322}
4323
4324uint32x4_t test_vmovl_high_u16(uint16x8_t a) {
4325// CHECK-LABEL: test_vmovl_high_u16
4326  return vmovl_high_u16(a);
4327// CHECK: ushll2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, #0
4328}
4329
4330uint64x2_t test_vmovl_high_u32(uint32x4_t a) {
4331// CHECK-LABEL: test_vmovl_high_u32
4332  return vmovl_high_u32(a);
4333// CHECK: ushll2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, #0
4334}
4335
4336float32x2_t test_vcvt_n_f32_s32(int32x2_t a) {
4337  // CHECK-LABEL: test_vcvt_n_f32_s32
4338  return vcvt_n_f32_s32(a, 31);
4339  // CHECK: scvtf {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
4340}
4341
4342float32x4_t test_vcvtq_n_f32_s32(int32x4_t a) {
4343  // CHECK-LABEL: test_vcvtq_n_f32_s32
4344  return vcvtq_n_f32_s32(a, 31);
4345  // CHECK: scvtf {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
4346}
4347
4348float64x2_t test_vcvtq_n_f64_s64(int64x2_t a) {
4349  // CHECK-LABEL: test_vcvtq_n_f64_s64
4350  return vcvtq_n_f64_s64(a, 50);
4351  // CHECK: scvtf {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #50
4352}
4353
4354float32x2_t test_vcvt_n_f32_u32(uint32x2_t a) {
4355  // CHECK-LABEL: test_vcvt_n_f32_u32
4356  return vcvt_n_f32_u32(a, 31);
4357  // CHECK: ucvtf {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
4358}
4359
4360float32x4_t test_vcvtq_n_f32_u32(uint32x4_t a) {
4361  // CHECK-LABEL: test_vcvtq_n_f32_u32
4362  return vcvtq_n_f32_u32(a, 31);
4363  // CHECK: ucvtf {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
4364}
4365
4366float64x2_t test_vcvtq_n_f64_u64(uint64x2_t a) {
4367  // CHECK-LABEL: test_vcvtq_n_f64_u64
4368  return vcvtq_n_f64_u64(a, 50);
4369  // CHECK: ucvtf {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #50
4370}
4371
4372int32x2_t test_vcvt_n_s32_f32(float32x2_t a) {
4373  // CHECK-LABEL: test_vcvt_n_s32_f32
4374  return vcvt_n_s32_f32(a, 31);
4375  // CHECK: fcvtzs {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
4376}
4377
4378int32x4_t test_vcvtq_n_s32_f32(float32x4_t a) {
4379  // CHECK-LABEL: test_vcvtq_n_s32_f32
4380  return vcvtq_n_s32_f32(a, 31);
4381  // CHECK: fcvtzs {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
4382}
4383
4384int64x2_t test_vcvtq_n_s64_f64(float64x2_t a) {
4385  // CHECK-LABEL: test_vcvtq_n_s64_f64
4386  return vcvtq_n_s64_f64(a, 50);
4387  // CHECK: fcvtzs {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #50
4388}
4389
4390uint32x2_t test_vcvt_n_u32_f32(float32x2_t a) {
4391  // CHECK-LABEL: test_vcvt_n_u32_f32
4392  return vcvt_n_u32_f32(a, 31);
4393  // CHECK: fcvtzu {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #31
4394}
4395
4396uint32x4_t test_vcvtq_n_u32_f32(float32x4_t a) {
4397  // CHECK-LABEL: test_vcvtq_n_u32_f32
4398  return vcvtq_n_u32_f32(a, 31);
4399  // CHECK: fcvtzu {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #31
4400}
4401
4402uint64x2_t test_vcvtq_n_u64_f64(float64x2_t a) {
4403  // CHECK-LABEL: test_vcvtq_n_u64_f64
4404  return vcvtq_n_u64_f64(a, 50);
4405  // CHECK: fcvtzu {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #50
4406}
4407
4408int16x8_t test_vaddl_s8(int8x8_t a, int8x8_t b) {
4409  // CHECK-LABEL: test_vaddl_s8
4410  return vaddl_s8(a, b);
4411  // CHECK: saddl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
4412}
4413
4414int32x4_t test_vaddl_s16(int16x4_t a, int16x4_t b) {
4415  // CHECK-LABEL: test_vaddl_s16
4416  return vaddl_s16(a, b);
4417  // CHECK: saddl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
4418}
4419
4420int64x2_t test_vaddl_s32(int32x2_t a, int32x2_t b) {
4421  // CHECK-LABEL: test_vaddl_s32
4422  return vaddl_s32(a, b);
4423  // CHECK: saddl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
4424}
4425
4426uint16x8_t test_vaddl_u8(uint8x8_t a, uint8x8_t b) {
4427  // CHECK-LABEL: test_vaddl_u8
4428  return vaddl_u8(a, b);
4429  // CHECK: uaddl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
4430}
4431
4432uint32x4_t test_vaddl_u16(uint16x4_t a, uint16x4_t b) {
4433  // CHECK-LABEL: test_vaddl_u16
4434  return vaddl_u16(a, b);
4435  // CHECK: uaddl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
4436}
4437
4438uint64x2_t test_vaddl_u32(uint32x2_t a, uint32x2_t b) {
4439  // CHECK-LABEL: test_vaddl_u32
4440  return vaddl_u32(a, b);
4441  // CHECK: uaddl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
4442}
4443
4444int16x8_t test_vaddl_high_s8(int8x16_t a, int8x16_t b) {
4445  // CHECK-LABEL: test_vaddl_high_s8
4446  return vaddl_high_s8(a, b);
4447  // CHECK: saddl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
4448}
4449
4450int32x4_t test_vaddl_high_s16(int16x8_t a, int16x8_t b) {
4451  // CHECK-LABEL: test_vaddl_high_s16
4452  return vaddl_high_s16(a, b);
4453  // CHECK: saddl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4454}
4455
4456int64x2_t test_vaddl_high_s32(int32x4_t a, int32x4_t b) {
4457  // CHECK-LABEL: test_vaddl_high_s32
4458  return vaddl_high_s32(a, b);
4459  // CHECK: saddl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4460}
4461
4462uint16x8_t test_vaddl_high_u8(uint8x16_t a, uint8x16_t b) {
4463  // CHECK-LABEL: test_vaddl_high_u8
4464  return vaddl_high_u8(a, b);
4465  // CHECK: uaddl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
4466}
4467
4468uint32x4_t test_vaddl_high_u16(uint16x8_t a, uint16x8_t b) {
4469  // CHECK-LABEL: test_vaddl_high_u16
4470  return vaddl_high_u16(a, b);
4471  // CHECK: uaddl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4472}
4473
4474uint64x2_t test_vaddl_high_u32(uint32x4_t a, uint32x4_t b) {
4475  // CHECK-LABEL: test_vaddl_high_u32
4476  return vaddl_high_u32(a, b);
4477  // CHECK: uaddl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4478}
4479
4480int16x8_t test_vaddw_s8(int16x8_t a, int8x8_t b) {
4481  // CHECK-LABEL: test_vaddw_s8
4482  return vaddw_s8(a, b);
4483  // CHECK: saddw {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8b
4484}
4485
4486int32x4_t test_vaddw_s16(int32x4_t a, int16x4_t b) {
4487  // CHECK-LABEL: test_vaddw_s16
4488  return vaddw_s16(a, b);
4489  // CHECK: saddw {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4h
4490}
4491
4492int64x2_t test_vaddw_s32(int64x2_t a, int32x2_t b) {
4493  // CHECK-LABEL: test_vaddw_s32
4494  return vaddw_s32(a, b);
4495  // CHECK: saddw {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2s
4496}
4497
4498uint16x8_t test_vaddw_u8(uint16x8_t a, uint8x8_t b) {
4499  // CHECK-LABEL: test_vaddw_u8
4500  return vaddw_u8(a, b);
4501  // CHECK: uaddw {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8b
4502}
4503
4504uint32x4_t test_vaddw_u16(uint32x4_t a, uint16x4_t b) {
4505  // CHECK-LABEL: test_vaddw_u16
4506  return vaddw_u16(a, b);
4507  // CHECK: uaddw {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4h
4508}
4509
4510uint64x2_t test_vaddw_u32(uint64x2_t a, uint32x2_t b) {
4511  // CHECK-LABEL: test_vaddw_u32
4512  return vaddw_u32(a, b);
4513  // CHECK: uaddw {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2s
4514}
4515
4516int16x8_t test_vaddw_high_s8(int16x8_t a, int8x16_t b) {
4517  // CHECK-LABEL: test_vaddw_high_s8
4518  return vaddw_high_s8(a, b);
4519  // CHECK: saddw2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.16b
4520}
4521
4522int32x4_t test_vaddw_high_s16(int32x4_t a, int16x8_t b) {
4523  // CHECK-LABEL: test_vaddw_high_s16
4524  return vaddw_high_s16(a, b);
4525  // CHECK: saddw2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.8h
4526}
4527
4528int64x2_t test_vaddw_high_s32(int64x2_t a, int32x4_t b) {
4529  // CHECK-LABEL: test_vaddw_high_s32
4530  return vaddw_high_s32(a, b);
4531  // CHECK: saddw2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.4s
4532}
4533
4534uint16x8_t test_vaddw_high_u8(uint16x8_t a, uint8x16_t b) {
4535  // CHECK-LABEL: test_vaddw_high_u8
4536  return vaddw_high_u8(a, b);
4537  // CHECK: uaddw2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.16b
4538}
4539
4540uint32x4_t test_vaddw_high_u16(uint32x4_t a, uint16x8_t b) {
4541  // CHECK-LABEL: test_vaddw_high_u16
4542  return vaddw_high_u16(a, b);
4543  // CHECK: uaddw2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.8h
4544}
4545
4546uint64x2_t test_vaddw_high_u32(uint64x2_t a, uint32x4_t b) {
4547  // CHECK-LABEL: test_vaddw_high_u32
4548  return vaddw_high_u32(a, b);
4549  // CHECK: uaddw2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.4s
4550}
4551
4552int16x8_t test_vsubl_s8(int8x8_t a, int8x8_t b) {
4553  // CHECK-LABEL: test_vsubl_s8
4554  return vsubl_s8(a, b);
4555  // CHECK: ssubl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
4556}
4557
4558int32x4_t test_vsubl_s16(int16x4_t a, int16x4_t b) {
4559  // CHECK-LABEL: test_vsubl_s16
4560  return vsubl_s16(a, b);
4561  // CHECK: ssubl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
4562}
4563
4564int64x2_t test_vsubl_s32(int32x2_t a, int32x2_t b) {
4565  // CHECK-LABEL: test_vsubl_s32
4566  return vsubl_s32(a, b);
4567  // CHECK: ssubl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
4568}
4569
4570uint16x8_t test_vsubl_u8(uint8x8_t a, uint8x8_t b) {
4571  // CHECK-LABEL: test_vsubl_u8
4572  return vsubl_u8(a, b);
4573  // CHECK: usubl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
4574}
4575
4576uint32x4_t test_vsubl_u16(uint16x4_t a, uint16x4_t b) {
4577  // CHECK-LABEL: test_vsubl_u16
4578  return vsubl_u16(a, b);
4579  // CHECK: usubl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
4580}
4581
4582uint64x2_t test_vsubl_u32(uint32x2_t a, uint32x2_t b) {
4583  // CHECK-LABEL: test_vsubl_u32
4584  return vsubl_u32(a, b);
4585  // CHECK: usubl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
4586}
4587
4588int16x8_t test_vsubl_high_s8(int8x16_t a, int8x16_t b) {
4589  // CHECK-LABEL: test_vsubl_high_s8
4590  return vsubl_high_s8(a, b);
4591  // CHECK: ssubl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
4592}
4593
4594int32x4_t test_vsubl_high_s16(int16x8_t a, int16x8_t b) {
4595  // CHECK-LABEL: test_vsubl_high_s16
4596  return vsubl_high_s16(a, b);
4597  // CHECK: ssubl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4598}
4599
4600int64x2_t test_vsubl_high_s32(int32x4_t a, int32x4_t b) {
4601  // CHECK-LABEL: test_vsubl_high_s32
4602  return vsubl_high_s32(a, b);
4603  // CHECK: ssubl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4604}
4605
4606uint16x8_t test_vsubl_high_u8(uint8x16_t a, uint8x16_t b) {
4607  // CHECK-LABEL: test_vsubl_high_u8
4608  return vsubl_high_u8(a, b);
4609  // CHECK: usubl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
4610}
4611
4612uint32x4_t test_vsubl_high_u16(uint16x8_t a, uint16x8_t b) {
4613  // CHECK-LABEL: test_vsubl_high_u16
4614  return vsubl_high_u16(a, b);
4615  // CHECK: usubl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4616}
4617
4618uint64x2_t test_vsubl_high_u32(uint32x4_t a, uint32x4_t b) {
4619  // CHECK-LABEL: test_vsubl_high_u32
4620  return vsubl_high_u32(a, b);
4621  // CHECK: usubl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4622}
4623
4624int16x8_t test_vsubw_s8(int16x8_t a, int8x8_t b) {
4625  // CHECK-LABEL: test_vsubw_s8
4626  return vsubw_s8(a, b);
4627  // CHECK: ssubw {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8b
4628}
4629
4630int32x4_t test_vsubw_s16(int32x4_t a, int16x4_t b) {
4631  // CHECK-LABEL: test_vsubw_s16
4632  return vsubw_s16(a, b);
4633  // CHECK: ssubw {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4h
4634}
4635
4636int64x2_t test_vsubw_s32(int64x2_t a, int32x2_t b) {
4637  // CHECK-LABEL: test_vsubw_s32
4638  return vsubw_s32(a, b);
4639  // CHECK: ssubw {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2s
4640}
4641
4642uint16x8_t test_vsubw_u8(uint16x8_t a, uint8x8_t b) {
4643  // CHECK-LABEL: test_vsubw_u8
4644  return vsubw_u8(a, b);
4645  // CHECK: usubw {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.8b
4646}
4647
4648uint32x4_t test_vsubw_u16(uint32x4_t a, uint16x4_t b) {
4649  // CHECK-LABEL: test_vsubw_u16
4650  return vsubw_u16(a, b);
4651  // CHECK: usubw {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4h
4652}
4653
4654uint64x2_t test_vsubw_u32(uint64x2_t a, uint32x2_t b) {
4655  // CHECK-LABEL: test_vsubw_u32
4656  return vsubw_u32(a, b);
4657  // CHECK: usubw {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2s
4658}
4659
4660int16x8_t test_vsubw_high_s8(int16x8_t a, int8x16_t b) {
4661  // CHECK-LABEL: test_vsubw_high_s8
4662  return vsubw_high_s8(a, b);
4663  // CHECK: ssubw2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.16b
4664}
4665
4666int32x4_t test_vsubw_high_s16(int32x4_t a, int16x8_t b) {
4667  // CHECK-LABEL: test_vsubw_high_s16
4668  return vsubw_high_s16(a, b);
4669  // CHECK: ssubw2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.8h
4670}
4671
4672int64x2_t test_vsubw_high_s32(int64x2_t a, int32x4_t b) {
4673  // CHECK-LABEL: test_vsubw_high_s32
4674  return vsubw_high_s32(a, b);
4675  // CHECK: ssubw2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.4s
4676}
4677
4678uint16x8_t test_vsubw_high_u8(uint16x8_t a, uint8x16_t b) {
4679  // CHECK-LABEL: test_vsubw_high_u8
4680  return vsubw_high_u8(a, b);
4681  // CHECK: usubw2 {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, {{v[0-9]+}}.16b
4682}
4683
4684uint32x4_t test_vsubw_high_u16(uint32x4_t a, uint16x8_t b) {
4685  // CHECK-LABEL: test_vsubw_high_u16
4686  return vsubw_high_u16(a, b);
4687  // CHECK: usubw2 {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.8h
4688}
4689
4690uint64x2_t test_vsubw_high_u32(uint64x2_t a, uint32x4_t b) {
4691  // CHECK-LABEL: test_vsubw_high_u32
4692  return vsubw_high_u32(a, b);
4693  // CHECK: usubw2 {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.4s
4694}
4695
4696int8x8_t test_vaddhn_s16(int16x8_t a, int16x8_t b) {
4697  // CHECK-LABEL: test_vaddhn_s16
4698  return vaddhn_s16(a, b);
4699  // CHECK: addhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4700}
4701
4702int16x4_t test_vaddhn_s32(int32x4_t a, int32x4_t b) {
4703  // CHECK-LABEL: test_vaddhn_s32
4704  return vaddhn_s32(a, b);
4705  // CHECK: addhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4706}
4707
4708int32x2_t test_vaddhn_s64(int64x2_t a, int64x2_t b) {
4709  // CHECK-LABEL: test_vaddhn_s64
4710  return vaddhn_s64(a, b);
4711  // CHECK: addhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4712}
4713
4714uint8x8_t test_vaddhn_u16(uint16x8_t a, uint16x8_t b) {
4715  // CHECK-LABEL: test_vaddhn_u16
4716  return vaddhn_u16(a, b);
4717  // CHECK: addhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4718}
4719
4720uint16x4_t test_vaddhn_u32(uint32x4_t a, uint32x4_t b) {
4721  // CHECK-LABEL: test_vaddhn_u32
4722  return vaddhn_u32(a, b);
4723  // CHECK: addhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4724}
4725
4726uint32x2_t test_vaddhn_u64(uint64x2_t a, uint64x2_t b) {
4727  // CHECK-LABEL: test_vaddhn_u64
4728  return vaddhn_u64(a, b);
4729  // CHECK: addhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4730}
4731
4732int8x16_t test_vaddhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
4733  // CHECK-LABEL: test_vaddhn_high_s16
4734  return vaddhn_high_s16(r, a, b);
4735  // CHECK: addhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4736}
4737
4738int16x8_t test_vaddhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
4739  // CHECK-LABEL: test_vaddhn_high_s32
4740  return vaddhn_high_s32(r, a, b);
4741  // CHECK: addhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4742}
4743
4744int32x4_t test_vaddhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
4745  // CHECK-LABEL: test_vaddhn_high_s64
4746  return vaddhn_high_s64(r, a, b);
4747  // CHECK: addhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4748}
4749
4750uint8x16_t test_vaddhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
4751  // CHECK-LABEL: test_vaddhn_high_u16
4752  return vaddhn_high_u16(r, a, b);
4753  // CHECK: addhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4754}
4755
4756uint16x8_t test_vaddhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
4757  // CHECK-LABEL: test_vaddhn_high_u32
4758  return vaddhn_high_u32(r, a, b);
4759  // CHECK: addhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4760}
4761
4762uint32x4_t test_vaddhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
4763  // CHECK-LABEL: test_vaddhn_high_u64
4764  return vaddhn_high_u64(r, a, b);
4765  // CHECK: addhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4766}
4767
4768int8x8_t test_vraddhn_s16(int16x8_t a, int16x8_t b) {
4769  // CHECK-LABEL: test_vraddhn_s16
4770  return vraddhn_s16(a, b);
4771  // CHECK: raddhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4772}
4773
4774int16x4_t test_vraddhn_s32(int32x4_t a, int32x4_t b) {
4775  // CHECK-LABEL: test_vraddhn_s32
4776  return vraddhn_s32(a, b);
4777  // CHECK: raddhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4778}
4779
4780int32x2_t test_vraddhn_s64(int64x2_t a, int64x2_t b) {
4781  // CHECK-LABEL: test_vraddhn_s64
4782  return vraddhn_s64(a, b);
4783  // CHECK: raddhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4784}
4785
4786uint8x8_t test_vraddhn_u16(uint16x8_t a, uint16x8_t b) {
4787  // CHECK-LABEL: test_vraddhn_u16
4788  return vraddhn_u16(a, b);
4789  // CHECK: raddhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4790}
4791
4792uint16x4_t test_vraddhn_u32(uint32x4_t a, uint32x4_t b) {
4793  // CHECK-LABEL: test_vraddhn_u32
4794  return vraddhn_u32(a, b);
4795  // CHECK: raddhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4796}
4797
4798uint32x2_t test_vraddhn_u64(uint64x2_t a, uint64x2_t b) {
4799  // CHECK-LABEL: test_vraddhn_u64
4800  return vraddhn_u64(a, b);
4801  // CHECK: raddhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4802}
4803
4804int8x16_t test_vraddhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
4805  // CHECK-LABEL: test_vraddhn_high_s16
4806  return vraddhn_high_s16(r, a, b);
4807  // CHECK: raddhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4808}
4809
4810int16x8_t test_vraddhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
4811  // CHECK-LABEL: test_vraddhn_high_s32
4812  return vraddhn_high_s32(r, a, b);
4813  // CHECK: raddhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4814}
4815
4816int32x4_t test_vraddhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
4817  // CHECK-LABEL: test_vraddhn_high_s64
4818  return vraddhn_high_s64(r, a, b);
4819  // CHECK: raddhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4820}
4821
4822uint8x16_t test_vraddhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
4823  // CHECK-LABEL: test_vraddhn_high_u16
4824  return vraddhn_high_u16(r, a, b);
4825  // CHECK: raddhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4826}
4827
4828uint16x8_t test_vraddhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
4829  // CHECK-LABEL: test_vraddhn_high_u32
4830  return vraddhn_high_u32(r, a, b);
4831  // CHECK: raddhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4832}
4833
4834uint32x4_t test_vraddhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
4835  // CHECK-LABEL: test_vraddhn_high_u64
4836  return vraddhn_high_u64(r, a, b);
4837  // CHECK: raddhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4838}
4839
4840int8x8_t test_vsubhn_s16(int16x8_t a, int16x8_t b) {
4841  // CHECK-LABEL: test_vsubhn_s16
4842  return vsubhn_s16(a, b);
4843  // CHECK: subhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4844}
4845
4846int16x4_t test_vsubhn_s32(int32x4_t a, int32x4_t b) {
4847  // CHECK-LABEL: test_vsubhn_s32
4848  return vsubhn_s32(a, b);
4849  // CHECK: subhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4850}
4851
4852int32x2_t test_vsubhn_s64(int64x2_t a, int64x2_t b) {
4853  // CHECK-LABEL: test_vsubhn_s64
4854  return vsubhn_s64(a, b);
4855  // CHECK: subhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4856}
4857
4858uint8x8_t test_vsubhn_u16(uint16x8_t a, uint16x8_t b) {
4859  // CHECK-LABEL: test_vsubhn_u16
4860  return vsubhn_u16(a, b);
4861  // CHECK: subhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4862}
4863
4864uint16x4_t test_vsubhn_u32(uint32x4_t a, uint32x4_t b) {
4865  // CHECK-LABEL: test_vsubhn_u32
4866  return vsubhn_u32(a, b);
4867  // CHECK: subhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4868}
4869
4870uint32x2_t test_vsubhn_u64(uint64x2_t a, uint64x2_t b) {
4871  // CHECK-LABEL: test_vsubhn_u64
4872  return vsubhn_u64(a, b);
4873  // CHECK: subhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4874}
4875
4876int8x16_t test_vsubhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
4877  // CHECK-LABEL: test_vsubhn_high_s16
4878  return vsubhn_high_s16(r, a, b);
4879  // CHECK: subhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4880}
4881
4882int16x8_t test_vsubhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
4883  // CHECK-LABEL: test_vsubhn_high_s32
4884  return vsubhn_high_s32(r, a, b);
4885  // CHECK: subhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4886}
4887
4888int32x4_t test_vsubhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
4889  // CHECK-LABEL: test_vsubhn_high_s64
4890  return vsubhn_high_s64(r, a, b);
4891  // CHECK: subhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4892}
4893
4894uint8x16_t test_vsubhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
4895  // CHECK-LABEL: test_vsubhn_high_u16
4896  return vsubhn_high_u16(r, a, b);
4897  // CHECK: subhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4898}
4899
4900uint16x8_t test_vsubhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
4901  // CHECK-LABEL: test_vsubhn_high_u32
4902  return vsubhn_high_u32(r, a, b);
4903  // CHECK: subhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4904}
4905
4906uint32x4_t test_vsubhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
4907  // CHECK-LABEL: test_vsubhn_high_u64
4908  return vsubhn_high_u64(r, a, b);
4909  // CHECK: subhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4910}
4911
4912int8x8_t test_vrsubhn_s16(int16x8_t a, int16x8_t b) {
4913  // CHECK-LABEL: test_vrsubhn_s16
4914  return vrsubhn_s16(a, b);
4915  // CHECK: rsubhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4916}
4917
4918int16x4_t test_vrsubhn_s32(int32x4_t a, int32x4_t b) {
4919  // CHECK-LABEL: test_vrsubhn_s32
4920  return vrsubhn_s32(a, b);
4921  // CHECK: rsubhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4922}
4923
4924int32x2_t test_vrsubhn_s64(int64x2_t a, int64x2_t b) {
4925  // CHECK-LABEL: test_vrsubhn_s64
4926  return vrsubhn_s64(a, b);
4927  // CHECK: rsubhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4928}
4929
4930uint8x8_t test_vrsubhn_u16(uint16x8_t a, uint16x8_t b) {
4931  // CHECK-LABEL: test_vrsubhn_u16
4932  return vrsubhn_u16(a, b);
4933  // CHECK: rsubhn {{v[0-9]+}}.8b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4934}
4935
4936uint16x4_t test_vrsubhn_u32(uint32x4_t a, uint32x4_t b) {
4937  // CHECK-LABEL: test_vrsubhn_u32
4938  return vrsubhn_u32(a, b);
4939  // CHECK: rsubhn {{v[0-9]+}}.4h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4940}
4941
4942uint32x2_t test_vrsubhn_u64(uint64x2_t a, uint64x2_t b) {
4943  // CHECK-LABEL: test_vrsubhn_u64
4944  return vrsubhn_u64(a, b);
4945  // CHECK: rsubhn {{v[0-9]+}}.2s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4946}
4947
4948int8x16_t test_vrsubhn_high_s16(int8x8_t r, int16x8_t a, int16x8_t b) {
4949  // CHECK-LABEL: test_vrsubhn_high_s16
4950  return vrsubhn_high_s16(r, a, b);
4951  // CHECK: rsubhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4952}
4953
4954int16x8_t test_vrsubhn_high_s32(int16x4_t r, int32x4_t a, int32x4_t b) {
4955  // CHECK-LABEL: test_vrsubhn_high_s32
4956  return vrsubhn_high_s32(r, a, b);
4957  // CHECK: rsubhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4958}
4959
4960int32x4_t test_vrsubhn_high_s64(int32x2_t r, int64x2_t a, int64x2_t b) {
4961  // CHECK-LABEL: test_vrsubhn_high_s64
4962  return vrsubhn_high_s64(r, a, b);
4963  // CHECK: rsubhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4964}
4965
4966uint8x16_t test_vrsubhn_high_u16(uint8x8_t r, uint16x8_t a, uint16x8_t b) {
4967  // CHECK-LABEL: test_vrsubhn_high_u16
4968  return vrsubhn_high_u16(r, a, b);
4969  // CHECK: rsubhn2 {{v[0-9]+}}.16b, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
4970}
4971
4972uint16x8_t test_vrsubhn_high_u32(uint16x4_t r, uint32x4_t a, uint32x4_t b) {
4973  // CHECK-LABEL: test_vrsubhn_high_u32
4974  return vrsubhn_high_u32(r, a, b);
4975  // CHECK: rsubhn2 {{v[0-9]+}}.8h, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
4976}
4977
4978uint32x4_t test_vrsubhn_high_u64(uint32x2_t r, uint64x2_t a, uint64x2_t b) {
4979  // CHECK-LABEL: test_vrsubhn_high_u64
4980  return vrsubhn_high_u64(r, a, b);
4981  // CHECK: rsubhn2 {{v[0-9]+}}.4s, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
4982}
4983
4984int16x8_t test_vabdl_s8(int8x8_t a, int8x8_t b) {
4985  // CHECK-LABEL: test_vabdl_s8
4986  return vabdl_s8(a, b);
4987  // CHECK: sabdl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
4988}
4989int32x4_t test_vabdl_s16(int16x4_t a, int16x4_t b) {
4990  // CHECK-LABEL: test_vabdl_s16
4991  return vabdl_s16(a, b);
4992  // CHECK: sabdl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
4993}
4994int64x2_t test_vabdl_s32(int32x2_t a, int32x2_t b) {
4995  // CHECK-LABEL: test_vabdl_s32
4996  return vabdl_s32(a, b);
4997  // CHECK: sabdl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
4998}
4999uint16x8_t test_vabdl_u8(uint8x8_t a, uint8x8_t b) {
5000  // CHECK-LABEL: test_vabdl_u8
5001  return vabdl_u8(a, b);
5002  // CHECK: uabdl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5003}
5004uint32x4_t test_vabdl_u16(uint16x4_t a, uint16x4_t b) {
5005  // CHECK-LABEL: test_vabdl_u16
5006  return vabdl_u16(a, b);
5007  // CHECK: uabdl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5008}
5009uint64x2_t test_vabdl_u32(uint32x2_t a, uint32x2_t b) {
5010  // CHECK-LABEL: test_vabdl_u32
5011  return vabdl_u32(a, b);
5012  // CHECK: uabdl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5013}
5014
5015int16x8_t test_vabal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
5016  // CHECK-LABEL: test_vabal_s8
5017  return vabal_s8(a, b, c);
5018  // CHECK: sabal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5019}
5020int32x4_t test_vabal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
5021  // CHECK-LABEL: test_vabal_s16
5022  return vabal_s16(a, b, c);
5023  // CHECK: sabal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5024}
5025int64x2_t test_vabal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
5026  // CHECK-LABEL: test_vabal_s32
5027  return vabal_s32(a, b, c);
5028  // CHECK: sabal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5029}
5030uint16x8_t test_vabal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
5031  // CHECK-LABEL: test_vabal_u8
5032  return vabal_u8(a, b, c);
5033  // CHECK: uabal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5034}
5035uint32x4_t test_vabal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
5036  // CHECK-LABEL: test_vabal_u16
5037  return vabal_u16(a, b, c);
5038  // CHECK: uabal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5039}
5040uint64x2_t test_vabal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
5041  // CHECK-LABEL: test_vabal_u32
5042  return vabal_u32(a, b, c);
5043  // CHECK: uabal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5044}
5045
5046int16x8_t test_vabdl_high_s8(int8x16_t a, int8x16_t b) {
5047  // CHECK-LABEL: test_vabdl_high_s8
5048  return vabdl_high_s8(a, b);
5049  // CHECK: sabdl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5050}
5051int32x4_t test_vabdl_high_s16(int16x8_t a, int16x8_t b) {
5052  // CHECK-LABEL: test_vabdl_high_s16
5053  return vabdl_high_s16(a, b);
5054  // CHECK: sabdl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5055}
5056int64x2_t test_vabdl_high_s32(int32x4_t a, int32x4_t b) {
5057  // CHECK-LABEL: test_vabdl_high_s32
5058  return vabdl_high_s32(a, b);
5059  // CHECK: sabdl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5060}
5061uint16x8_t test_vabdl_high_u8(uint8x16_t a, uint8x16_t b) {
5062  // CHECK-LABEL: test_vabdl_high_u8
5063  return vabdl_high_u8(a, b);
5064  // CHECK: uabdl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5065}
5066uint32x4_t test_vabdl_high_u16(uint16x8_t a, uint16x8_t b) {
5067  // CHECK-LABEL: test_vabdl_high_u16
5068  return vabdl_high_u16(a, b);
5069  // CHECK: uabdl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5070}
5071uint64x2_t test_vabdl_high_u32(uint32x4_t a, uint32x4_t b) {
5072  // CHECK-LABEL: test_vabdl_high_u32
5073  return vabdl_high_u32(a, b);
5074  // CHECK: uabdl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5075}
5076
5077int16x8_t test_vabal_high_s8(int16x8_t a, int8x16_t b, int8x16_t c) {
5078  // CHECK-LABEL: test_vabal_high_s8
5079  return vabal_high_s8(a, b, c);
5080  // CHECK: sabal2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5081}
5082int32x4_t test_vabal_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
5083  // CHECK-LABEL: test_vabal_high_s16
5084  return vabal_high_s16(a, b, c);
5085  // CHECK: sabal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5086}
5087int64x2_t test_vabal_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
5088  // CHECK-LABEL: test_vabal_high_s32
5089  return vabal_high_s32(a, b, c);
5090  // CHECK: sabal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5091}
5092uint16x8_t test_vabal_high_u8(uint16x8_t a, uint8x16_t b, uint8x16_t c) {
5093  // CHECK-LABEL: test_vabal_high_u8
5094  return vabal_high_u8(a, b, c);
5095  // CHECK: uabal2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5096}
5097uint32x4_t test_vabal_high_u16(uint32x4_t a, uint16x8_t b, uint16x8_t c) {
5098  // CHECK-LABEL: test_vabal_high_u16
5099  return vabal_high_u16(a, b, c);
5100  // CHECK: uabal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5101}
5102uint64x2_t test_vabal_high_u32(uint64x2_t a, uint32x4_t b, uint32x4_t c) {
5103  // CHECK-LABEL: test_vabal_high_u32
5104  return vabal_high_u32(a, b, c);
5105  // CHECK: uabal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5106}
5107
5108int16x8_t test_vmull_s8(int8x8_t a, int8x8_t b) {
5109  // CHECK-LABEL: test_vmull_s8
5110  return vmull_s8(a, b);
5111  // CHECK: smull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5112}
5113int32x4_t test_vmull_s16(int16x4_t a, int16x4_t b) {
5114  // CHECK-LABEL: test_vmull_s16
5115  return vmull_s16(a, b);
5116  // CHECK: smull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5117}
5118int64x2_t test_vmull_s32(int32x2_t a, int32x2_t b) {
5119  // CHECK-LABEL: test_vmull_s32
5120  return vmull_s32(a, b);
5121  // CHECK: smull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5122}
5123uint16x8_t test_vmull_u8(uint8x8_t a, uint8x8_t b) {
5124  // CHECK-LABEL: test_vmull_u8
5125  return vmull_u8(a, b);
5126  // CHECK: umull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5127}
5128uint32x4_t test_vmull_u16(uint16x4_t a, uint16x4_t b) {
5129  // CHECK-LABEL: test_vmull_u16
5130  return vmull_u16(a, b);
5131  // CHECK: umull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5132}
5133uint64x2_t test_vmull_u32(uint32x2_t a, uint32x2_t b) {
5134  // CHECK-LABEL: test_vmull_u32
5135  return vmull_u32(a, b);
5136  // CHECK: umull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5137}
5138
5139int16x8_t test_vmull_high_s8(int8x16_t a, int8x16_t b) {
5140  // CHECK-LABEL: test_vmull_high_s8
5141  return vmull_high_s8(a, b);
5142  // CHECK: smull2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5143}
5144int32x4_t test_vmull_high_s16(int16x8_t a, int16x8_t b) {
5145  // CHECK-LABEL: test_vmull_high_s16
5146  return vmull_high_s16(a, b);
5147  // CHECK: smull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5148}
5149int64x2_t test_vmull_high_s32(int32x4_t a, int32x4_t b) {
5150  // CHECK-LABEL: test_vmull_high_s32
5151  return vmull_high_s32(a, b);
5152  // CHECK: smull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5153}
5154uint16x8_t test_vmull_high_u8(uint8x16_t a, uint8x16_t b) {
5155  // CHECK-LABEL: test_vmull_high_u8
5156  return vmull_high_u8(a, b);
5157  // CHECK: umull2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5158}
5159uint32x4_t test_vmull_high_u16(uint16x8_t a, uint16x8_t b) {
5160  // CHECK-LABEL: test_vmull_high_u16
5161  return vmull_high_u16(a, b);
5162  // CHECK: umull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5163}
5164uint64x2_t test_vmull_high_u32(uint32x4_t a, uint32x4_t b) {
5165  // CHECK-LABEL: test_vmull_high_u32
5166  return vmull_high_u32(a, b);
5167  // CHECK: umull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5168}
5169
5170int16x8_t test_vmlal_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
5171  // CHECK-LABEL: test_vmlal_s8
5172  return vmlal_s8(a, b, c);
5173  // CHECK: smlal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5174}
5175int32x4_t test_vmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
5176  // CHECK-LABEL: test_vmlal_s16
5177  return vmlal_s16(a, b, c);
5178  // CHECK: smlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5179}
5180int64x2_t test_vmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
5181  // CHECK-LABEL: test_vmlal_s32
5182  return vmlal_s32(a, b, c);
5183  // CHECK: smlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5184}
5185uint16x8_t test_vmlal_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
5186  // CHECK-LABEL: test_vmlal_u8
5187  return vmlal_u8(a, b, c);
5188  // CHECK: umlal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5189}
5190uint32x4_t test_vmlal_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
5191  // CHECK-LABEL: test_vmlal_u16
5192  return vmlal_u16(a, b, c);
5193  // CHECK: umlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5194}
5195uint64x2_t test_vmlal_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
5196  // CHECK-LABEL: test_vmlal_u32
5197  return vmlal_u32(a, b, c);
5198  // CHECK: umlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5199}
5200
5201int16x8_t test_vmlal_high_s8(int16x8_t a, int8x16_t b, int8x16_t c) {
5202  // CHECK-LABEL: test_vmlal_high_s8
5203  return vmlal_high_s8(a, b, c);
5204  // CHECK: smlal2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5205}
5206int32x4_t test_vmlal_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
5207  // CHECK-LABEL: test_vmlal_high_s16
5208  return vmlal_high_s16(a, b, c);
5209  // CHECK: smlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5210}
5211int64x2_t test_vmlal_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
5212  // CHECK-LABEL: test_vmlal_high_s32
5213  return vmlal_high_s32(a, b, c);
5214  // CHECK: smlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5215}
5216uint16x8_t test_vmlal_high_u8(uint16x8_t a, uint8x16_t b, uint8x16_t c) {
5217  // CHECK-LABEL: test_vmlal_high_u8
5218  return vmlal_high_u8(a, b, c);
5219  // CHECK: umlal2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5220}
5221uint32x4_t test_vmlal_high_u16(uint32x4_t a, uint16x8_t b, uint16x8_t c) {
5222  // CHECK-LABEL: test_vmlal_high_u16
5223  return vmlal_high_u16(a, b, c);
5224  // CHECK: umlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5225}
5226uint64x2_t test_vmlal_high_u32(uint64x2_t a, uint32x4_t b, uint32x4_t c) {
5227  // CHECK-LABEL: test_vmlal_high_u32
5228  return vmlal_high_u32(a, b, c);
5229  // CHECK: umlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5230}
5231
5232int16x8_t test_vmlsl_s8(int16x8_t a, int8x8_t b, int8x8_t c) {
5233  // CHECK-LABEL: test_vmlsl_s8
5234  return vmlsl_s8(a, b, c);
5235  // CHECK: smlsl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5236}
5237int32x4_t test_vmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
5238  // CHECK-LABEL: test_vmlsl_s16
5239  return vmlsl_s16(a, b, c);
5240  // CHECK: smlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5241}
5242int64x2_t test_vmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
5243  // CHECK-LABEL: test_vmlsl_s32
5244  return vmlsl_s32(a, b, c);
5245  // CHECK: smlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5246}
5247uint16x8_t test_vmlsl_u8(uint16x8_t a, uint8x8_t b, uint8x8_t c) {
5248  // CHECK-LABEL: test_vmlsl_u8
5249  return vmlsl_u8(a, b, c);
5250  // CHECK: umlsl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5251}
5252uint32x4_t test_vmlsl_u16(uint32x4_t a, uint16x4_t b, uint16x4_t c) {
5253  // CHECK-LABEL: test_vmlsl_u16
5254  return vmlsl_u16(a, b, c);
5255  // CHECK: umlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5256}
5257uint64x2_t test_vmlsl_u32(uint64x2_t a, uint32x2_t b, uint32x2_t c) {
5258  // CHECK-LABEL: test_vmlsl_u32
5259  return vmlsl_u32(a, b, c);
5260  // CHECK: umlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5261}
5262
5263int16x8_t test_vmlsl_high_s8(int16x8_t a, int8x16_t b, int8x16_t c) {
5264  // CHECK-LABEL: test_vmlsl_high_s8
5265  return vmlsl_high_s8(a, b, c);
5266  // CHECK: smlsl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5267}
5268int32x4_t test_vmlsl_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
5269  // CHECK-LABEL: test_vmlsl_high_s16
5270  return vmlsl_high_s16(a, b, c);
5271  // CHECK: smlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5272}
5273int64x2_t test_vmlsl_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
5274  // CHECK-LABEL: test_vmlsl_high_s32
5275  return vmlsl_high_s32(a, b, c);
5276  // CHECK: smlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5277}
5278uint16x8_t test_vmlsl_high_u8(uint16x8_t a, uint8x16_t b, uint8x16_t c) {
5279  // CHECK-LABEL: test_vmlsl_high_u8
5280  return vmlsl_high_u8(a, b, c);
5281  // CHECK: umlsl2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5282}
5283uint32x4_t test_vmlsl_high_u16(uint32x4_t a, uint16x8_t b, uint16x8_t c) {
5284  // CHECK-LABEL: test_vmlsl_high_u16
5285  return vmlsl_high_u16(a, b, c);
5286  // CHECK: umlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5287}
5288uint64x2_t test_vmlsl_high_u32(uint64x2_t a, uint32x4_t b, uint32x4_t c) {
5289  // CHECK-LABEL: test_vmlsl_high_u32
5290  return vmlsl_high_u32(a, b, c);
5291  // CHECK: umlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5292}
5293
5294int32x4_t test_vqdmull_s16(int16x4_t a, int16x4_t b) {
5295  // CHECK-LABEL: test_vqdmull_s16
5296  return vqdmull_s16(a, b);
5297  // CHECK: sqdmull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5298}
5299int64x2_t test_vqdmull_s32(int32x2_t a, int32x2_t b) {
5300  // CHECK-LABEL: test_vqdmull_s32
5301  return vqdmull_s32(a, b);
5302  // CHECK: sqdmull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5303}
5304
5305int32x4_t test_vqdmlal_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
5306  // CHECK-LABEL: test_vqdmlal_s16
5307  return vqdmlal_s16(a, b, c);
5308  // CHECK: sqdmlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5309}
5310
5311int64x2_t test_vqdmlal_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
5312  // CHECK-LABEL: test_vqdmlal_s32
5313  return vqdmlal_s32(a, b, c);
5314  // CHECK: sqdmlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5315}
5316
5317int32x4_t test_vqdmlsl_s16(int32x4_t a, int16x4_t b, int16x4_t c) {
5318  // CHECK-LABEL: test_vqdmlsl_s16
5319  return vqdmlsl_s16(a, b, c);
5320  // CHECK: sqdmlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
5321}
5322
5323int64x2_t test_vqdmlsl_s32(int64x2_t a, int32x2_t b, int32x2_t c) {
5324  // CHECK-LABEL: test_vqdmlsl_s32
5325  return vqdmlsl_s32(a, b, c);
5326  // CHECK: sqdmlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5327}
5328
5329int32x4_t test_vqdmull_high_s16(int16x8_t a, int16x8_t b) {
5330  // CHECK-LABEL: test_vqdmull_high_s16
5331  return vqdmull_high_s16(a, b);
5332  // CHECK: sqdmull2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5333}
5334int64x2_t test_vqdmull_high_s32(int32x4_t a, int32x4_t b) {
5335  // CHECK-LABEL: test_vqdmull_high_s32
5336  return vqdmull_high_s32(a, b);
5337  // CHECK: sqdmull2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5338}
5339
5340int32x4_t test_vqdmlal_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
5341  // CHECK-LABEL: test_vqdmlal_high_s16
5342  return vqdmlal_high_s16(a, b, c);
5343  // CHECK: sqdmlal2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5344}
5345
5346int64x2_t test_vqdmlal_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
5347  // CHECK-LABEL: test_vqdmlal_high_s32
5348  return vqdmlal_high_s32(a, b, c);
5349  // CHECK: sqdmlal2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5350}
5351
5352int32x4_t test_vqdmlsl_high_s16(int32x4_t a, int16x8_t b, int16x8_t c) {
5353  // CHECK-LABEL: test_vqdmlsl_high_s16
5354  return vqdmlsl_high_s16(a, b, c);
5355  // CHECK: sqdmlsl2 {{v[0-9]+}}.4s, {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
5356}
5357
5358int64x2_t test_vqdmlsl_high_s32(int64x2_t a, int32x4_t b, int32x4_t c) {
5359  // CHECK-LABEL: test_vqdmlsl_high_s32
5360  return vqdmlsl_high_s32(a, b, c);
5361  // CHECK: sqdmlsl2 {{v[0-9]+}}.2d, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5362}
5363
5364poly16x8_t test_vmull_p8(poly8x8_t a, poly8x8_t b) {
5365  // CHECK-LABEL: test_vmull_p8
5366  return vmull_p8(a, b);
5367  // CHECK: pmull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
5368}
5369
5370poly16x8_t test_vmull_high_p8(poly8x16_t a, poly8x16_t b) {
5371  // CHECK-LABEL: test_vmull_high_p8
5372  return vmull_high_p8(a, b);
5373  // CHECK: pmull2 {{v[0-9]+}}.8h, {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
5374}
5375
5376int64_t test_vaddd_s64(int64_t a, int64_t b) {
5377// CHECK-LABEL: test_vaddd_s64
5378  return vaddd_s64(a, b);
5379// CHECK: add {{[xd][0-9]+}}, {{[xd][0-9]+}}, {{[xd][0-9]+}}
5380}
5381
5382uint64_t test_vaddd_u64(uint64_t a, uint64_t b) {
5383// CHECK-LABEL: test_vaddd_u64
5384  return vaddd_u64(a, b);
5385// CHECK: add {{[xd][0-9]+}}, {{[xd][0-9]+}}, {{[xd][0-9]+}}
5386}
5387
5388int64_t test_vsubd_s64(int64_t a, int64_t b) {
5389// CHECK-LABEL: test_vsubd_s64
5390  return vsubd_s64(a, b);
5391// CHECK: sub {{[xd][0-9]+}}, {{[xd][0-9]+}}, {{[xd][0-9]+}}
5392}
5393
5394uint64_t test_vsubd_u64(uint64_t a, uint64_t b) {
5395// CHECK-LABEL: test_vsubd_u64
5396  return vsubd_u64(a, b);
5397// CHECK: sub {{[xd][0-9]+}}, {{[xd][0-9]+}}, {{[xd][0-9]+}}
5398}
5399
5400int8_t test_vqaddb_s8(int8_t a, int8_t b) {
5401// CHECK-LABEL: test_vqaddb_s8
5402  return vqaddb_s8(a, b);
5403// CHECK: sqadd {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
5404}
5405
5406int16_t test_vqaddh_s16(int16_t a, int16_t b) {
5407// CHECK-LABEL: test_vqaddh_s16
5408  return vqaddh_s16(a, b);
5409// CHECK: sqadd {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5410}
5411
5412int32_t test_vqadds_s32(int32_t a, int32_t b) {
5413// CHECK-LABEL: test_vqadds_s32
5414  return vqadds_s32(a, b);
5415// CHECK: sqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5416}
5417
5418int64_t test_vqaddd_s64(int64_t a, int64_t b) {
5419// CHECK-LABEL: test_vqaddd_s64
5420  return vqaddd_s64(a, b);
5421// CHECK: sqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5422}
5423
5424uint8_t test_vqaddb_u8(uint8_t a, uint8_t b) {
5425// CHECK-LABEL: test_vqaddb_u8
5426  return vqaddb_u8(a, b);
5427// CHECK: uqadd {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
5428}
5429
5430uint16_t test_vqaddh_u16(uint16_t a, uint16_t b) {
5431// CHECK-LABEL: test_vqaddh_u16
5432  return vqaddh_u16(a, b);
5433// CHECK: uqadd {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5434}
5435
5436uint32_t test_vqadds_u32(uint32_t a, uint32_t b) {
5437// CHECK-LABEL: test_vqadds_u32
5438  return vqadds_u32(a, b);
5439// CHECK: uqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5440}
5441
5442uint64_t test_vqaddd_u64(uint64_t a, uint64_t b) {
5443// CHECK-LABEL: test_vqaddd_u64
5444  return vqaddd_u64(a, b);
5445// CHECK: uqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5446}
5447
5448int8_t test_vqsubb_s8(int8_t a, int8_t b) {
5449// CHECK-LABEL: test_vqsubb_s8
5450  return vqsubb_s8(a, b);
5451// CHECK: sqsub {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
5452}
5453
5454int16_t test_vqsubh_s16(int16_t a, int16_t b) {
5455// CHECK-LABEL: test_vqsubh_s16
5456  return vqsubh_s16(a, b);
5457// CHECK: sqsub {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5458}
5459
5460int32_t test_vqsubs_s32(int32_t a, int32_t b) {
5461  // CHECK-LABEL: test_vqsubs_s32
5462  return vqsubs_s32(a, b);
5463// CHECK: sqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5464}
5465
5466int64_t test_vqsubd_s64(int64_t a, int64_t b) {
5467// CHECK-LABEL: test_vqsubd_s64
5468  return vqsubd_s64(a, b);
5469// CHECK: sqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5470}
5471
5472uint8_t test_vqsubb_u8(uint8_t a, uint8_t b) {
5473// CHECK-LABEL: test_vqsubb_u8
5474  return vqsubb_u8(a, b);
5475// CHECK: uqsub {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
5476}
5477
5478uint16_t test_vqsubh_u16(uint16_t a, uint16_t b) {
5479// CHECK-LABEL: test_vqsubh_u16
5480  return vqsubh_u16(a, b);
5481// CHECK: uqsub {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5482}
5483
5484uint32_t test_vqsubs_u32(uint32_t a, uint32_t b) {
5485// CHECK-LABEL: test_vqsubs_u32
5486  return vqsubs_u32(a, b);
5487// CHECK: uqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5488}
5489
5490uint64_t test_vqsubd_u64(uint64_t a, uint64_t b) {
5491// CHECK-LABEL: test_vqsubd_u64
5492  return vqsubd_u64(a, b);
5493// CHECK: uqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5494}
5495
5496int64_t test_vshld_s64(int64_t a, int64_t b) {
5497// CHECK-LABEL: test_vshld_s64
5498  return vshld_s64(a, b);
5499// CHECK: sshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5500}
5501
5502uint64_t test_vshld_u64(uint64_t a, uint64_t b) {
5503// CHECK-LABEL: test_vshld_u64
5504  return vshld_u64(a, b);
5505// CHECK: ushl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5506}
5507
5508// CHECK-LABEL: test_vqshlb_s8
5509int8_t test_vqshlb_s8(int8_t a, int8_t b) {
5510  return vqshlb_s8(a, b);
5511// CHECK: sqshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
5512}
5513
5514// CHECK-LABEL: test_vqshlh_s16
5515int16_t test_vqshlh_s16(int16_t a, int16_t b) {
5516  return vqshlh_s16(a, b);
5517// CHECK: sqshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5518}
5519
5520// CHECK-LABEL: test_vqshls_s32
5521int32_t test_vqshls_s32(int32_t a, int32_t b) {
5522  return vqshls_s32(a, b);
5523// CHECK: sqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5524}
5525
5526// CHECK-LABEL: test_vqshld_s64
5527int64_t test_vqshld_s64(int64_t a, int64_t b) {
5528  return vqshld_s64(a, b);
5529// CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5530}
5531
5532// CHECK-LABEL: test_vqshlb_u8
5533uint8_t test_vqshlb_u8(uint8_t a, uint8_t b) {
5534  return vqshlb_u8(a, b);
5535// CHECK: uqshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
5536}
5537
5538// CHECK-LABEL: test_vqshlh_u16
5539uint16_t test_vqshlh_u16(uint16_t a, uint16_t b) {
5540  return vqshlh_u16(a, b);
5541// CHECK: uqshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5542}
5543
5544// CHECK-LABEL: test_vqshls_u32
5545uint32_t test_vqshls_u32(uint32_t a, uint32_t b) {
5546  return vqshls_u32(a, b);
5547// CHECK: uqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5548}
5549
5550// CHECK-LABEL: test_vqshld_u64
5551uint64_t test_vqshld_u64(uint64_t a, uint64_t b) {
5552  return vqshld_u64(a, b);
5553// CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5554}
5555
5556// CHECK-LABEL: test_vrshld_s64
5557int64_t test_vrshld_s64(int64_t a, int64_t b) {
5558  return vrshld_s64(a, b);
5559// CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5560}
5561
5562
5563// CHECK-LABEL: test_vrshld_u64
5564uint64_t test_vrshld_u64(uint64_t a, uint64_t b) {
5565  return vrshld_u64(a, b);
5566// CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5567}
5568
5569// CHECK-LABEL: test_vqrshlb_s8
5570int8_t test_vqrshlb_s8(int8_t a, int8_t b) {
5571  return vqrshlb_s8(a, b);
5572// CHECK: sqrshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
5573}
5574
5575// CHECK-LABEL: test_vqrshlh_s16
5576int16_t test_vqrshlh_s16(int16_t a, int16_t b) {
5577  return vqrshlh_s16(a, b);
5578// CHECK: sqrshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5579}
5580
5581// CHECK-LABEL: test_vqrshls_s32
5582int32_t test_vqrshls_s32(int32_t a, int32_t b) {
5583  return vqrshls_s32(a, b);
5584// CHECK: sqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5585}
5586
5587// CHECK-LABEL: test_vqrshld_s64
5588int64_t test_vqrshld_s64(int64_t a, int64_t b) {
5589  return vqrshld_s64(a, b);
5590// CHECK: sqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5591}
5592
5593// CHECK-LABEL: test_vqrshlb_u8
5594uint8_t test_vqrshlb_u8(uint8_t a, uint8_t b) {
5595  return vqrshlb_u8(a, b);
5596// CHECK: uqrshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
5597}
5598
5599// CHECK-LABEL: test_vqrshlh_u16
5600uint16_t test_vqrshlh_u16(uint16_t a, uint16_t b) {
5601  return vqrshlh_u16(a, b);
5602// CHECK: uqrshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5603}
5604
5605// CHECK-LABEL: test_vqrshls_u32
5606uint32_t test_vqrshls_u32(uint32_t a, uint32_t b) {
5607  return vqrshls_u32(a, b);
5608// CHECK: uqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5609}
5610
5611// CHECK-LABEL: test_vqrshld_u64
5612uint64_t test_vqrshld_u64(uint64_t a, uint64_t b) {
5613  return vqrshld_u64(a, b);
5614// CHECK: uqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5615}
5616
5617// CHECK-LABEL: test_vpaddd_s64
5618int64_t test_vpaddd_s64(int64x2_t a) {
5619  return vpaddd_s64(a);
5620// CHECK: addp {{d[0-9]+}}, {{v[0-9]+}}.2d
5621}
5622
5623// CHECK-LABEL: test_vpadds_f32
5624float32_t test_vpadds_f32(float32x2_t a) {
5625  return vpadds_f32(a);
5626// CHECK: faddp {{s[0-9]+}}, {{v[0-9]+}}.2s
5627}
5628
5629// CHECK-LABEL: test_vpaddd_f64
5630float64_t test_vpaddd_f64(float64x2_t a) {
5631  return vpaddd_f64(a);
5632// CHECK: faddp {{d[0-9]+}}, {{v[0-9]+}}.2d
5633}
5634
5635// CHECK-LABEL: test_vpmaxnms_f32
5636float32_t test_vpmaxnms_f32(float32x2_t a) {
5637  return vpmaxnms_f32(a);
5638// CHECK: fmaxnmp {{s[0-9]+}}, {{v[0-9]+}}.2s
5639}
5640
5641// CHECK-LABEL: test_vpmaxnmqd_f64
5642float64_t test_vpmaxnmqd_f64(float64x2_t a) {
5643  return vpmaxnmqd_f64(a);
5644// CHECK: fmaxnmp {{d[0-9]+}}, {{v[0-9]+}}.2d
5645}
5646
5647// CHECK-LABEL: test_vpmaxs_f32
5648float32_t test_vpmaxs_f32(float32x2_t a) {
5649  return vpmaxs_f32(a);
5650// CHECK: fmaxp {{s[0-9]+}}, {{v[0-9]+}}.2s
5651}
5652
5653// CHECK-LABEL: test_vpmaxqd_f64
5654float64_t test_vpmaxqd_f64(float64x2_t a) {
5655  return vpmaxqd_f64(a);
5656// CHECK: fmaxp {{d[0-9]+}}, {{v[0-9]+}}.2d
5657}
5658
5659// CHECK-LABEL: test_vpminnms_f32
5660float32_t test_vpminnms_f32(float32x2_t a) {
5661  return vpminnms_f32(a);
5662// CHECK: fminnmp {{s[0-9]+}}, {{v[0-9]+}}.2s
5663}
5664
5665// CHECK-LABEL: test_vpminnmqd_f64
5666float64_t test_vpminnmqd_f64(float64x2_t a) {
5667  return vpminnmqd_f64(a);
5668// CHECK: fminnmp {{d[0-9]+}}, {{v[0-9]+}}.2d
5669}
5670
5671// CHECK-LABEL: test_vpmins_f32
5672float32_t test_vpmins_f32(float32x2_t a) {
5673  return vpmins_f32(a);
5674// CHECK: fminp {{s[0-9]+}}, {{v[0-9]+}}.2s
5675}
5676
5677// CHECK-LABEL: test_vpminqd_f64
5678float64_t test_vpminqd_f64(float64x2_t a) {
5679  return vpminqd_f64(a);
5680// CHECK: fminp {{d[0-9]+}}, {{v[0-9]+}}.2d
5681}
5682
5683int16_t test_vqdmulhh_s16(int16_t a, int16_t b) {
5684// CHECK-LABEL: test_vqdmulhh_s16
5685  return vqdmulhh_s16(a, b);
5686// CHECK: sqdmulh {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5687}
5688
5689int32_t test_vqdmulhs_s32(int32_t a, int32_t b) {
5690// CHECK-LABEL: test_vqdmulhs_s32
5691  return vqdmulhs_s32(a, b);
5692// CHECK: sqdmulh {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5693}
5694
5695int16_t test_vqrdmulhh_s16(int16_t a, int16_t b) {
5696// CHECK-LABEL: test_vqrdmulhh_s16
5697  return vqrdmulhh_s16(a, b);
5698// CHECK: sqrdmulh {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
5699}
5700
5701int32_t test_vqrdmulhs_s32(int32_t a, int32_t b) {
5702// CHECK-LABEL: test_vqrdmulhs_s32
5703  return vqrdmulhs_s32(a, b);
5704// CHECK: sqrdmulh {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5705}
5706
5707float32_t test_vmulxs_f32(float32_t a, float32_t b) {
5708// CHECK-LABEL: test_vmulxs_f32
5709  return vmulxs_f32(a, b);
5710// CHECK: fmulx {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5711}
5712
5713float64_t test_vmulxd_f64(float64_t a, float64_t b) {
5714// CHECK-LABEL: test_vmulxd_f64
5715  return vmulxd_f64(a, b);
5716// CHECK: fmulx {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5717}
5718
5719float64x1_t test_vmulx_f64(float64x1_t a, float64x1_t b) {
5720// CHECK-LABEL: test_vmulx_f64
5721  return vmulx_f64(a, b);
5722// CHECK: fmulx {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5723}
5724
5725float32_t test_vrecpss_f32(float32_t a, float32_t b) {
5726// CHECK-LABEL: test_vrecpss_f32
5727  return vrecpss_f32(a, b);
5728// CHECK: frecps {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5729}
5730
5731float64_t test_vrecpsd_f64(float64_t a, float64_t b) {
5732// CHECK-LABEL: test_vrecpsd_f64
5733  return vrecpsd_f64(a, b);
5734// CHECK: frecps {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5735}
5736
5737float32_t test_vrsqrtss_f32(float32_t a, float32_t b) {
5738// CHECK-LABEL: test_vrsqrtss_f32
5739  return vrsqrtss_f32(a, b);
5740// CHECK: frsqrts {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
5741}
5742
5743float64_t test_vrsqrtsd_f64(float64_t a, float64_t b) {
5744// CHECK-LABEL: test_vrsqrtsd_f64
5745  return vrsqrtsd_f64(a, b);
5746// CHECK: frsqrts {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
5747}
5748
5749float32_t test_vcvts_f32_s32(int32_t a) {
5750// CHECK-LABEL: test_vcvts_f32_s32
5751// CHECK: scvtf {{s[0-9]+}}, {{[ws][0-9]+}}
5752  return vcvts_f32_s32(a);
5753}
5754
5755float64_t test_vcvtd_f64_s64(int64_t a) {
5756// CHECK-LABEL: test_vcvtd_f64_s64
5757// CHECK: scvtf {{d[0-9]+}}, {{[dx][0-9]+}}
5758  return vcvtd_f64_s64(a);
5759}
5760
5761float32_t test_vcvts_f32_u32(uint32_t a) {
5762// CHECK-LABEL: test_vcvts_f32_u32
5763// CHECK: ucvtf {{s[0-9]+}}, {{[ws][0-9]+}}
5764  return vcvts_f32_u32(a);
5765}
5766
5767float64_t test_vcvtd_f64_u64(uint64_t a) {
5768// CHECK-LABEL: test_vcvtd_f64_u64
5769// CHECK: ucvtf {{d[0-9]+}}, {{[xd][0-9]+}}
5770  return vcvtd_f64_u64(a);
5771}
5772
5773float32_t test_vrecpes_f32(float32_t a) {
5774// CHECK-LABEL: test_vrecpes_f32
5775// CHECK: frecpe {{s[0-9]+}}, {{s[0-9]+}}
5776  return vrecpes_f32(a);
5777}
5778
5779float64_t test_vrecped_f64(float64_t a) {
5780// CHECK-LABEL: test_vrecped_f64
5781// CHECK: frecpe {{d[0-9]+}}, {{d[0-9]+}}
5782  return vrecped_f64(a);
5783}
5784
5785float32_t test_vrecpxs_f32(float32_t a) {
5786// CHECK-LABEL: test_vrecpxs_f32
5787// CHECK: frecpx {{s[0-9]+}}, {{s[0-9]+}}
5788  return vrecpxs_f32(a);
5789 }
5790
5791float64_t test_vrecpxd_f64(float64_t a) {
5792// CHECK-LABEL: test_vrecpxd_f64
5793// CHECK: frecpx {{d[0-9]+}}, {{d[0-9]+}}
5794  return vrecpxd_f64(a);
5795}
5796
5797uint32x2_t test_vrsqrte_u32(uint32x2_t a) {
5798// CHECK-LABEL: test_vrsqrte_u32
5799// CHECK: ursqrte {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
5800  return vrsqrte_u32(a);
5801}
5802
5803uint32x4_t test_vrsqrteq_u32(uint32x4_t a) {
5804// CHECK-LABEL: test_vrsqrteq_u32
5805// CHECK: ursqrte {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
5806  return vrsqrteq_u32(a);
5807}
5808
5809float32_t test_vrsqrtes_f32(float32_t a) {
5810// CHECK: vrsqrtes_f32
5811// CHECK: frsqrte {{s[0-9]+}}, {{s[0-9]+}}
5812  return vrsqrtes_f32(a);
5813}
5814
5815float64_t test_vrsqrted_f64(float64_t a) {
5816// CHECK: vrsqrted_f64
5817// CHECK: frsqrte {{d[0-9]+}}, {{d[0-9]+}}
5818  return vrsqrted_f64(a);
5819}
5820
5821uint8x16_t test_vld1q_u8(uint8_t const *a) {
5822  // CHECK-LABEL: test_vld1q_u8
5823  return vld1q_u8(a);
5824  // CHECK: {{ld1 { v[0-9]+.16b }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5825}
5826
5827uint16x8_t test_vld1q_u16(uint16_t const *a) {
5828  // CHECK-LABEL: test_vld1q_u16
5829  return vld1q_u16(a);
5830  // CHECK: {{ld1 { v[0-9]+.8h }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5831}
5832
5833uint32x4_t test_vld1q_u32(uint32_t const *a) {
5834  // CHECK-LABEL: test_vld1q_u32
5835  return vld1q_u32(a);
5836  // CHECK: {{ld1 { v[0-9]+.4s }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5837}
5838
5839uint64x2_t test_vld1q_u64(uint64_t const *a) {
5840  // CHECK-LABEL: test_vld1q_u64
5841  return vld1q_u64(a);
5842  // CHECK: {{ld1 { v[0-9]+.2d }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5843}
5844
5845int8x16_t test_vld1q_s8(int8_t const *a) {
5846  // CHECK-LABEL: test_vld1q_s8
5847  return vld1q_s8(a);
5848  // CHECK: {{ld1 { v[0-9]+.16b }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5849}
5850
5851int16x8_t test_vld1q_s16(int16_t const *a) {
5852  // CHECK-LABEL: test_vld1q_s16
5853  return vld1q_s16(a);
5854  // CHECK: {{ld1 { v[0-9]+.8h }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5855}
5856
5857int32x4_t test_vld1q_s32(int32_t const *a) {
5858  // CHECK-LABEL: test_vld1q_s32
5859  return vld1q_s32(a);
5860  // CHECK: {{ld1 { v[0-9]+.4s }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5861}
5862
5863int64x2_t test_vld1q_s64(int64_t const *a) {
5864  // CHECK-LABEL: test_vld1q_s64
5865  return vld1q_s64(a);
5866  // CHECK: {{ld1 { v[0-9]+.2d }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5867}
5868
5869float16x8_t test_vld1q_f16(float16_t const *a) {
5870  // CHECK-LABEL: test_vld1q_f16
5871  return vld1q_f16(a);
5872  // CHECK: {{ld1 { v[0-9]+.8h }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5873}
5874
5875float32x4_t test_vld1q_f32(float32_t const *a) {
5876  // CHECK-LABEL: test_vld1q_f32
5877  return vld1q_f32(a);
5878  // CHECK: {{ld1 { v[0-9]+.4s }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5879}
5880
5881float64x2_t test_vld1q_f64(float64_t const *a) {
5882  // CHECK-LABEL: test_vld1q_f64
5883  return vld1q_f64(a);
5884  // CHECK: {{ld1 { v[0-9]+.2d }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5885}
5886
5887poly8x16_t test_vld1q_p8(poly8_t const *a) {
5888  // CHECK-LABEL: test_vld1q_p8
5889  return vld1q_p8(a);
5890  // CHECK: {{ld1 { v[0-9]+.16b }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5891}
5892
5893poly16x8_t test_vld1q_p16(poly16_t const *a) {
5894  // CHECK-LABEL: test_vld1q_p16
5895  return vld1q_p16(a);
5896  // CHECK: {{ld1 { v[0-9]+.8h }|ldr q[0-9]+}}, [{{x[0-9]+|sp}}]
5897}
5898
5899uint8x8_t test_vld1_u8(uint8_t const *a) {
5900  // CHECK-LABEL: test_vld1_u8
5901  return vld1_u8(a);
5902  // CHECK: {{ld1 { v[0-9]+.8b }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5903}
5904
5905uint16x4_t test_vld1_u16(uint16_t const *a) {
5906  // CHECK-LABEL: test_vld1_u16
5907  return vld1_u16(a);
5908  // CHECK: {{ld1 { v[0-9]+.4h }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5909}
5910
5911uint32x2_t test_vld1_u32(uint32_t const *a) {
5912  // CHECK-LABEL: test_vld1_u32
5913  return vld1_u32(a);
5914  // CHECK: {{ld1 { v[0-9]+.2s }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5915}
5916
5917uint64x1_t test_vld1_u64(uint64_t const *a) {
5918  // CHECK-LABEL: test_vld1_u64
5919  return vld1_u64(a);
5920  // CHECK: {{ld1 { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5921}
5922
5923int8x8_t test_vld1_s8(int8_t const *a) {
5924  // CHECK-LABEL: test_vld1_s8
5925  return vld1_s8(a);
5926  // CHECK: {{ld1 { v[0-9]+.8b }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5927}
5928
5929int16x4_t test_vld1_s16(int16_t const *a) {
5930  // CHECK-LABEL: test_vld1_s16
5931  return vld1_s16(a);
5932  // CHECK: {{ld1 { v[0-9]+.4h }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5933}
5934
5935int32x2_t test_vld1_s32(int32_t const *a) {
5936  // CHECK-LABEL: test_vld1_s32
5937  return vld1_s32(a);
5938  // CHECK: {{ld1 { v[0-9]+.2s }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5939}
5940
5941int64x1_t test_vld1_s64(int64_t const *a) {
5942  // CHECK-LABEL: test_vld1_s64
5943  return vld1_s64(a);
5944  // CHECK: {{ld1 { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5945}
5946
5947float16x4_t test_vld1_f16(float16_t const *a) {
5948  // CHECK-LABEL: test_vld1_f16
5949  return vld1_f16(a);
5950  // CHECK: {{ld1 { v[0-9]+.4h }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5951}
5952
5953float32x2_t test_vld1_f32(float32_t const *a) {
5954  // CHECK-LABEL: test_vld1_f32
5955  return vld1_f32(a);
5956  // CHECK: {{ld1 { v[0-9]+.2s }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5957}
5958
5959float64x1_t test_vld1_f64(float64_t const *a) {
5960  // CHECK-LABEL: test_vld1_f64
5961  return vld1_f64(a);
5962  // CHECK: {{ld1 { v[0-9]+.1d }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5963}
5964
5965poly8x8_t test_vld1_p8(poly8_t const *a) {
5966  // CHECK-LABEL: test_vld1_p8
5967  return vld1_p8(a);
5968  // CHECK: {{ld1 { v[0-9]+.8b }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5969}
5970
5971poly16x4_t test_vld1_p16(poly16_t const *a) {
5972  // CHECK-LABEL: test_vld1_p16
5973  return vld1_p16(a);
5974  // CHECK: {{ld1 { v[0-9]+.4h }|ldr d[0-9]+}}, [{{x[0-9]+|sp}}]
5975}
5976
5977uint8x16x2_t test_vld2q_u8(uint8_t const *a) {
5978  // CHECK-LABEL: test_vld2q_u8
5979  return vld2q_u8(a);
5980  // CHECK: ld2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
5981}
5982
5983uint16x8x2_t test_vld2q_u16(uint16_t const *a) {
5984  // CHECK-LABEL: test_vld2q_u16
5985  return vld2q_u16(a);
5986  // CHECK: ld2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
5987}
5988
5989uint32x4x2_t test_vld2q_u32(uint32_t const *a) {
5990  // CHECK-LABEL: test_vld2q_u32
5991  return vld2q_u32(a);
5992  // CHECK: ld2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
5993}
5994
5995uint64x2x2_t test_vld2q_u64(uint64_t const *a) {
5996  // CHECK-LABEL: test_vld2q_u64
5997  return vld2q_u64(a);
5998  // CHECK: ld2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
5999}
6000
6001int8x16x2_t test_vld2q_s8(int8_t const *a) {
6002  // CHECK-LABEL: test_vld2q_s8
6003  return vld2q_s8(a);
6004  // CHECK: ld2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6005}
6006
6007int16x8x2_t test_vld2q_s16(int16_t const *a) {
6008  // CHECK-LABEL: test_vld2q_s16
6009  return vld2q_s16(a);
6010  // CHECK: ld2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6011}
6012
6013int32x4x2_t test_vld2q_s32(int32_t const *a) {
6014  // CHECK-LABEL: test_vld2q_s32
6015  return vld2q_s32(a);
6016  // CHECK: ld2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6017}
6018
6019int64x2x2_t test_vld2q_s64(int64_t const *a) {
6020  // CHECK-LABEL: test_vld2q_s64
6021  return vld2q_s64(a);
6022  // CHECK: ld2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6023}
6024
6025float16x8x2_t test_vld2q_f16(float16_t const *a) {
6026  // CHECK-LABEL: test_vld2q_f16
6027  return vld2q_f16(a);
6028  // CHECK: ld2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6029}
6030
6031float32x4x2_t test_vld2q_f32(float32_t const *a) {
6032  // CHECK-LABEL: test_vld2q_f32
6033  return vld2q_f32(a);
6034  // CHECK: ld2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6035}
6036
6037float64x2x2_t test_vld2q_f64(float64_t const *a) {
6038  // CHECK-LABEL: test_vld2q_f64
6039  return vld2q_f64(a);
6040  // CHECK: ld2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6041}
6042
6043poly8x16x2_t test_vld2q_p8(poly8_t const *a) {
6044  // CHECK-LABEL: test_vld2q_p8
6045  return vld2q_p8(a);
6046  // CHECK: ld2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6047}
6048
6049poly16x8x2_t test_vld2q_p16(poly16_t const *a) {
6050  // CHECK-LABEL: test_vld2q_p16
6051  return vld2q_p16(a);
6052  // CHECK: ld2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6053}
6054
6055uint8x8x2_t test_vld2_u8(uint8_t const *a) {
6056  // CHECK-LABEL: test_vld2_u8
6057  return vld2_u8(a);
6058  // CHECK: ld2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6059}
6060
6061uint16x4x2_t test_vld2_u16(uint16_t const *a) {
6062  // CHECK-LABEL: test_vld2_u16
6063  return vld2_u16(a);
6064  // CHECK: ld2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6065}
6066
6067uint32x2x2_t test_vld2_u32(uint32_t const *a) {
6068  // CHECK-LABEL: test_vld2_u32
6069  return vld2_u32(a);
6070  // CHECK: ld2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6071}
6072
6073uint64x1x2_t test_vld2_u64(uint64_t const *a) {
6074  // CHECK-LABEL: test_vld2_u64
6075  return vld2_u64(a);
6076  // CHECK: {{ld1|ld2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6077}
6078
6079int8x8x2_t test_vld2_s8(int8_t const *a) {
6080  // CHECK-LABEL: test_vld2_s8
6081  return vld2_s8(a);
6082  // CHECK: ld2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6083}
6084
6085int16x4x2_t test_vld2_s16(int16_t const *a) {
6086  // CHECK-LABEL: test_vld2_s16
6087  return vld2_s16(a);
6088  // CHECK: ld2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6089}
6090
6091int32x2x2_t test_vld2_s32(int32_t const *a) {
6092  // CHECK-LABEL: test_vld2_s32
6093  return vld2_s32(a);
6094  // CHECK: ld2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6095}
6096
6097int64x1x2_t test_vld2_s64(int64_t const *a) {
6098  // CHECK-LABEL: test_vld2_s64
6099  return vld2_s64(a);
6100  // CHECK: {{ld1|ld2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6101}
6102
6103float16x4x2_t test_vld2_f16(float16_t const *a) {
6104  // CHECK-LABEL: test_vld2_f16
6105  return vld2_f16(a);
6106  // CHECK: ld2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6107}
6108
6109float32x2x2_t test_vld2_f32(float32_t const *a) {
6110  // CHECK-LABEL: test_vld2_f32
6111  return vld2_f32(a);
6112  // CHECK: ld2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6113}
6114
6115float64x1x2_t test_vld2_f64(float64_t const *a) {
6116  // CHECK-LABEL: test_vld2_f64
6117  return vld2_f64(a);
6118  // CHECK: {{ld1|ld2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6119}
6120
6121poly8x8x2_t test_vld2_p8(poly8_t const *a) {
6122  // CHECK-LABEL: test_vld2_p8
6123  return vld2_p8(a);
6124  // CHECK: ld2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6125}
6126
6127poly16x4x2_t test_vld2_p16(poly16_t const *a) {
6128  // CHECK-LABEL: test_vld2_p16
6129  return vld2_p16(a);
6130  // CHECK: ld2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6131}
6132
6133uint8x16x3_t test_vld3q_u8(uint8_t const *a) {
6134  // CHECK-LABEL: test_vld3q_u8
6135  return vld3q_u8(a);
6136  // CHECK: ld3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6137}
6138
6139uint16x8x3_t test_vld3q_u16(uint16_t const *a) {
6140  // CHECK-LABEL: test_vld3q_u16
6141  return vld3q_u16(a);
6142  // CHECK: ld3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6143}
6144
6145uint32x4x3_t test_vld3q_u32(uint32_t const *a) {
6146  // CHECK-LABEL: test_vld3q_u32
6147  return vld3q_u32(a);
6148  // CHECK: ld3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6149}
6150
6151uint64x2x3_t test_vld3q_u64(uint64_t const *a) {
6152  // CHECK-LABEL: test_vld3q_u64
6153  return vld3q_u64(a);
6154  // CHECK: ld3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6155}
6156
6157int8x16x3_t test_vld3q_s8(int8_t const *a) {
6158  // CHECK-LABEL: test_vld3q_s8
6159  return vld3q_s8(a);
6160  // CHECK: ld3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6161}
6162
6163int16x8x3_t test_vld3q_s16(int16_t const *a) {
6164  // CHECK-LABEL: test_vld3q_s16
6165  return vld3q_s16(a);
6166  // CHECK: ld3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6167}
6168
6169int32x4x3_t test_vld3q_s32(int32_t const *a) {
6170  // CHECK-LABEL: test_vld3q_s32
6171  return vld3q_s32(a);
6172  // CHECK: ld3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6173}
6174
6175int64x2x3_t test_vld3q_s64(int64_t const *a) {
6176  // CHECK-LABEL: test_vld3q_s64
6177  return vld3q_s64(a);
6178  // CHECK: ld3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6179}
6180
6181float16x8x3_t test_vld3q_f16(float16_t const *a) {
6182  // CHECK-LABEL: test_vld3q_f16
6183  return vld3q_f16(a);
6184  // CHECK: ld3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6185}
6186
6187float32x4x3_t test_vld3q_f32(float32_t const *a) {
6188  // CHECK-LABEL: test_vld3q_f32
6189  return vld3q_f32(a);
6190  // CHECK: ld3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6191}
6192
6193float64x2x3_t test_vld3q_f64(float64_t const *a) {
6194  // CHECK-LABEL: test_vld3q_f64
6195  return vld3q_f64(a);
6196  // CHECK: ld3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6197}
6198
6199poly8x16x3_t test_vld3q_p8(poly8_t const *a) {
6200  // CHECK-LABEL: test_vld3q_p8
6201  return vld3q_p8(a);
6202  // CHECK: ld3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6203}
6204
6205poly16x8x3_t test_vld3q_p16(poly16_t const *a) {
6206  // CHECK-LABEL: test_vld3q_p16
6207  return vld3q_p16(a);
6208  // CHECK: ld3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6209}
6210
6211uint8x8x3_t test_vld3_u8(uint8_t const *a) {
6212  // CHECK-LABEL: test_vld3_u8
6213  return vld3_u8(a);
6214  // CHECK: ld3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6215}
6216
6217uint16x4x3_t test_vld3_u16(uint16_t const *a) {
6218  // CHECK-LABEL: test_vld3_u16
6219  return vld3_u16(a);
6220  // CHECK: ld3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6221}
6222
6223uint32x2x3_t test_vld3_u32(uint32_t const *a) {
6224  // CHECK-LABEL: test_vld3_u32
6225  return vld3_u32(a);
6226  // CHECK: ld3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6227}
6228
6229uint64x1x3_t test_vld3_u64(uint64_t const *a) {
6230  // CHECK-LABEL: test_vld3_u64
6231  return vld3_u64(a);
6232  // CHECK: {{ld1|ld3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6233}
6234
6235int8x8x3_t test_vld3_s8(int8_t const *a) {
6236  // CHECK-LABEL: test_vld3_s8
6237  return vld3_s8(a);
6238  // CHECK: ld3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6239}
6240
6241int16x4x3_t test_vld3_s16(int16_t const *a) {
6242  // CHECK-LABEL: test_vld3_s16
6243  return vld3_s16(a);
6244  // CHECK: ld3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6245}
6246
6247int32x2x3_t test_vld3_s32(int32_t const *a) {
6248  // CHECK-LABEL: test_vld3_s32
6249  return vld3_s32(a);
6250  // CHECK: ld3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6251}
6252
6253int64x1x3_t test_vld3_s64(int64_t const *a) {
6254  // CHECK-LABEL: test_vld3_s64
6255  return vld3_s64(a);
6256  // CHECK: {{ld1|ld3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6257}
6258
6259float16x4x3_t test_vld3_f16(float16_t const *a) {
6260  // CHECK-LABEL: test_vld3_f16
6261  return vld3_f16(a);
6262  // CHECK: ld3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6263}
6264
6265float32x2x3_t test_vld3_f32(float32_t const *a) {
6266  // CHECK-LABEL: test_vld3_f32
6267  return vld3_f32(a);
6268  // CHECK: ld3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6269}
6270
6271float64x1x3_t test_vld3_f64(float64_t const *a) {
6272  // CHECK-LABEL: test_vld3_f64
6273  return vld3_f64(a);
6274  // CHECK: {{ld1|ld3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6275}
6276
6277poly8x8x3_t test_vld3_p8(poly8_t const *a) {
6278  // CHECK-LABEL: test_vld3_p8
6279  return vld3_p8(a);
6280  // CHECK: ld3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6281}
6282
6283poly16x4x3_t test_vld3_p16(poly16_t const *a) {
6284  // CHECK-LABEL: test_vld3_p16
6285  return vld3_p16(a);
6286  // CHECK: ld3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6287}
6288
6289uint8x16x4_t test_vld4q_u8(uint8_t const *a) {
6290  // CHECK-LABEL: test_vld4q_u8
6291  return vld4q_u8(a);
6292  // CHECK: ld4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6293}
6294
6295uint16x8x4_t test_vld4q_u16(uint16_t const *a) {
6296  // CHECK-LABEL: test_vld4q_u16
6297  return vld4q_u16(a);
6298  // CHECK: ld4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6299}
6300
6301uint32x4x4_t test_vld4q_u32(uint32_t const *a) {
6302  // CHECK-LABEL: test_vld4q_u32
6303  return vld4q_u32(a);
6304  // CHECK: ld4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6305}
6306
6307uint64x2x4_t test_vld4q_u64(uint64_t const *a) {
6308  // CHECK-LABEL: test_vld4q_u64
6309  return vld4q_u64(a);
6310  // CHECK: ld4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6311}
6312
6313int8x16x4_t test_vld4q_s8(int8_t const *a) {
6314  // CHECK-LABEL: test_vld4q_s8
6315  return vld4q_s8(a);
6316  // CHECK: ld4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6317}
6318
6319int16x8x4_t test_vld4q_s16(int16_t const *a) {
6320  // CHECK-LABEL: test_vld4q_s16
6321  return vld4q_s16(a);
6322  // CHECK: ld4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6323}
6324
6325int32x4x4_t test_vld4q_s32(int32_t const *a) {
6326  // CHECK-LABEL: test_vld4q_s32
6327  return vld4q_s32(a);
6328  // CHECK: ld4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6329}
6330
6331int64x2x4_t test_vld4q_s64(int64_t const *a) {
6332  // CHECK-LABEL: test_vld4q_s64
6333  return vld4q_s64(a);
6334  // CHECK: ld4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6335}
6336
6337float16x8x4_t test_vld4q_f16(float16_t const *a) {
6338  // CHECK-LABEL: test_vld4q_f16
6339  return vld4q_f16(a);
6340  // CHECK: ld4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6341}
6342
6343float32x4x4_t test_vld4q_f32(float32_t const *a) {
6344  // CHECK-LABEL: test_vld4q_f32
6345  return vld4q_f32(a);
6346  // CHECK: ld4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6347}
6348
6349float64x2x4_t test_vld4q_f64(float64_t const *a) {
6350  // CHECK-LABEL: test_vld4q_f64
6351  return vld4q_f64(a);
6352  // CHECK: ld4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6353}
6354
6355poly8x16x4_t test_vld4q_p8(poly8_t const *a) {
6356  // CHECK-LABEL: test_vld4q_p8
6357  return vld4q_p8(a);
6358  // CHECK: ld4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6359}
6360
6361poly16x8x4_t test_vld4q_p16(poly16_t const *a) {
6362  // CHECK-LABEL: test_vld4q_p16
6363  return vld4q_p16(a);
6364  // CHECK: ld4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6365}
6366
6367uint8x8x4_t test_vld4_u8(uint8_t const *a) {
6368  // CHECK-LABEL: test_vld4_u8
6369  return vld4_u8(a);
6370  // CHECK: ld4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6371}
6372
6373uint16x4x4_t test_vld4_u16(uint16_t const *a) {
6374  // CHECK-LABEL: test_vld4_u16
6375  return vld4_u16(a);
6376  // CHECK: ld4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6377}
6378
6379uint32x2x4_t test_vld4_u32(uint32_t const *a) {
6380  // CHECK-LABEL: test_vld4_u32
6381  return vld4_u32(a);
6382  // CHECK: ld4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6383}
6384
6385uint64x1x4_t test_vld4_u64(uint64_t const *a) {
6386  // CHECK-LABEL: test_vld4_u64
6387  return vld4_u64(a);
6388  // CHECK: {{ld1|ld4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6389}
6390
6391int8x8x4_t test_vld4_s8(int8_t const *a) {
6392  // CHECK-LABEL: test_vld4_s8
6393  return vld4_s8(a);
6394  // CHECK: ld4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6395}
6396
6397int16x4x4_t test_vld4_s16(int16_t const *a) {
6398  // CHECK-LABEL: test_vld4_s16
6399  return vld4_s16(a);
6400  // CHECK: ld4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6401}
6402
6403int32x2x4_t test_vld4_s32(int32_t const *a) {
6404  // CHECK-LABEL: test_vld4_s32
6405  return vld4_s32(a);
6406  // CHECK: ld4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6407}
6408
6409int64x1x4_t test_vld4_s64(int64_t const *a) {
6410  // CHECK-LABEL: test_vld4_s64
6411  return vld4_s64(a);
6412  // CHECK: {{ld1|ld4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6413}
6414
6415float16x4x4_t test_vld4_f16(float16_t const *a) {
6416  // CHECK-LABEL: test_vld4_f16
6417  return vld4_f16(a);
6418  // CHECK: ld4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6419}
6420
6421float32x2x4_t test_vld4_f32(float32_t const *a) {
6422  // CHECK-LABEL: test_vld4_f32
6423  return vld4_f32(a);
6424  // CHECK: ld4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6425}
6426
6427float64x1x4_t test_vld4_f64(float64_t const *a) {
6428  // CHECK-LABEL: test_vld4_f64
6429  return vld4_f64(a);
6430  // CHECK: {{ld1|ld4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6431}
6432
6433poly8x8x4_t test_vld4_p8(poly8_t const *a) {
6434  // CHECK-LABEL: test_vld4_p8
6435  return vld4_p8(a);
6436  // CHECK: ld4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6437}
6438
6439poly16x4x4_t test_vld4_p16(poly16_t const *a) {
6440  // CHECK-LABEL: test_vld4_p16
6441  return vld4_p16(a);
6442  // CHECK: ld4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6443}
6444
6445void test_vst1q_u8(uint8_t *a, uint8x16_t b) {
6446  // CHECK-LABEL: test_vst1q_u8
6447  vst1q_u8(a, b);
6448  // CHECK: {{st1 { v[0-9]+.16b }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6449}
6450
6451void test_vst1q_u16(uint16_t *a, uint16x8_t b) {
6452  // CHECK-LABEL: test_vst1q_u16
6453  vst1q_u16(a, b);
6454  // CHECK: {{st1 { v[0-9]+.8h }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6455}
6456
6457void test_vst1q_u32(uint32_t *a, uint32x4_t b) {
6458  // CHECK-LABEL: test_vst1q_u32
6459  vst1q_u32(a, b);
6460  // CHECK: {{st1 { v[0-9]+.4s }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6461}
6462
6463void test_vst1q_u64(uint64_t *a, uint64x2_t b) {
6464  // CHECK-LABEL: test_vst1q_u64
6465  vst1q_u64(a, b);
6466  // CHECK: {{st1 { v[0-9]+.2d }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6467}
6468
6469void test_vst1q_s8(int8_t *a, int8x16_t b) {
6470  // CHECK-LABEL: test_vst1q_s8
6471  vst1q_s8(a, b);
6472  // CHECK: {{st1 { v[0-9]+.16b }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6473}
6474
6475void test_vst1q_s16(int16_t *a, int16x8_t b) {
6476  // CHECK-LABEL: test_vst1q_s16
6477  vst1q_s16(a, b);
6478  // CHECK: {{st1 { v[0-9]+.8h }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6479}
6480
6481void test_vst1q_s32(int32_t *a, int32x4_t b) {
6482  // CHECK-LABEL: test_vst1q_s32
6483  vst1q_s32(a, b);
6484  // CHECK: {{st1 { v[0-9]+.4s }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6485}
6486
6487void test_vst1q_s64(int64_t *a, int64x2_t b) {
6488  // CHECK-LABEL: test_vst1q_s64
6489  vst1q_s64(a, b);
6490  // CHECK: {{st1 { v[0-9]+.2d }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6491}
6492
6493void test_vst1q_f16(float16_t *a, float16x8_t b) {
6494  // CHECK-LABEL: test_vst1q_f16
6495  vst1q_f16(a, b);
6496  // CHECK: {{st1 { v[0-9]+.8h }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6497}
6498
6499void test_vst1q_f32(float32_t *a, float32x4_t b) {
6500  // CHECK-LABEL: test_vst1q_f32
6501  vst1q_f32(a, b);
6502  // CHECK: {{st1 { v[0-9]+.4s }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6503}
6504
6505void test_vst1q_f64(float64_t *a, float64x2_t b) {
6506  // CHECK-LABEL: test_vst1q_f64
6507  vst1q_f64(a, b);
6508  // CHECK: {{st1 { v[0-9]+.2d }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6509}
6510
6511void test_vst1q_p8(poly8_t *a, poly8x16_t b) {
6512  // CHECK-LABEL: test_vst1q_p8
6513  vst1q_p8(a, b);
6514  // CHECK: {{st1 { v[0-9]+.16b }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6515}
6516
6517void test_vst1q_p16(poly16_t *a, poly16x8_t b) {
6518  // CHECK-LABEL: test_vst1q_p16
6519  vst1q_p16(a, b);
6520  // CHECK: {{st1 { v[0-9]+.8h }|str q[0-9]+}}, [{{x[0-9]+|sp}}]
6521}
6522
6523void test_vst1_u8(uint8_t *a, uint8x8_t b) {
6524  // CHECK-LABEL: test_vst1_u8
6525  vst1_u8(a, b);
6526  // CHECK: {{st1 { v[0-9]+.8b }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6527}
6528
6529void test_vst1_u16(uint16_t *a, uint16x4_t b) {
6530  // CHECK-LABEL: test_vst1_u16
6531  vst1_u16(a, b);
6532  // CHECK: {{st1 { v[0-9]+.4h }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6533}
6534
6535void test_vst1_u32(uint32_t *a, uint32x2_t b) {
6536  // CHECK-LABEL: test_vst1_u32
6537  vst1_u32(a, b);
6538  // CHECK: {{st1 { v[0-9]+.2s }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6539}
6540
6541void test_vst1_u64(uint64_t *a, uint64x1_t b) {
6542  // CHECK-LABEL: test_vst1_u64
6543  vst1_u64(a, b);
6544  // CHECK: {{st1 { v[0-9]+.1d }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6545}
6546
6547void test_vst1_s8(int8_t *a, int8x8_t b) {
6548  // CHECK-LABEL: test_vst1_s8
6549  vst1_s8(a, b);
6550  // CHECK: {{st1 { v[0-9]+.8b }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6551}
6552
6553void test_vst1_s16(int16_t *a, int16x4_t b) {
6554  // CHECK-LABEL: test_vst1_s16
6555  vst1_s16(a, b);
6556  // CHECK: {{st1 { v[0-9]+.4h }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6557}
6558
6559void test_vst1_s32(int32_t *a, int32x2_t b) {
6560  // CHECK-LABEL: test_vst1_s32
6561  vst1_s32(a, b);
6562  // CHECK: {{st1 { v[0-9]+.2s }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6563}
6564
6565void test_vst1_s64(int64_t *a, int64x1_t b) {
6566  // CHECK-LABEL: test_vst1_s64
6567  vst1_s64(a, b);
6568  // CHECK: {{st1 { v[0-9]+.1d }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6569}
6570
6571void test_vst1_f16(float16_t *a, float16x4_t b) {
6572  // CHECK-LABEL: test_vst1_f16
6573  vst1_f16(a, b);
6574  // CHECK: {{st1 { v[0-9]+.4h }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6575}
6576
6577void test_vst1_f32(float32_t *a, float32x2_t b) {
6578  // CHECK-LABEL: test_vst1_f32
6579  vst1_f32(a, b);
6580  // CHECK: {{st1 { v[0-9]+.2s }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6581}
6582
6583void test_vst1_f64(float64_t *a, float64x1_t b) {
6584  // CHECK-LABEL: test_vst1_f64
6585  vst1_f64(a, b);
6586  // CHECK: {{st1 { v[0-9]+.1d }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6587}
6588
6589void test_vst1_p8(poly8_t *a, poly8x8_t b) {
6590  // CHECK-LABEL: test_vst1_p8
6591  vst1_p8(a, b);
6592  // CHECK: {{st1 { v[0-9]+.8b }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6593}
6594
6595void test_vst1_p16(poly16_t *a, poly16x4_t b) {
6596  // CHECK-LABEL: test_vst1_p16
6597  vst1_p16(a, b);
6598  // CHECK: {{st1 { v[0-9]+.4h }|str d[0-9]+}}, [{{x[0-9]+|sp}}]
6599}
6600
6601void test_vst2q_u8(uint8_t *a, uint8x16x2_t b) {
6602  // CHECK-LABEL: test_vst2q_u8
6603  vst2q_u8(a, b);
6604  // CHECK: st2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6605}
6606
6607void test_vst2q_u16(uint16_t *a, uint16x8x2_t b) {
6608  // CHECK-LABEL: test_vst2q_u16
6609  vst2q_u16(a, b);
6610  // CHECK: st2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6611}
6612
6613void test_vst2q_u32(uint32_t *a, uint32x4x2_t b) {
6614  // CHECK-LABEL: test_vst2q_u32
6615  vst2q_u32(a, b);
6616  // CHECK: st2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6617}
6618
6619void test_vst2q_u64(uint64_t *a, uint64x2x2_t b) {
6620  // CHECK-LABEL: test_vst2q_u64
6621  vst2q_u64(a, b);
6622  // CHECK: st2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6623}
6624
6625void test_vst2q_s8(int8_t *a, int8x16x2_t b) {
6626  // CHECK-LABEL: test_vst2q_s8
6627  vst2q_s8(a, b);
6628  // CHECK: st2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6629}
6630
6631void test_vst2q_s16(int16_t *a, int16x8x2_t b) {
6632  // CHECK-LABEL: test_vst2q_s16
6633  vst2q_s16(a, b);
6634  // CHECK: st2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6635}
6636
6637void test_vst2q_s32(int32_t *a, int32x4x2_t b) {
6638  // CHECK-LABEL: test_vst2q_s32
6639  vst2q_s32(a, b);
6640  // CHECK: st2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6641}
6642
6643void test_vst2q_s64(int64_t *a, int64x2x2_t b) {
6644  // CHECK-LABEL: test_vst2q_s64
6645  vst2q_s64(a, b);
6646  // CHECK: st2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6647}
6648
6649void test_vst2q_f16(float16_t *a, float16x8x2_t b) {
6650  // CHECK-LABEL: test_vst2q_f16
6651  vst2q_f16(a, b);
6652  // CHECK: st2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6653}
6654
6655void test_vst2q_f32(float32_t *a, float32x4x2_t b) {
6656  // CHECK-LABEL: test_vst2q_f32
6657  vst2q_f32(a, b);
6658  // CHECK: st2 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6659}
6660
6661void test_vst2q_f64(float64_t *a, float64x2x2_t b) {
6662  // CHECK-LABEL: test_vst2q_f64
6663  vst2q_f64(a, b);
6664  // CHECK: st2 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6665}
6666
6667void test_vst2q_p8(poly8_t *a, poly8x16x2_t b) {
6668  // CHECK-LABEL: test_vst2q_p8
6669  vst2q_p8(a, b);
6670  // CHECK: st2 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6671}
6672
6673void test_vst2q_p16(poly16_t *a, poly16x8x2_t b) {
6674  // CHECK-LABEL: test_vst2q_p16
6675  vst2q_p16(a, b);
6676  // CHECK: st2 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6677}
6678
6679void test_vst2_u8(uint8_t *a, uint8x8x2_t b) {
6680  // CHECK-LABEL: test_vst2_u8
6681  vst2_u8(a, b);
6682  // CHECK: st2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6683}
6684
6685void test_vst2_u16(uint16_t *a, uint16x4x2_t b) {
6686  // CHECK-LABEL: test_vst2_u16
6687  vst2_u16(a, b);
6688  // CHECK: st2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6689}
6690
6691void test_vst2_u32(uint32_t *a, uint32x2x2_t b) {
6692  // CHECK-LABEL: test_vst2_u32
6693  vst2_u32(a, b);
6694  // CHECK: st2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6695}
6696
6697void test_vst2_u64(uint64_t *a, uint64x1x2_t b) {
6698  // CHECK-LABEL: test_vst2_u64
6699  vst2_u64(a, b);
6700  // CHECK: {{st1|st2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6701}
6702
6703void test_vst2_s8(int8_t *a, int8x8x2_t b) {
6704  // CHECK-LABEL: test_vst2_s8
6705  vst2_s8(a, b);
6706  // CHECK: st2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6707}
6708
6709void test_vst2_s16(int16_t *a, int16x4x2_t b) {
6710  // CHECK-LABEL: test_vst2_s16
6711  vst2_s16(a, b);
6712  // CHECK: st2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6713}
6714
6715void test_vst2_s32(int32_t *a, int32x2x2_t b) {
6716  // CHECK-LABEL: test_vst2_s32
6717  vst2_s32(a, b);
6718  // CHECK: st2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6719}
6720
6721void test_vst2_s64(int64_t *a, int64x1x2_t b) {
6722  // CHECK-LABEL: test_vst2_s64
6723  vst2_s64(a, b);
6724  // CHECK: {{st1|st2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6725}
6726
6727void test_vst2_f16(float16_t *a, float16x4x2_t b) {
6728  // CHECK-LABEL: test_vst2_f16
6729  vst2_f16(a, b);
6730  // CHECK: st2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6731}
6732
6733void test_vst2_f32(float32_t *a, float32x2x2_t b) {
6734  // CHECK-LABEL: test_vst2_f32
6735  vst2_f32(a, b);
6736  // CHECK: st2 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6737}
6738
6739void test_vst2_f64(float64_t *a, float64x1x2_t b) {
6740  // CHECK-LABEL: test_vst2_f64
6741  vst2_f64(a, b);
6742  // CHECK: {{st1|st2}} {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6743}
6744
6745void test_vst2_p8(poly8_t *a, poly8x8x2_t b) {
6746  // CHECK-LABEL: test_vst2_p8
6747  vst2_p8(a, b);
6748  // CHECK: st2 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6749}
6750
6751void test_vst2_p16(poly16_t *a, poly16x4x2_t b) {
6752  // CHECK-LABEL: test_vst2_p16
6753  vst2_p16(a, b);
6754  // CHECK: st2 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6755}
6756
6757void test_vst3q_u8(uint8_t *a, uint8x16x3_t b) {
6758  // CHECK-LABEL: test_vst3q_u8
6759  vst3q_u8(a, b);
6760  // CHECK: st3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6761}
6762
6763void test_vst3q_u16(uint16_t *a, uint16x8x3_t b) {
6764  // CHECK-LABEL: test_vst3q_u16
6765  vst3q_u16(a, b);
6766  // CHECK: st3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6767}
6768
6769void test_vst3q_u32(uint32_t *a, uint32x4x3_t b) {
6770  // CHECK-LABEL: test_vst3q_u32
6771  vst3q_u32(a, b);
6772  // CHECK: st3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6773}
6774
6775void test_vst3q_u64(uint64_t *a, uint64x2x3_t b) {
6776  // CHECK-LABEL: test_vst3q_u64
6777  vst3q_u64(a, b);
6778  // CHECK: st3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6779}
6780
6781void test_vst3q_s8(int8_t *a, int8x16x3_t b) {
6782  // CHECK-LABEL: test_vst3q_s8
6783  vst3q_s8(a, b);
6784  // CHECK: st3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6785}
6786
6787void test_vst3q_s16(int16_t *a, int16x8x3_t b) {
6788  // CHECK-LABEL: test_vst3q_s16
6789  vst3q_s16(a, b);
6790  // CHECK: st3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6791}
6792
6793void test_vst3q_s32(int32_t *a, int32x4x3_t b) {
6794  // CHECK-LABEL: test_vst3q_s32
6795  vst3q_s32(a, b);
6796  // CHECK: st3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6797}
6798
6799void test_vst3q_s64(int64_t *a, int64x2x3_t b) {
6800  // CHECK-LABEL: test_vst3q_s64
6801  vst3q_s64(a, b);
6802  // CHECK: st3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6803}
6804
6805void test_vst3q_f16(float16_t *a, float16x8x3_t b) {
6806  // CHECK-LABEL: test_vst3q_f16
6807  vst3q_f16(a, b);
6808  // CHECK: st3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6809}
6810
6811void test_vst3q_f32(float32_t *a, float32x4x3_t b) {
6812  // CHECK-LABEL: test_vst3q_f32
6813  vst3q_f32(a, b);
6814  // CHECK: st3 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6815}
6816
6817void test_vst3q_f64(float64_t *a, float64x2x3_t b) {
6818  // CHECK-LABEL: test_vst3q_f64
6819  vst3q_f64(a, b);
6820  // CHECK: st3 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6821}
6822
6823void test_vst3q_p8(poly8_t *a, poly8x16x3_t b) {
6824  // CHECK-LABEL: test_vst3q_p8
6825  vst3q_p8(a, b);
6826  // CHECK: st3 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6827}
6828
6829void test_vst3q_p16(poly16_t *a, poly16x8x3_t b) {
6830  // CHECK-LABEL: test_vst3q_p16
6831  vst3q_p16(a, b);
6832  // CHECK: st3 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6833}
6834
6835void test_vst3_u8(uint8_t *a, uint8x8x3_t b) {
6836  // CHECK-LABEL: test_vst3_u8
6837  vst3_u8(a, b);
6838  // CHECK: st3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6839}
6840
6841void test_vst3_u16(uint16_t *a, uint16x4x3_t b) {
6842  // CHECK-LABEL: test_vst3_u16
6843  vst3_u16(a, b);
6844  // CHECK: st3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6845}
6846
6847void test_vst3_u32(uint32_t *a, uint32x2x3_t b) {
6848  // CHECK-LABEL: test_vst3_u32
6849  vst3_u32(a, b);
6850  // CHECK: st3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6851}
6852
6853void test_vst3_u64(uint64_t *a, uint64x1x3_t b) {
6854  // CHECK-LABEL: test_vst3_u64
6855  vst3_u64(a, b);
6856  // CHECK: {{st1|st3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6857}
6858
6859void test_vst3_s8(int8_t *a, int8x8x3_t b) {
6860  // CHECK-LABEL: test_vst3_s8
6861  vst3_s8(a, b);
6862  // CHECK: st3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6863}
6864
6865void test_vst3_s16(int16_t *a, int16x4x3_t b) {
6866  // CHECK-LABEL: test_vst3_s16
6867  vst3_s16(a, b);
6868  // CHECK: st3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6869}
6870
6871void test_vst3_s32(int32_t *a, int32x2x3_t b) {
6872  // CHECK-LABEL: test_vst3_s32
6873  vst3_s32(a, b);
6874  // CHECK: st3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6875}
6876
6877void test_vst3_s64(int64_t *a, int64x1x3_t b) {
6878  // CHECK-LABEL: test_vst3_s64
6879  vst3_s64(a, b);
6880  // CHECK: {{st1|st3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6881}
6882
6883void test_vst3_f16(float16_t *a, float16x4x3_t b) {
6884  // CHECK-LABEL: test_vst3_f16
6885  vst3_f16(a, b);
6886  // CHECK: st3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6887}
6888
6889void test_vst3_f32(float32_t *a, float32x2x3_t b) {
6890  // CHECK-LABEL: test_vst3_f32
6891  vst3_f32(a, b);
6892  // CHECK: st3 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
6893}
6894
6895void test_vst3_f64(float64_t *a, float64x1x3_t b) {
6896  // CHECK-LABEL: test_vst3_f64
6897  vst3_f64(a, b);
6898  // CHECK: {{st1|st3}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
6899}
6900
6901void test_vst3_p8(poly8_t *a, poly8x8x3_t b) {
6902  // CHECK-LABEL: test_vst3_p8
6903  vst3_p8(a, b);
6904  // CHECK: st3 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6905}
6906
6907void test_vst3_p16(poly16_t *a, poly16x4x3_t b) {
6908  // CHECK-LABEL: test_vst3_p16
6909  vst3_p16(a, b);
6910  // CHECK: st3 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
6911}
6912
6913void test_vst4q_u8(uint8_t *a, uint8x16x4_t b) {
6914  // CHECK-LABEL: test_vst4q_u8
6915  vst4q_u8(a, b);
6916  // CHECK: st4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6917}
6918
6919void test_vst4q_u16(uint16_t *a, uint16x8x4_t b) {
6920  // CHECK-LABEL: test_vst4q_u16
6921  vst4q_u16(a, b);
6922  // CHECK: st4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6923}
6924
6925void test_vst4q_u32(uint32_t *a, uint32x4x4_t b) {
6926  // CHECK-LABEL: test_vst4q_u32
6927  vst4q_u32(a, b);
6928  // CHECK: st4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6929}
6930
6931void test_vst4q_u64(uint64_t *a, uint64x2x4_t b) {
6932  // CHECK-LABEL: test_vst4q_u64
6933  vst4q_u64(a, b);
6934  // CHECK: st4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6935}
6936
6937void test_vst4q_s8(int8_t *a, int8x16x4_t b) {
6938  // CHECK-LABEL: test_vst4q_s8
6939  vst4q_s8(a, b);
6940  // CHECK: st4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6941}
6942
6943void test_vst4q_s16(int16_t *a, int16x8x4_t b) {
6944  // CHECK-LABEL: test_vst4q_s16
6945  vst4q_s16(a, b);
6946  // CHECK: st4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6947}
6948
6949void test_vst4q_s32(int32_t *a, int32x4x4_t b) {
6950  // CHECK-LABEL: test_vst4q_s32
6951  vst4q_s32(a, b);
6952  // CHECK: st4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6953}
6954
6955void test_vst4q_s64(int64_t *a, int64x2x4_t b) {
6956  // CHECK-LABEL: test_vst4q_s64
6957  vst4q_s64(a, b);
6958  // CHECK: st4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6959}
6960
6961void test_vst4q_f16(float16_t *a, float16x8x4_t b) {
6962  // CHECK-LABEL: test_vst4q_f16
6963  vst4q_f16(a, b);
6964  // CHECK: st4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6965}
6966
6967void test_vst4q_f32(float32_t *a, float32x4x4_t b) {
6968  // CHECK-LABEL: test_vst4q_f32
6969  vst4q_f32(a, b);
6970  // CHECK: st4 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
6971}
6972
6973void test_vst4q_f64(float64_t *a, float64x2x4_t b) {
6974  // CHECK-LABEL: test_vst4q_f64
6975  vst4q_f64(a, b);
6976  // CHECK: st4 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
6977}
6978
6979void test_vst4q_p8(poly8_t *a, poly8x16x4_t b) {
6980  // CHECK-LABEL: test_vst4q_p8
6981  vst4q_p8(a, b);
6982  // CHECK: st4 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
6983}
6984
6985void test_vst4q_p16(poly16_t *a, poly16x8x4_t b) {
6986  // CHECK-LABEL: test_vst4q_p16
6987  vst4q_p16(a, b);
6988  // CHECK: st4 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
6989}
6990
6991void test_vst4_u8(uint8_t *a, uint8x8x4_t b) {
6992  // CHECK-LABEL: test_vst4_u8
6993  vst4_u8(a, b);
6994  // CHECK: st4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
6995}
6996
6997void test_vst4_u16(uint16_t *a, uint16x4x4_t b) {
6998  // CHECK-LABEL: test_vst4_u16
6999  vst4_u16(a, b);
7000  // CHECK: st4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7001}
7002
7003void test_vst4_u32(uint32_t *a, uint32x2x4_t b) {
7004  // CHECK-LABEL: test_vst4_u32
7005  vst4_u32(a, b);
7006  // CHECK: st4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7007}
7008
7009void test_vst4_u64(uint64_t *a, uint64x1x4_t b) {
7010  // CHECK-LABEL: test_vst4_u64
7011  vst4_u64(a, b);
7012  // CHECK: {{st1|st4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7013}
7014
7015void test_vst4_s8(int8_t *a, int8x8x4_t b) {
7016  // CHECK-LABEL: test_vst4_s8
7017  vst4_s8(a, b);
7018// CHECK: st4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7019}
7020
7021void test_vst4_s16(int16_t *a, int16x4x4_t b) {
7022  // CHECK-LABEL: test_vst4_s16
7023  vst4_s16(a, b);
7024  // CHECK: st4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7025}
7026
7027void test_vst4_s32(int32_t *a, int32x2x4_t b) {
7028  // CHECK-LABEL: test_vst4_s32
7029  vst4_s32(a, b);
7030  // CHECK: st4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7031}
7032
7033void test_vst4_s64(int64_t *a, int64x1x4_t b) {
7034  // CHECK-LABEL: test_vst4_s64
7035  vst4_s64(a, b);
7036  // CHECK: {{st1|st4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7037}
7038
7039void test_vst4_f16(float16_t *a, float16x4x4_t b) {
7040  // CHECK-LABEL: test_vst4_f16
7041  vst4_f16(a, b);
7042  // CHECK: st4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7043}
7044
7045void test_vst4_f32(float32_t *a, float32x2x4_t b) {
7046  // CHECK-LABEL: test_vst4_f32
7047  vst4_f32(a, b);
7048  // CHECK: st4 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7049}
7050
7051void test_vst4_f64(float64_t *a, float64x1x4_t b) {
7052  // CHECK-LABEL: test_vst4_f64
7053  vst4_f64(a, b);
7054  // CHECK: {{st1|st4}} {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7055}
7056
7057void test_vst4_p8(poly8_t *a, poly8x8x4_t b) {
7058  // CHECK-LABEL: test_vst4_p8
7059  vst4_p8(a, b);
7060  // CHECK: st4 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7061}
7062
7063void test_vst4_p16(poly16_t *a, poly16x4x4_t b) {
7064  // CHECK-LABEL: test_vst4_p16
7065  vst4_p16(a, b);
7066  // CHECK: st4 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7067}
7068
7069uint8x16x2_t test_vld1q_u8_x2(uint8_t const *a) {
7070  // CHECK-LABEL: test_vld1q_u8_x2
7071  return vld1q_u8_x2(a);
7072  // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7073}
7074
7075uint16x8x2_t test_vld1q_u16_x2(uint16_t const *a) {
7076  // CHECK-LABEL: test_vld1q_u16_x2
7077  return vld1q_u16_x2(a);
7078  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7079}
7080
7081uint32x4x2_t test_vld1q_u32_x2(uint32_t const *a) {
7082  // CHECK-LABEL: test_vld1q_u32_x2
7083  return vld1q_u32_x2(a);
7084  // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7085}
7086
7087uint64x2x2_t test_vld1q_u64_x2(uint64_t const *a) {
7088  // CHECK-LABEL: test_vld1q_u64_x2
7089  return vld1q_u64_x2(a);
7090  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7091}
7092
7093int8x16x2_t test_vld1q_s8_x2(int8_t const *a) {
7094  // CHECK-LABEL: test_vld1q_s8_x2
7095  return vld1q_s8_x2(a);
7096  // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7097}
7098
7099int16x8x2_t test_vld1q_s16_x2(int16_t const *a) {
7100  // CHECK-LABEL: test_vld1q_s16_x2
7101  return vld1q_s16_x2(a);
7102  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7103}
7104
7105int32x4x2_t test_vld1q_s32_x2(int32_t const *a) {
7106  // CHECK-LABEL: test_vld1q_s32_x2
7107  return vld1q_s32_x2(a);
7108  // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7109}
7110
7111int64x2x2_t test_vld1q_s64_x2(int64_t const *a) {
7112  // CHECK-LABEL: test_vld1q_s64_x2
7113  return vld1q_s64_x2(a);
7114  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7115}
7116
7117float16x8x2_t test_vld1q_f16_x2(float16_t const *a) {
7118  // CHECK-LABEL: test_vld1q_f16_x2
7119  return vld1q_f16_x2(a);
7120  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7121}
7122
7123float32x4x2_t test_vld1q_f32_x2(float32_t const *a) {
7124  // CHECK-LABEL: test_vld1q_f32_x2
7125  return vld1q_f32_x2(a);
7126  // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7127}
7128
7129float64x2x2_t test_vld1q_f64_x2(float64_t const *a) {
7130  // CHECK-LABEL: test_vld1q_f64_x2
7131  return vld1q_f64_x2(a);
7132  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7133}
7134
7135poly8x16x2_t test_vld1q_p8_x2(poly8_t const *a) {
7136  // CHECK-LABEL: test_vld1q_p8_x2
7137  return vld1q_p8_x2(a);
7138  // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7139}
7140
7141poly16x8x2_t test_vld1q_p16_x2(poly16_t const *a) {
7142  // CHECK-LABEL: test_vld1q_p16_x2
7143  return vld1q_p16_x2(a);
7144  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7145}
7146
7147poly64x2x2_t test_vld1q_p64_x2(poly64_t const *a) {
7148  // CHECK-LABEL: test_vld1q_p64_x2
7149  return vld1q_p64_x2(a);
7150  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7151}
7152
7153uint8x8x2_t test_vld1_u8_x2(uint8_t const *a) {
7154  // CHECK-LABEL: test_vld1_u8_x2
7155  return vld1_u8_x2(a);
7156  // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7157}
7158
7159uint16x4x2_t test_vld1_u16_x2(uint16_t const *a) {
7160  // CHECK-LABEL: test_vld1_u16_x2
7161  return vld1_u16_x2(a);
7162  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7163}
7164
7165uint32x2x2_t test_vld1_u32_x2(uint32_t const *a) {
7166  // CHECK-LABEL: test_vld1_u32_x2
7167  return vld1_u32_x2(a);
7168  // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7169}
7170
7171uint64x1x2_t test_vld1_u64_x2(uint64_t const *a) {
7172  // CHECK-LABEL: test_vld1_u64_x2
7173  return vld1_u64_x2(a);
7174  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7175}
7176
7177int8x8x2_t test_vld1_s8_x2(int8_t const *a) {
7178  // CHECK-LABEL: test_vld1_s8_x2
7179  return vld1_s8_x2(a);
7180  // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7181}
7182
7183int16x4x2_t test_vld1_s16_x2(int16_t const *a) {
7184  // CHECK-LABEL: test_vld1_s16_x2
7185  return vld1_s16_x2(a);
7186  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7187}
7188
7189int32x2x2_t test_vld1_s32_x2(int32_t const *a) {
7190  // CHECK-LABEL: test_vld1_s32_x2
7191  return vld1_s32_x2(a);
7192  // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7193}
7194
7195int64x1x2_t test_vld1_s64_x2(int64_t const *a) {
7196  // CHECK-LABEL: test_vld1_s64_x2
7197  return vld1_s64_x2(a);
7198  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7199}
7200
7201float16x4x2_t test_vld1_f16_x2(float16_t const *a) {
7202  // CHECK-LABEL: test_vld1_f16_x2
7203  return vld1_f16_x2(a);
7204  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7205}
7206
7207float32x2x2_t test_vld1_f32_x2(float32_t const *a) {
7208  // CHECK-LABEL: test_vld1_f32_x2
7209  return vld1_f32_x2(a);
7210  // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7211}
7212
7213float64x1x2_t test_vld1_f64_x2(float64_t const *a) {
7214  // CHECK-LABEL: test_vld1_f64_x2
7215  return vld1_f64_x2(a);
7216  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7217}
7218
7219poly8x8x2_t test_vld1_p8_x2(poly8_t const *a) {
7220  // CHECK-LABEL: test_vld1_p8_x2
7221  return vld1_p8_x2(a);
7222  // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7223}
7224
7225poly16x4x2_t test_vld1_p16_x2(poly16_t const *a) {
7226  // CHECK-LABEL: test_vld1_p16_x2
7227  return vld1_p16_x2(a);
7228  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7229}
7230
7231poly64x1x2_t test_vld1_p64_x2(poly64_t const *a) {
7232  // CHECK-LABEL: test_vld1_p64_x2
7233  return vld1_p64_x2(a);
7234  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7235}
7236
7237uint8x16x3_t test_vld1q_u8_x3(uint8_t const *a) {
7238  // CHECK-LABEL: test_vld1q_u8_x3
7239  return vld1q_u8_x3(a);
7240  // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7241}
7242
7243uint16x8x3_t test_vld1q_u16_x3(uint16_t const *a) {
7244  // CHECK-LABEL: test_vld1q_u16_x3
7245  return vld1q_u16_x3(a);
7246  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7247}
7248
7249uint32x4x3_t test_vld1q_u32_x3(uint32_t const *a) {
7250  // CHECK-LABEL: test_vld1q_u32_x3
7251  return vld1q_u32_x3(a);
7252  // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7253}
7254
7255uint64x2x3_t test_vld1q_u64_x3(uint64_t const *a) {
7256  // CHECK-LABEL: test_vld1q_u64_x3
7257  return vld1q_u64_x3(a);
7258  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7259}
7260
7261int8x16x3_t test_vld1q_s8_x3(int8_t const *a) {
7262  // CHECK-LABEL: test_vld1q_s8_x3
7263  return vld1q_s8_x3(a);
7264  // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7265}
7266
7267int16x8x3_t test_vld1q_s16_x3(int16_t const *a) {
7268  // CHECK-LABEL: test_vld1q_s16_x3
7269  return vld1q_s16_x3(a);
7270  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7271}
7272
7273int32x4x3_t test_vld1q_s32_x3(int32_t const *a) {
7274  // CHECK-LABEL: test_vld1q_s32_x3
7275  return vld1q_s32_x3(a);
7276  // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7277}
7278
7279int64x2x3_t test_vld1q_s64_x3(int64_t const *a) {
7280  // CHECK-LABEL: test_vld1q_s64_x3
7281  return vld1q_s64_x3(a);
7282  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7283}
7284
7285float16x8x3_t test_vld1q_f16_x3(float16_t const *a) {
7286  // CHECK-LABEL: test_vld1q_f16_x3
7287  return vld1q_f16_x3(a);
7288  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7289}
7290
7291float32x4x3_t test_vld1q_f32_x3(float32_t const *a) {
7292  // CHECK-LABEL: test_vld1q_f32_x3
7293  return vld1q_f32_x3(a);
7294  // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7295}
7296
7297float64x2x3_t test_vld1q_f64_x3(float64_t const *a) {
7298  // CHECK-LABEL: test_vld1q_f64_x3
7299  return vld1q_f64_x3(a);
7300  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7301}
7302
7303poly8x16x3_t test_vld1q_p8_x3(poly8_t const *a) {
7304  // CHECK-LABEL: test_vld1q_p8_x3
7305  return vld1q_p8_x3(a);
7306  // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7307}
7308
7309poly16x8x3_t test_vld1q_p16_x3(poly16_t const *a) {
7310  // CHECK-LABEL: test_vld1q_p16_x3
7311  return vld1q_p16_x3(a);
7312  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7313}
7314
7315poly64x2x3_t test_vld1q_p64_x3(poly64_t const *a) {
7316  // CHECK-LABEL: test_vld1q_p64_x3
7317  return vld1q_p64_x3(a);
7318  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7319}
7320
7321uint8x8x3_t test_vld1_u8_x3(uint8_t const *a) {
7322  // CHECK-LABEL: test_vld1_u8_x3
7323  return vld1_u8_x3(a);
7324  // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7325}
7326
7327uint16x4x3_t test_vld1_u16_x3(uint16_t const *a) {
7328  // CHECK-LABEL: test_vld1_u16_x3
7329  return vld1_u16_x3(a);
7330  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7331}
7332
7333uint32x2x3_t test_vld1_u32_x3(uint32_t const *a) {
7334  // CHECK-LABEL: test_vld1_u32_x3
7335  return vld1_u32_x3(a);
7336  // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7337}
7338
7339uint64x1x3_t test_vld1_u64_x3(uint64_t const *a) {
7340  // CHECK-LABEL: test_vld1_u64_x3
7341  return vld1_u64_x3(a);
7342  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7343}
7344
7345int8x8x3_t test_vld1_s8_x3(int8_t const *a) {
7346  // CHECK-LABEL: test_vld1_s8_x3
7347  return vld1_s8_x3(a);
7348  // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7349}
7350
7351int16x4x3_t test_vld1_s16_x3(int16_t const *a) {
7352  // CHECK-LABEL: test_vld1_s16_x3
7353  return vld1_s16_x3(a);
7354  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7355}
7356
7357int32x2x3_t test_vld1_s32_x3(int32_t const *a) {
7358  // CHECK-LABEL: test_vld1_s32_x3
7359  return vld1_s32_x3(a);
7360  // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7361}
7362
7363int64x1x3_t test_vld1_s64_x3(int64_t const *a) {
7364  // CHECK-LABEL: test_vld1_s64_x3
7365  return vld1_s64_x3(a);
7366  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7367}
7368
7369float16x4x3_t test_vld1_f16_x3(float16_t const *a) {
7370  // CHECK-LABEL: test_vld1_f16_x3
7371  return vld1_f16_x3(a);
7372  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7373}
7374
7375float32x2x3_t test_vld1_f32_x3(float32_t const *a) {
7376  // CHECK-LABEL: test_vld1_f32_x3
7377  return vld1_f32_x3(a);
7378  // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7379}
7380
7381float64x1x3_t test_vld1_f64_x3(float64_t const *a) {
7382  // CHECK-LABEL: test_vld1_f64_x3
7383  return vld1_f64_x3(a);
7384  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7385}
7386
7387poly8x8x3_t test_vld1_p8_x3(poly8_t const *a) {
7388  // CHECK-LABEL: test_vld1_p8_x3
7389  return vld1_p8_x3(a);
7390  // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7391}
7392
7393poly16x4x3_t test_vld1_p16_x3(poly16_t const *a) {
7394  // CHECK-LABEL: test_vld1_p16_x3
7395  return vld1_p16_x3(a);
7396  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7397}
7398
7399poly64x1x3_t test_vld1_p64_x3(poly64_t const *a) {
7400  // CHECK-LABEL: test_vld1_p64_x3
7401  return vld1_p64_x3(a);
7402  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7403}
7404
7405uint8x16x4_t test_vld1q_u8_x4(uint8_t const *a) {
7406  // CHECK-LABEL: test_vld1q_u8_x4
7407  return vld1q_u8_x4(a);
7408  // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7409}
7410
7411uint16x8x4_t test_vld1q_u16_x4(uint16_t const *a) {
7412  // CHECK-LABEL: test_vld1q_u16_x4
7413  return vld1q_u16_x4(a);
7414  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7415}
7416
7417uint32x4x4_t test_vld1q_u32_x4(uint32_t const *a) {
7418  // CHECK-LABEL: test_vld1q_u32_x4
7419  return vld1q_u32_x4(a);
7420  // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7421}
7422
7423uint64x2x4_t test_vld1q_u64_x4(uint64_t const *a) {
7424  // CHECK-LABEL: test_vld1q_u64_x4
7425  return vld1q_u64_x4(a);
7426  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7427}
7428
7429int8x16x4_t test_vld1q_s8_x4(int8_t const *a) {
7430  // CHECK-LABEL: test_vld1q_s8_x4
7431  return vld1q_s8_x4(a);
7432  // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7433}
7434
7435int16x8x4_t test_vld1q_s16_x4(int16_t const *a) {
7436  // CHECK-LABEL: test_vld1q_s16_x4
7437  return vld1q_s16_x4(a);
7438  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7439}
7440
7441int32x4x4_t test_vld1q_s32_x4(int32_t const *a) {
7442  // CHECK-LABEL: test_vld1q_s32_x4
7443  return vld1q_s32_x4(a);
7444  // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7445}
7446
7447int64x2x4_t test_vld1q_s64_x4(int64_t const *a) {
7448  // CHECK-LABEL: test_vld1q_s64_x4
7449  return vld1q_s64_x4(a);
7450  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7451}
7452
7453float16x8x4_t test_vld1q_f16_x4(float16_t const *a) {
7454  // CHECK-LABEL: test_vld1q_f16_x4
7455  return vld1q_f16_x4(a);
7456  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7457}
7458
7459float32x4x4_t test_vld1q_f32_x4(float32_t const *a) {
7460  // CHECK-LABEL: test_vld1q_f32_x4
7461  return vld1q_f32_x4(a);
7462  // CHECK: ld1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7463}
7464
7465float64x2x4_t test_vld1q_f64_x4(float64_t const *a) {
7466  // CHECK-LABEL: test_vld1q_f64_x4
7467  return vld1q_f64_x4(a);
7468  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7469}
7470
7471poly8x16x4_t test_vld1q_p8_x4(poly8_t const *a) {
7472  // CHECK-LABEL: test_vld1q_p8_x4
7473  return vld1q_p8_x4(a);
7474  // CHECK: ld1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7475}
7476
7477poly16x8x4_t test_vld1q_p16_x4(poly16_t const *a) {
7478  // CHECK-LABEL: test_vld1q_p16_x4
7479  return vld1q_p16_x4(a);
7480  // CHECK: ld1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7481}
7482
7483poly64x2x4_t test_vld1q_p64_x4(poly64_t const *a) {
7484  // CHECK-LABEL: test_vld1q_p64_x4
7485  return vld1q_p64_x4(a);
7486  // CHECK: ld1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7487}
7488
7489uint8x8x4_t test_vld1_u8_x4(uint8_t const *a) {
7490  // CHECK-LABEL: test_vld1_u8_x4
7491  return vld1_u8_x4(a);
7492  // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7493}
7494
7495uint16x4x4_t test_vld1_u16_x4(uint16_t const *a) {
7496  // CHECK-LABEL: test_vld1_u16_x4
7497  return vld1_u16_x4(a);
7498  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7499}
7500
7501uint32x2x4_t test_vld1_u32_x4(uint32_t const *a) {
7502  // CHECK-LABEL: test_vld1_u32_x4
7503  return vld1_u32_x4(a);
7504  // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7505}
7506
7507uint64x1x4_t test_vld1_u64_x4(uint64_t const *a) {
7508  // CHECK-LABEL: test_vld1_u64_x4
7509  return vld1_u64_x4(a);
7510  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7511}
7512
7513int8x8x4_t test_vld1_s8_x4(int8_t const *a) {
7514  // CHECK-LABEL: test_vld1_s8_x4
7515  return vld1_s8_x4(a);
7516  // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7517}
7518
7519int16x4x4_t test_vld1_s16_x4(int16_t const *a) {
7520  // CHECK-LABEL: test_vld1_s16_x4
7521  return vld1_s16_x4(a);
7522  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7523}
7524
7525int32x2x4_t test_vld1_s32_x4(int32_t const *a) {
7526  // CHECK-LABEL: test_vld1_s32_x4
7527  return vld1_s32_x4(a);
7528  // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7529}
7530
7531int64x1x4_t test_vld1_s64_x4(int64_t const *a) {
7532  // CHECK-LABEL: test_vld1_s64_x4
7533  return vld1_s64_x4(a);
7534  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7535}
7536
7537float16x4x4_t test_vld1_f16_x4(float16_t const *a) {
7538  // CHECK-LABEL: test_vld1_f16_x4
7539  return vld1_f16_x4(a);
7540  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7541}
7542
7543float32x2x4_t test_vld1_f32_x4(float32_t const *a) {
7544  // CHECK-LABEL: test_vld1_f32_x4
7545  return vld1_f32_x4(a);
7546  // CHECK: ld1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7547}
7548
7549float64x1x4_t test_vld1_f64_x4(float64_t const *a) {
7550  // CHECK-LABEL: test_vld1_f64_x4
7551  return vld1_f64_x4(a);
7552  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7553}
7554
7555poly8x8x4_t test_vld1_p8_x4(poly8_t const *a) {
7556  // CHECK-LABEL: test_vld1_p8_x4
7557  return vld1_p8_x4(a);
7558  // CHECK: ld1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7559}
7560
7561poly16x4x4_t test_vld1_p16_x4(poly16_t const *a) {
7562  // CHECK-LABEL: test_vld1_p16_x4
7563  return vld1_p16_x4(a);
7564  // CHECK: ld1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7565}
7566
7567poly64x1x4_t test_vld1_p64_x4(poly64_t const *a) {
7568  // CHECK-LABEL: test_vld1_p64_x4
7569  return vld1_p64_x4(a);
7570  // CHECK: ld1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7571}
7572
7573void test_vst1q_u8_x2(uint8_t *a, uint8x16x2_t b) {
7574  // CHECK-LABEL: test_vst1q_u8_x2
7575  vst1q_u8_x2(a, b);
7576  // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7577}
7578
7579void test_vst1q_u16_x2(uint16_t *a, uint16x8x2_t b) {
7580  // CHECK-LABEL: test_vst1q_u16_x2
7581  vst1q_u16_x2(a, b);
7582  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7583}
7584
7585void test_vst1q_u32_x2(uint32_t *a, uint32x4x2_t b) {
7586  // CHECK-LABEL: test_vst1q_u32_x2
7587  vst1q_u32_x2(a, b);
7588  // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7589}
7590
7591void test_vst1q_u64_x2(uint64_t *a, uint64x2x2_t b) {
7592  // CHECK-LABEL: test_vst1q_u64_x2
7593  vst1q_u64_x2(a, b);
7594  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7595}
7596
7597void test_vst1q_s8_x2(int8_t *a, int8x16x2_t b) {
7598  // CHECK-LABEL: test_vst1q_s8_x2
7599  vst1q_s8_x2(a, b);
7600  // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7601}
7602
7603void test_vst1q_s16_x2(int16_t *a, int16x8x2_t b) {
7604  // CHECK-LABEL: test_vst1q_s16_x2
7605  vst1q_s16_x2(a, b);
7606  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7607}
7608
7609void test_vst1q_s32_x2(int32_t *a, int32x4x2_t b) {
7610  // CHECK-LABEL: test_vst1q_s32_x2
7611  vst1q_s32_x2(a, b);
7612  // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7613}
7614
7615void test_vst1q_s64_x2(int64_t *a, int64x2x2_t b) {
7616  // CHECK-LABEL: test_vst1q_s64_x2
7617  vst1q_s64_x2(a, b);
7618  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7619}
7620
7621void test_vst1q_f16_x2(float16_t *a, float16x8x2_t b) {
7622  // CHECK-LABEL: test_vst1q_f16_x2
7623  vst1q_f16_x2(a, b);
7624  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7625}
7626
7627void test_vst1q_f32_x2(float32_t *a, float32x4x2_t b) {
7628  // CHECK-LABEL: test_vst1q_f32_x2
7629  vst1q_f32_x2(a, b);
7630  // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7631}
7632
7633void test_vst1q_f64_x2(float64_t *a, float64x2x2_t b) {
7634  // CHECK-LABEL: test_vst1q_f64_x2
7635  vst1q_f64_x2(a, b);
7636  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7637}
7638
7639void test_vst1q_p8_x2(poly8_t *a, poly8x16x2_t b) {
7640  // CHECK-LABEL: test_vst1q_p8_x2
7641  vst1q_p8_x2(a, b);
7642  // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7643}
7644
7645void test_vst1q_p16_x2(poly16_t *a, poly16x8x2_t b) {
7646  // CHECK-LABEL: test_vst1q_p16_x2
7647  vst1q_p16_x2(a, b);
7648  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7649}
7650
7651void test_vst1q_p64_x2(poly64_t *a, poly64x2x2_t b) {
7652  // CHECK-LABEL: test_vst1q_p64_x2
7653  vst1q_p64_x2(a, b);
7654  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7655}
7656
7657void test_vst1_u8_x2(uint8_t *a, uint8x8x2_t b) {
7658  // CHECK-LABEL: test_vst1_u8_x2
7659  vst1_u8_x2(a, b);
7660  // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7661}
7662
7663void test_vst1_u16_x2(uint16_t *a, uint16x4x2_t b) {
7664  // CHECK-LABEL: test_vst1_u16_x2
7665  vst1_u16_x2(a, b);
7666  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7667}
7668
7669void test_vst1_u32_x2(uint32_t *a, uint32x2x2_t b) {
7670  // CHECK-LABEL: test_vst1_u32_x2
7671  vst1_u32_x2(a, b);
7672  // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7673}
7674
7675void test_vst1_u64_x2(uint64_t *a, uint64x1x2_t b) {
7676  // CHECK-LABEL: test_vst1_u64_x2
7677  vst1_u64_x2(a, b);
7678  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7679}
7680
7681void test_vst1_s8_x2(int8_t *a, int8x8x2_t b) {
7682  // CHECK-LABEL: test_vst1_s8_x2
7683  vst1_s8_x2(a, b);
7684  // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7685}
7686
7687void test_vst1_s16_x2(int16_t *a, int16x4x2_t b) {
7688  // CHECK-LABEL: test_vst1_s16_x2
7689  vst1_s16_x2(a, b);
7690  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7691}
7692
7693void test_vst1_s32_x2(int32_t *a, int32x2x2_t b) {
7694  // CHECK-LABEL: test_vst1_s32_x2
7695  vst1_s32_x2(a, b);
7696  // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7697}
7698
7699void test_vst1_s64_x2(int64_t *a, int64x1x2_t b) {
7700  // CHECK-LABEL: test_vst1_s64_x2
7701  vst1_s64_x2(a, b);
7702  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7703}
7704
7705void test_vst1_f16_x2(float16_t *a, float16x4x2_t b) {
7706  // CHECK-LABEL: test_vst1_f16_x2
7707  vst1_f16_x2(a, b);
7708  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7709}
7710
7711void test_vst1_f32_x2(float32_t *a, float32x2x2_t b) {
7712  // CHECK-LABEL: test_vst1_f32_x2
7713  vst1_f32_x2(a, b);
7714  // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7715}
7716
7717void test_vst1_f64_x2(float64_t *a, float64x1x2_t b) {
7718  // CHECK-LABEL: test_vst1_f64_x2
7719  vst1_f64_x2(a, b);
7720  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7721}
7722
7723void test_vst1_p8_x2(poly8_t *a, poly8x8x2_t b) {
7724  // CHECK-LABEL: test_vst1_p8_x2
7725  vst1_p8_x2(a, b);
7726  // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7727}
7728
7729void test_vst1_p16_x2(poly16_t *a, poly16x4x2_t b) {
7730  // CHECK-LABEL: test_vst1_p16_x2
7731  vst1_p16_x2(a, b);
7732  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7733}
7734
7735void test_vst1_p64_x2(poly64_t *a, poly64x1x2_t b) {
7736  // CHECK-LABEL: test_vst1_p64_x2
7737  vst1_p64_x2(a, b);
7738  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7739}
7740
7741void test_vst1q_u8_x3(uint8_t *a, uint8x16x3_t b) {
7742  // CHECK-LABEL: test_vst1q_u8_x3
7743  vst1q_u8_x3(a, b);
7744  // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7745}
7746
7747void test_vst1q_u16_x3(uint16_t *a, uint16x8x3_t b) {
7748  // CHECK-LABEL: test_vst1q_u16_x3
7749  vst1q_u16_x3(a, b);
7750  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7751}
7752
7753void test_vst1q_u32_x3(uint32_t *a, uint32x4x3_t b) {
7754  // CHECK-LABEL: test_vst1q_u32_x3
7755  vst1q_u32_x3(a, b);
7756  // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7757}
7758
7759void test_vst1q_u64_x3(uint64_t *a, uint64x2x3_t b) {
7760  // CHECK-LABEL: test_vst1q_u64_x3
7761  vst1q_u64_x3(a, b);
7762  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7763}
7764
7765void test_vst1q_s8_x3(int8_t *a, int8x16x3_t b) {
7766  // CHECK-LABEL: test_vst1q_s8_x3
7767  vst1q_s8_x3(a, b);
7768  // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7769}
7770
7771void test_vst1q_s16_x3(int16_t *a, int16x8x3_t b) {
7772  // CHECK-LABEL: test_vst1q_s16_x3
7773  vst1q_s16_x3(a, b);
7774  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7775}
7776
7777void test_vst1q_s32_x3(int32_t *a, int32x4x3_t b) {
7778  // CHECK-LABEL: test_vst1q_s32_x3
7779  vst1q_s32_x3(a, b);
7780  // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7781}
7782
7783void test_vst1q_s64_x3(int64_t *a, int64x2x3_t b) {
7784  // CHECK-LABEL: test_vst1q_s64_x3
7785  vst1q_s64_x3(a, b);
7786  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7787}
7788
7789void test_vst1q_f16_x3(float16_t *a, float16x8x3_t b) {
7790  // CHECK-LABEL: test_vst1q_f16_x3
7791  vst1q_f16_x3(a, b);
7792  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7793}
7794
7795void test_vst1q_f32_x3(float32_t *a, float32x4x3_t b) {
7796  // CHECK-LABEL: test_vst1q_f32_x3
7797  vst1q_f32_x3(a, b);
7798  // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7799}
7800
7801void test_vst1q_f64_x3(float64_t *a, float64x2x3_t b) {
7802  // CHECK-LABEL: test_vst1q_f64_x3
7803  vst1q_f64_x3(a, b);
7804  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7805}
7806
7807void test_vst1q_p8_x3(poly8_t *a, poly8x16x3_t b) {
7808  // CHECK-LABEL: test_vst1q_p8_x3
7809  vst1q_p8_x3(a, b);
7810  // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7811}
7812
7813void test_vst1q_p16_x3(poly16_t *a, poly16x8x3_t b) {
7814  // CHECK-LABEL: test_vst1q_p16_x3
7815  vst1q_p16_x3(a, b);
7816  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7817}
7818
7819void test_vst1q_p64_x3(poly64_t *a, poly64x2x3_t b) {
7820  // CHECK-LABEL: test_vst1q_p64_x3
7821  vst1q_p64_x3(a, b);
7822  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7823}
7824
7825void test_vst1_u8_x3(uint8_t *a, uint8x8x3_t b) {
7826  // CHECK-LABEL: test_vst1_u8_x3
7827  vst1_u8_x3(a, b);
7828  // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7829}
7830
7831void test_vst1_u16_x3(uint16_t *a, uint16x4x3_t b) {
7832  // CHECK-LABEL: test_vst1_u16_x3
7833  vst1_u16_x3(a, b);
7834  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7835}
7836
7837void test_vst1_u32_x3(uint32_t *a, uint32x2x3_t b) {
7838  // CHECK-LABEL: test_vst1_u32_x3
7839  vst1_u32_x3(a, b);
7840  // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7841}
7842
7843void test_vst1_u64_x3(uint64_t *a, uint64x1x3_t b) {
7844  // CHECK-LABEL: test_vst1_u64_x3
7845  vst1_u64_x3(a, b);
7846  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7847}
7848
7849void test_vst1_s8_x3(int8_t *a, int8x8x3_t b) {
7850  // CHECK-LABEL: test_vst1_s8_x3
7851  vst1_s8_x3(a, b);
7852  // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7853}
7854
7855void test_vst1_s16_x3(int16_t *a, int16x4x3_t b) {
7856  // CHECK-LABEL: test_vst1_s16_x3
7857  vst1_s16_x3(a, b);
7858  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7859}
7860
7861void test_vst1_s32_x3(int32_t *a, int32x2x3_t b) {
7862  // CHECK-LABEL: test_vst1_s32_x3
7863  vst1_s32_x3(a, b);
7864  // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7865}
7866
7867void test_vst1_s64_x3(int64_t *a, int64x1x3_t b) {
7868  // CHECK-LABEL: test_vst1_s64_x3
7869  vst1_s64_x3(a, b);
7870  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7871}
7872
7873void test_vst1_f16_x3(float16_t *a, float16x4x3_t b) {
7874  // CHECK-LABEL: test_vst1_f16_x3
7875  vst1_f16_x3(a, b);
7876  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7877}
7878
7879void test_vst1_f32_x3(float32_t *a, float32x2x3_t b) {
7880  // CHECK-LABEL: test_vst1_f32_x3
7881  vst1_f32_x3(a, b);
7882  // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
7883}
7884
7885void test_vst1_f64_x3(float64_t *a, float64x1x3_t b) {
7886  // CHECK-LABEL: test_vst1_f64_x3
7887  vst1_f64_x3(a, b);
7888  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7889}
7890
7891void test_vst1_p8_x3(poly8_t *a, poly8x8x3_t b) {
7892  // CHECK-LABEL: test_vst1_p8_x3
7893  vst1_p8_x3(a, b);
7894  // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7895}
7896
7897void test_vst1_p16_x3(poly16_t *a, poly16x4x3_t b) {
7898  // CHECK-LABEL: test_vst1_p16_x3
7899  vst1_p16_x3(a, b);
7900  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
7901}
7902
7903void test_vst1_p64_x3(poly64_t *a, poly64x1x3_t b) {
7904  // CHECK-LABEL: test_vst1_p64_x3
7905  vst1_p64_x3(a, b);
7906  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
7907}
7908
7909void test_vst1q_u8_x4(uint8_t *a, uint8x16x4_t b) {
7910  // CHECK-LABEL: test_vst1q_u8_x4
7911  vst1q_u8_x4(a, b);
7912  // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7913}
7914
7915void test_vst1q_u16_x4(uint16_t *a, uint16x8x4_t b) {
7916  // CHECK-LABEL: test_vst1q_u16_x4
7917  vst1q_u16_x4(a, b);
7918  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7919}
7920
7921void test_vst1q_u32_x4(uint32_t *a, uint32x4x4_t b) {
7922  // CHECK-LABEL: test_vst1q_u32_x4
7923  vst1q_u32_x4(a, b);
7924  // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7925}
7926
7927void test_vst1q_u64_x4(uint64_t *a, uint64x2x4_t b) {
7928  // CHECK-LABEL: test_vst1q_u64_x4
7929  vst1q_u64_x4(a, b);
7930  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7931}
7932
7933void test_vst1q_s8_x4(int8_t *a, int8x16x4_t b) {
7934  // CHECK-LABEL: test_vst1q_s8_x4
7935  vst1q_s8_x4(a, b);
7936  // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7937}
7938
7939void test_vst1q_s16_x4(int16_t *a, int16x8x4_t b) {
7940  // CHECK-LABEL: test_vst1q_s16_x4
7941  vst1q_s16_x4(a, b);
7942  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7943}
7944
7945void test_vst1q_s32_x4(int32_t *a, int32x4x4_t b) {
7946  // CHECK-LABEL: test_vst1q_s32_x4
7947  vst1q_s32_x4(a, b);
7948  // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7949}
7950
7951void test_vst1q_s64_x4(int64_t *a, int64x2x4_t b) {
7952  // CHECK-LABEL: test_vst1q_s64_x4
7953  vst1q_s64_x4(a, b);
7954  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7955}
7956
7957void test_vst1q_f16_x4(float16_t *a, float16x8x4_t b) {
7958  // CHECK-LABEL: test_vst1q_f16_x4
7959  vst1q_f16_x4(a, b);
7960  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7961}
7962
7963void test_vst1q_f32_x4(float32_t *a, float32x4x4_t b) {
7964  // CHECK-LABEL: test_vst1q_f32_x4
7965  vst1q_f32_x4(a, b);
7966  // CHECK: st1 {{{ ?v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s, v[0-9]+.4s ?}}}, [{{x[0-9]+|sp}}]
7967}
7968
7969void test_vst1q_f64_x4(float64_t *a, float64x2x4_t b) {
7970  // CHECK-LABEL: test_vst1q_f64_x4
7971  vst1q_f64_x4(a, b);
7972  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7973}
7974
7975void test_vst1q_p8_x4(poly8_t *a, poly8x16x4_t b) {
7976  // CHECK-LABEL: test_vst1q_p8_x4
7977  vst1q_p8_x4(a, b);
7978  // CHECK: st1 {{{ ?v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b ?}}}, [{{x[0-9]+|sp}}]
7979}
7980
7981void test_vst1q_p16_x4(poly16_t *a, poly16x8x4_t b) {
7982  // CHECK-LABEL: test_vst1q_p16_x4
7983  vst1q_p16_x4(a, b);
7984  // CHECK: st1 {{{ ?v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h, v[0-9]+.8h ?}}}, [{{x[0-9]+|sp}}]
7985}
7986
7987void test_vst1q_p64_x4(poly64_t *a, poly64x2x4_t b) {
7988  // CHECK-LABEL: test_vst1q_p64_x4
7989  vst1q_p64_x4(a, b);
7990  // CHECK: st1 {{{ ?v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d, v[0-9]+.2d ?}}}, [{{x[0-9]+|sp}}]
7991}
7992
7993void test_vst1_u8_x4(uint8_t *a, uint8x8x4_t b) {
7994  // CHECK-LABEL: test_vst1_u8_x4
7995  vst1_u8_x4(a, b);
7996  // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
7997}
7998
7999void test_vst1_u16_x4(uint16_t *a, uint16x4x4_t b) {
8000  // CHECK-LABEL: test_vst1_u16_x4
8001  vst1_u16_x4(a, b);
8002  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
8003}
8004
8005void test_vst1_u32_x4(uint32_t *a, uint32x2x4_t b) {
8006  // CHECK-LABEL: test_vst1_u32_x4
8007  vst1_u32_x4(a, b);
8008  // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
8009}
8010
8011void test_vst1_u64_x4(uint64_t *a, uint64x1x4_t b) {
8012  // CHECK-LABEL: test_vst1_u64_x4
8013  vst1_u64_x4(a, b);
8014  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
8015}
8016
8017void test_vst1_s8_x4(int8_t *a, int8x8x4_t b) {
8018  // CHECK-LABEL: test_vst1_s8_x4
8019  vst1_s8_x4(a, b);
8020  // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
8021}
8022
8023void test_vst1_s16_x4(int16_t *a, int16x4x4_t b) {
8024  // CHECK-LABEL: test_vst1_s16_x4
8025  vst1_s16_x4(a, b);
8026  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
8027}
8028
8029void test_vst1_s32_x4(int32_t *a, int32x2x4_t b) {
8030  // CHECK-LABEL: test_vst1_s32_x4
8031  vst1_s32_x4(a, b);
8032  // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
8033}
8034
8035void test_vst1_s64_x4(int64_t *a, int64x1x4_t b) {
8036  // CHECK-LABEL: test_vst1_s64_x4
8037  vst1_s64_x4(a, b);
8038  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
8039}
8040
8041void test_vst1_f16_x4(float16_t *a, float16x4x4_t b) {
8042  // CHECK-LABEL: test_vst1_f16_x4
8043  vst1_f16_x4(a, b);
8044  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
8045}
8046
8047void test_vst1_f32_x4(float32_t *a, float32x2x4_t b) {
8048  // CHECK-LABEL: test_vst1_f32_x4
8049  vst1_f32_x4(a, b);
8050  // CHECK: st1 {{{ ?v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s, v[0-9]+.2s ?}}}, [{{x[0-9]+|sp}}]
8051}
8052
8053void test_vst1_f64_x4(float64_t *a, float64x1x4_t b) {
8054  // CHECK-LABEL: test_vst1_f64_x4
8055  vst1_f64_x4(a, b);
8056  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
8057}
8058
8059void test_vst1_p8_x4(poly8_t *a, poly8x8x4_t b) {
8060  // CHECK-LABEL: test_vst1_p8_x4
8061  vst1_p8_x4(a, b);
8062  // CHECK: st1 {{{ ?v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b ?}}}, [{{x[0-9]+|sp}}]
8063}
8064
8065void test_vst1_p16_x4(poly16_t *a, poly16x4x4_t b) {
8066  // CHECK-LABEL: test_vst1_p16_x4
8067  vst1_p16_x4(a, b);
8068  // CHECK: st1 {{{ ?v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h, v[0-9]+.4h ?}}}, [{{x[0-9]+|sp}}]
8069}
8070
8071void test_vst1_p64_x4(poly64_t *a, poly64x1x4_t b) {
8072  // CHECK-LABEL: test_vst1_p64_x4
8073  vst1_p64_x4(a, b);
8074  // CHECK: st1 {{{ ?v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d, v[0-9]+.1d ?}}}, [{{x[0-9]+|sp}}]
8075}
8076
8077int64_t test_vceqd_s64(int64_t a, int64_t b) {
8078// CHECK-LABEL: test_vceqd_s64
8079// CHECK: {{cmeq d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8080  return (int64_t)vceqd_s64(a, b);
8081}
8082
8083uint64_t test_vceqd_u64(uint64_t a, uint64_t b) {
8084// CHECK-LABEL: test_vceqd_u64
8085// CHECK: {{cmeq d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8086  return (int64_t)vceqd_u64(a, b);
8087}
8088
8089int64_t test_vceqzd_s64(int64_t a) {
8090// CHECK-LABEL: test_vceqzd_s64
8091// CHECK: {{cmeq d[0-9]+, d[0-9]+, #0x0|cmp x0, #0}}
8092  return (int64_t)vceqzd_s64(a);
8093}
8094
8095int64_t test_vceqzd_u64(int64_t a) {
8096// CHECK-LABEL: test_vceqzd_u64
8097// CHECK: {{cmeq d[0-9]+, d[0-9]+, #0x0|cmp x0, #0}}
8098  return (int64_t)vceqzd_u64(a);
8099}
8100
8101int64_t test_vcged_s64(int64_t a, int64_t b) {
8102// CHECK-LABEL: test_vcged_s64
8103// CHECK: {{cmge d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8104  return (int64_t)vcged_s64(a, b);
8105}
8106
8107uint64_t test_vcged_u64(uint64_t a, uint64_t b) {
8108// CHECK-LABEL: test_vcged_u64
8109// CHECK: {{cmhs d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8110    return (uint64_t)vcged_u64(a, b);
8111}
8112
8113int64_t test_vcgezd_s64(int64_t a) {
8114// CHECK-LABEL: test_vcgezd_s64
8115// CHECK: {{cmge d[0-9]+, d[0-9]+, #0x0|eor x0, x[0-9]+, x0, asr #63}}
8116  return (int64_t)vcgezd_s64(a);
8117}
8118
8119int64_t test_vcgtd_s64(int64_t a, int64_t b) {
8120// CHECK-LABEL: test_vcgtd_s64
8121// CHECK: {{cmgt d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8122  return (int64_t)vcgtd_s64(a, b);
8123}
8124
8125uint64_t test_vcgtd_u64(uint64_t a, uint64_t b) {
8126// CHECK-LABEL: test_vcgtd_u64
8127// CHECK: {{cmhi d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8128  return (uint64_t)vcgtd_u64(a, b);
8129}
8130
8131int64_t test_vcgtzd_s64(int64_t a) {
8132// CHECK-LABEL: test_vcgtzd_s64
8133// CHECK: {{cmgt d[0-9]+, d[0-9]+, #0x0|cmp x0, #0}}
8134  return (int64_t)vcgtzd_s64(a);
8135}
8136
8137int64_t test_vcled_s64(int64_t a, int64_t b) {
8138// CHECK-LABEL: test_vcled_s64
8139// CHECK: {{cmge d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8140  return (int64_t)vcled_s64(a, b);
8141}
8142
8143uint64_t test_vcled_u64(uint64_t a, uint64_t b) {
8144// CHECK-LABEL: test_vcled_u64
8145// CHECK: {{cmhs d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8146  return (uint64_t)vcled_u64(a, b);
8147}
8148
8149int64_t test_vclezd_s64(int64_t a) {
8150// CHECK-LABEL: test_vclezd_s64
8151// CHECK: {{cmle d[0-9]+, d[0-9]+, #0x0|cmp x0, #1}}
8152  return (int64_t)vclezd_s64(a);
8153}
8154
8155int64_t test_vcltd_s64(int64_t a, int64_t b) {
8156// CHECK-LABEL: test_vcltd_s64
8157// CHECK: {{cmgt d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8158  return (int64_t)vcltd_s64(a, b);
8159}
8160
8161uint64_t test_vcltd_u64(uint64_t a, uint64_t b) {
8162// CHECK-LABEL: test_vcltd_u64
8163// CHECK: {{cmhi d[0-9]+, d[0-9]+, d[0-9]+|cmp x0, x1}}
8164  return (uint64_t)vcltd_u64(a, b);
8165}
8166
8167int64_t test_vcltzd_s64(int64_t a) {
8168// CHECK-LABEL: test_vcltzd_s64
8169// CHECK: {{cmlt d[0-9]+, d[0-9]+, #0x0|asr x0, x0, #63}}
8170  return (int64_t)vcltzd_s64(a);
8171}
8172
8173int64_t test_vtstd_s64(int64_t a, int64_t b) {
8174// CHECK-LABEL: test_vtstd_s64
8175// CHECK: {{cmtst d[0-9]+, d[0-9]+, d[0-9]+|tst x1, x0}}
8176  return (int64_t)vtstd_s64(a, b);
8177}
8178
8179uint64_t test_vtstd_u64(uint64_t a, uint64_t b) {
8180// CHECK-LABEL: test_vtstd_u64
8181// CHECK: {{cmtst d[0-9]+, d[0-9]+, d[0-9]+|tst x1, x0}}
8182  return (uint64_t)vtstd_u64(a, b);
8183}
8184
8185int64_t test_vabsd_s64(int64_t a) {
8186// CHECK-LABEL: test_vabsd_s64
8187// CHECK: abs {{d[0-9]+}}, {{d[0-9]+}}
8188  return (int64_t)vabsd_s64(a);
8189}
8190
8191int8_t test_vqabsb_s8(int8_t a) {
8192// CHECK-LABEL: test_vqabsb_s8
8193// CHECK: sqabs {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
8194  return (int8_t)vqabsb_s8(a);
8195}
8196
8197int16_t test_vqabsh_s16(int16_t a) {
8198// CHECK-LABEL: test_vqabsh_s16
8199// CHECK: sqabs {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
8200  return (int16_t)vqabsh_s16(a);
8201}
8202
8203int32_t test_vqabss_s32(int32_t a) {
8204// CHECK-LABEL: test_vqabss_s32
8205// CHECK: sqabs {{s[0-9]+}}, {{s[0-9]+}}
8206  return (int32_t)vqabss_s32(a);
8207}
8208
8209int64_t test_vqabsd_s64(int64_t a) {
8210// CHECK-LABEL: test_vqabsd_s64
8211// CHECK: sqabs {{d[0-9]+}}, {{d[0-9]+}}
8212  return (int64_t)vqabsd_s64(a);
8213}
8214
8215int64_t test_vnegd_s64(int64_t a) {
8216// CHECK-LABEL: test_vnegd_s64
8217// CHECK: neg {{[xd][0-9]+}}, {{[xd][0-9]+}}
8218  return (int64_t)vnegd_s64(a);
8219}
8220
8221int8_t test_vqnegb_s8(int8_t a) {
8222// CHECK-LABEL: test_vqnegb_s8
8223// CHECK: sqneg {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
8224  return (int8_t)vqnegb_s8(a);
8225}
8226
8227int16_t test_vqnegh_s16(int16_t a) {
8228// CHECK-LABEL: test_vqnegh_s16
8229// CHECK: sqneg {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
8230  return (int16_t)vqnegh_s16(a);
8231}
8232
8233int32_t test_vqnegs_s32(int32_t a) {
8234// CHECK-LABEL: test_vqnegs_s32
8235// CHECK: sqneg {{s[0-9]+}}, {{s[0-9]+}}
8236  return (int32_t)vqnegs_s32(a);
8237}
8238
8239int64_t test_vqnegd_s64(int64_t a) {
8240// CHECK-LABEL: test_vqnegd_s64
8241// CHECK: sqneg {{d[0-9]+}}, {{d[0-9]+}}
8242  return (int64_t)vqnegd_s64(a);
8243}
8244
8245int8_t test_vuqaddb_s8(int8_t a, int8_t b) {
8246// CHECK-LABEL: test_vuqaddb_s8
8247// CHECK: suqadd {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
8248  return (int8_t)vuqaddb_s8(a, b);
8249}
8250
8251int16_t test_vuqaddh_s16(int16_t a, int16_t b) {
8252// CHECK-LABEL: test_vuqaddh_s16
8253// CHECK: suqadd {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
8254  return (int16_t)vuqaddh_s16(a, b);
8255}
8256
8257int32_t test_vuqadds_s32(int32_t a, int32_t b) {
8258// CHECK-LABEL: test_vuqadds_s32
8259// CHECK: suqadd {{s[0-9]+}}, {{s[0-9]+}}
8260  return (int32_t)vuqadds_s32(a, b);
8261}
8262
8263int64_t test_vuqaddd_s64(int64_t a, int64_t b) {
8264// CHECK-LABEL: test_vuqaddd_s64
8265// CHECK: suqadd {{d[0-9]+}}, {{d[0-9]+}}
8266  return (int64_t)vuqaddd_s64(a, b);
8267}
8268
8269uint8_t test_vsqaddb_u8(uint8_t a, uint8_t b) {
8270// CHECK-LABEL: test_vsqaddb_u8
8271// CHECK: usqadd {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}
8272  return (uint8_t)vsqaddb_u8(a, b);
8273}
8274
8275uint16_t test_vsqaddh_u16(uint16_t a, uint16_t b) {
8276// CHECK-LABEL: test_vsqaddh_u16
8277// CHECK: usqadd {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
8278  return (uint16_t)vsqaddh_u16(a, b);
8279}
8280
8281uint32_t test_vsqadds_u32(uint32_t a, uint32_t b) {
8282// CHECK-LABEL: test_vsqadds_u32
8283// CHECK: usqadd {{s[0-9]+}}, {{s[0-9]+}}
8284  return (uint32_t)vsqadds_u32(a, b);
8285}
8286
8287uint64_t test_vsqaddd_u64(uint64_t a, uint64_t b) {
8288// CHECK-LABEL: test_vsqaddd_u64
8289// CHECK: usqadd {{d[0-9]+}}, {{d[0-9]+}}
8290  return (uint64_t)vsqaddd_u64(a, b);
8291}
8292
8293int32_t test_vqdmlalh_s16(int32_t a, int16_t b, int16_t c) {
8294
8295// CHECK-ARM64-LABEL: test_vqdmlalh_s16
8296// CHECK-ARM64: sqdmull v[[PROD:[0-9]+]].4s, {{v[0-9]+.4h}}, {{v[0-9]+.4h}}
8297// CHECK-ARM64: sqadd {{s[0-9]+}}, {{s[0-9]+}}, s[[PROD]]
8298  return (int32_t)vqdmlalh_s16(a, b, c);
8299}
8300
8301int64_t test_vqdmlals_s32(int64_t a, int32_t b, int32_t c) {
8302// CHECK-LABEL: test_vqdmlals_s32
8303// CHECK: sqdmlal {{d[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
8304  return (int64_t)vqdmlals_s32(a, b, c);
8305}
8306
8307int32_t test_vqdmlslh_s16(int32_t a, int16_t b, int16_t c) {
8308
8309// CHECK-ARM64-LABEL: test_vqdmlslh_s16
8310// CHECK-ARM64: sqdmull v[[PROD:[0-9]+]].4s, {{v[0-9]+.4h}}, {{v[0-9]+.4h}}
8311// CHECK-ARM64: sqsub {{s[0-9]+}}, {{s[0-9]+}}, s[[PROD]]
8312  return (int32_t)vqdmlslh_s16(a, b, c);
8313}
8314
8315int64_t test_vqdmlsls_s32(int64_t a, int32_t b, int32_t c) {
8316// CHECK-LABEL: test_vqdmlsls_s32
8317// CHECK: sqdmlsl {{d[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
8318  return (int64_t)vqdmlsls_s32(a, b, c);
8319}
8320
8321int32_t test_vqdmullh_s16(int16_t a, int16_t b) {
8322// CHECK-LABEL: test_vqdmullh_s16
8323// CHECK: sqdmull {{s[0-9]+|v[0-9]+.4s}}, {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}
8324  return (int32_t)vqdmullh_s16(a, b);
8325}
8326
8327int64_t test_vqdmulls_s32(int32_t a, int32_t b) {
8328// CHECK-LABEL: test_vqdmulls_s32
8329// CHECK: sqdmull {{d[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
8330  return (int64_t)vqdmulls_s32(a, b);
8331}
8332
8333int8_t test_vqmovunh_s16(int16_t a) {
8334// CHECK-LABEL: test_vqmovunh_s16
8335// CHECK: sqxtun {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}
8336  return (int8_t)vqmovunh_s16(a);
8337}
8338
8339int16_t test_vqmovuns_s32(int32_t a) {
8340// CHECK-LABEL: test_vqmovuns_s32
8341// CHECK: sqxtun {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}
8342  return (int16_t)vqmovuns_s32(a);
8343}
8344
8345int32_t test_vqmovund_s64(int64_t a) {
8346// CHECK-LABEL: test_vqmovund_s64
8347// CHECK: sqxtun {{s[0-9]+}}, {{d[0-9]+}}
8348  return (int32_t)vqmovund_s64(a);
8349}
8350
8351int8_t test_vqmovnh_s16(int16_t a) {
8352// CHECK-LABEL: test_vqmovnh_s16
8353// CHECK: sqxtn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}
8354  return (int8_t)vqmovnh_s16(a);
8355}
8356
8357int16_t test_vqmovns_s32(int32_t a) {
8358// CHECK-LABEL: test_vqmovns_s32
8359// CHECK: sqxtn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}
8360  return (int16_t)vqmovns_s32(a);
8361}
8362
8363int32_t test_vqmovnd_s64(int64_t a) {
8364// CHECK-LABEL: test_vqmovnd_s64
8365// CHECK: sqxtn {{s[0-9]+}}, {{d[0-9]+}}
8366  return (int32_t)vqmovnd_s64(a);
8367}
8368
8369int8_t test_vqmovnh_u16(int16_t a) {
8370// CHECK-LABEL: test_vqmovnh_u16
8371// CHECK: uqxtn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}
8372  return (int8_t)vqmovnh_u16(a);
8373}
8374
8375int16_t test_vqmovns_u32(int32_t a) {
8376// CHECK-LABEL: test_vqmovns_u32
8377// CHECK: uqxtn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}
8378  return (int16_t)vqmovns_u32(a);
8379}
8380
8381int32_t test_vqmovnd_u64(int64_t a) {
8382// CHECK-LABEL: test_vqmovnd_u64
8383// CHECK: uqxtn {{s[0-9]+}}, {{d[0-9]+}}
8384  return (int32_t)vqmovnd_u64(a);
8385}
8386
8387uint32_t test_vceqs_f32(float32_t a, float32_t b) {
8388// CHECK-LABEL: test_vceqs_f32
8389// CHECK: {{fcmeq s0, s0, s1|fcmp s0, s1}}
8390  return (uint32_t)vceqs_f32(a, b);
8391}
8392
8393uint64_t test_vceqd_f64(float64_t a, float64_t b) {
8394// CHECK-LABEL: test_vceqd_f64
8395// CHECK: {{fcmeq d0, d0, d1|fcmp d0, d1}}
8396  return (uint64_t)vceqd_f64(a, b);
8397}
8398
8399uint32_t test_vceqzs_f32(float32_t a) {
8400// CHECK-LABEL: test_vceqzs_f32
8401// CHECK: {{fcmeq s0, s0, #0.0|fcmp s0, #0.0}}
8402  return (uint32_t)vceqzs_f32(a);
8403}
8404
8405uint64_t test_vceqzd_f64(float64_t a) {
8406// CHECK-LABEL: test_vceqzd_f64
8407// CHECK: {{fcmeq d0, d0, #0.0|fcmp d0, #0.0}}
8408  return (uint64_t)vceqzd_f64(a);
8409}
8410
8411uint32_t test_vcges_f32(float32_t a, float32_t b) {
8412// CHECK-LABEL: test_vcges_f32
8413// CHECK: {{fcmge s0, s0, s1|fcmp s0, s1}}
8414  return (uint32_t)vcges_f32(a, b);
8415}
8416
8417uint64_t test_vcged_f64(float64_t a, float64_t b) {
8418// CHECK-LABEL: test_vcged_f64
8419// CHECK: {{fcmge d0, d0, d1|fcmp d0, d1}}
8420  return (uint64_t)vcged_f64(a, b);
8421}
8422
8423uint32_t test_vcgezs_f32(float32_t a) {
8424// CHECK-LABEL: test_vcgezs_f32
8425// CHECK: {{fcmge s0, s0, #0.0|fcmp s0, #0.0}}
8426  return (uint32_t)vcgezs_f32(a);
8427}
8428
8429uint64_t test_vcgezd_f64(float64_t a) {
8430// CHECK-LABEL: test_vcgezd_f64
8431// CHECK: {{fcmge d0, d0, #0.0|fcmp d0, #0.0}}
8432  return (uint64_t)vcgezd_f64(a);
8433}
8434
8435uint32_t test_vcgts_f32(float32_t a, float32_t b) {
8436// CHECK-LABEL: test_vcgts_f32
8437// CHECK: {{fcmgt s0, s0, s1|fcmp s0, s1}}
8438  return (uint32_t)vcgts_f32(a, b);
8439}
8440
8441uint64_t test_vcgtd_f64(float64_t a, float64_t b) {
8442// CHECK-LABEL: test_vcgtd_f64
8443// CHECK: {{fcmgt d0, d0, d1|fcmp d0, d1}}
8444  return (uint64_t)vcgtd_f64(a, b);
8445}
8446
8447uint32_t test_vcgtzs_f32(float32_t a) {
8448// CHECK-LABEL: test_vcgtzs_f32
8449// CHECK: {{fcmgt s0, s0, #0.0|fcmp s0, #0.0}}
8450  return (uint32_t)vcgtzs_f32(a);
8451}
8452
8453uint64_t test_vcgtzd_f64(float64_t a) {
8454// CHECK-LABEL: test_vcgtzd_f64
8455// CHECK: {{fcmgt d0, d0, #0.0|fcmp d0, #0.0}}
8456  return (uint64_t)vcgtzd_f64(a);
8457}
8458
8459uint32_t test_vcles_f32(float32_t a, float32_t b) {
8460// CHECK-LABEL: test_vcles_f32
8461// CHECK: {{fcmge s0, s1, s0|fcmp s0, s1}}
8462  return (uint32_t)vcles_f32(a, b);
8463}
8464
8465uint64_t test_vcled_f64(float64_t a, float64_t b) {
8466// CHECK-LABEL: test_vcled_f64
8467// CHECK: {{fcmge d0, d1, d0|fcmp d0, d1}}
8468  return (uint64_t)vcled_f64(a, b);
8469}
8470
8471uint32_t test_vclezs_f32(float32_t a) {
8472// CHECK-LABEL: test_vclezs_f32
8473// CHECK: {{fcmle s0, s0, #0.0|fcmp s0, #0.0}}
8474  return (uint32_t)vclezs_f32(a);
8475}
8476
8477uint64_t test_vclezd_f64(float64_t a) {
8478// CHECK-LABEL: test_vclezd_f64
8479// CHECK: {{fcmle d0, d0, #0.0|fcmp d0, #0.0}}
8480  return (uint64_t)vclezd_f64(a);
8481}
8482
8483uint32_t test_vclts_f32(float32_t a, float32_t b) {
8484// CHECK-LABEL: test_vclts_f32
8485// CHECK: {{fcmgt s0, s1, s0|fcmp s0, s1}}
8486  return (uint32_t)vclts_f32(a, b);
8487}
8488
8489uint64_t test_vcltd_f64(float64_t a, float64_t b) {
8490// CHECK-LABEL: test_vcltd_f64
8491// CHECK: {{fcmgt d0, d1, d0|fcmp d0, d1}}
8492  return (uint64_t)vcltd_f64(a, b);
8493}
8494
8495uint32_t test_vcltzs_f32(float32_t a) {
8496// CHECK-LABEL: test_vcltzs_f32
8497// CHECK: {{fcmlt s0, s0, #0.0|fcmp s0, #0.0}}
8498  return (uint32_t)vcltzs_f32(a);
8499}
8500
8501uint64_t test_vcltzd_f64(float64_t a) {
8502// CHECK-LABEL: test_vcltzd_f64
8503// CHECK: {{fcmlt d0, d0, #0.0|fcmp d0, #0.0}}
8504  return (uint64_t)vcltzd_f64(a);
8505}
8506
8507uint32_t test_vcages_f32(float32_t a, float32_t b) {
8508// CHECK-LABEL: test_vcages_f32
8509// CHECK: facge s0, s0, s1
8510  return (uint32_t)vcages_f32(a, b);
8511}
8512
8513uint64_t test_vcaged_f64(float64_t a, float64_t b) {
8514// CHECK-LABEL: test_vcaged_f64
8515// CHECK: facge d0, d0, d1
8516  return (uint64_t)vcaged_f64(a, b);
8517}
8518
8519uint32_t test_vcagts_f32(float32_t a, float32_t b) {
8520// CHECK-LABEL: test_vcagts_f32
8521// CHECK: facgt s0, s0, s1
8522  return (uint32_t)vcagts_f32(a, b);
8523}
8524
8525uint64_t test_vcagtd_f64(float64_t a, float64_t b) {
8526// CHECK-LABEL: test_vcagtd_f64
8527// CHECK: facgt d0, d0, d1
8528  return (uint64_t)vcagtd_f64(a, b);
8529}
8530
8531uint32_t test_vcales_f32(float32_t a, float32_t b) {
8532// CHECK-LABEL: test_vcales_f32
8533// CHECK: facge s0, s1, s0
8534  return (uint32_t)vcales_f32(a, b);
8535}
8536
8537uint64_t test_vcaled_f64(float64_t a, float64_t b) {
8538// CHECK-LABEL: test_vcaled_f64
8539// CHECK: facge d0, d1, d0
8540  return (uint64_t)vcaled_f64(a, b);
8541}
8542
8543uint32_t test_vcalts_f32(float32_t a, float32_t b) {
8544// CHECK-LABEL: test_vcalts_f32
8545// CHECK: facgt s0, s1, s0
8546  return (uint32_t)vcalts_f32(a, b);
8547}
8548
8549uint64_t test_vcaltd_f64(float64_t a, float64_t b) {
8550// CHECK-LABEL: test_vcaltd_f64
8551// CHECK: facgt d0, d1, d0
8552  return (uint64_t)vcaltd_f64(a, b);
8553}
8554
8555int64_t test_vshrd_n_s64(int64_t a) {
8556// CHECK-LABEL: test_vshrd_n_s64
8557// CHECK: {{sshr d[0-9]+, d[0-9]+, #1|asr x0, x0, #1}}
8558  return (int64_t)vshrd_n_s64(a, 1);
8559}
8560
8561int64x1_t test_vshr_n_s64(int64x1_t a) {
8562// CHECK-LABEL: test_vshr_n_s64
8563// CHECK: sshr {{d[0-9]+}}, {{d[0-9]+}}, #1
8564  return vshr_n_s64(a, 1);
8565}
8566
8567uint64_t test_vshrd_n_u64(uint64_t a) {
8568
8569// CHECK-ARM64-LABEL: test_vshrd_n_u64
8570// CHECK-ARM64: mov x0, xzr
8571  return (uint64_t)vshrd_n_u64(a, 64);
8572}
8573
8574uint64_t test_vshrd_n_u64_2() {
8575
8576// CHECK-ARM64-LABEL: test_vshrd_n_u64_2
8577// CHECK-ARM64: mov x0, xzr
8578  uint64_t a = UINT64_C(0xf000000000000000);
8579  return vshrd_n_u64(a, 64);
8580}
8581
8582uint64x1_t test_vshr_n_u64(uint64x1_t a) {
8583// CHECK-LABEL: test_vshr_n_u64
8584// CHECK: ushr {{d[0-9]+}}, {{d[0-9]+}}, #1
8585  return vshr_n_u64(a, 1);
8586}
8587
8588int64_t test_vrshrd_n_s64(int64_t a) {
8589// CHECK-LABEL: test_vrshrd_n_s64
8590// CHECK: srshr {{d[0-9]+}}, {{d[0-9]+}}, #63
8591  return (int64_t)vrshrd_n_s64(a, 63);
8592}
8593
8594int64x1_t test_vrshr_n_s64(int64x1_t a) {
8595// CHECK-LABEL: test_vrshr_n_s64
8596// CHECK: srshr d{{[0-9]+}}, d{{[0-9]+}}, #1
8597  return vrshr_n_s64(a, 1);
8598}
8599
8600uint64_t test_vrshrd_n_u64(uint64_t a) {
8601// CHECK-LABEL: test_vrshrd_n_u64
8602// CHECK: urshr {{d[0-9]+}}, {{d[0-9]+}}, #63
8603  return (uint64_t)vrshrd_n_u64(a, 63);
8604}
8605
8606uint64x1_t test_vrshr_n_u64(uint64x1_t a) {
8607// CHECK-LABEL: test_vrshr_n_u64
8608// CHECK: urshr d{{[0-9]+}}, d{{[0-9]+}}, #1
8609  return vrshr_n_u64(a, 1);
8610}
8611
8612int64_t test_vsrad_n_s64(int64_t a, int64_t b) {
8613// CHECK-LABEL: test_vsrad_n_s64
8614// CHECK: {{ssra d[0-9]+, d[0-9]+, #63|add x0, x0, x1, asr #63}}
8615  return (int64_t)vsrad_n_s64(a, b, 63);
8616}
8617
8618int64x1_t test_vsra_n_s64(int64x1_t a, int64x1_t b) {
8619// CHECK-LABEL: test_vsra_n_s64
8620// CHECK: ssra d{{[0-9]+}}, d{{[0-9]+}}, #1
8621  return vsra_n_s64(a, b, 1);
8622}
8623
8624uint64_t test_vsrad_n_u64(uint64_t a, uint64_t b) {
8625// CHECK-LABEL: test_vsrad_n_u64
8626// CHECK: {{usra d[0-9]+, d[0-9]+, #63|add x0, x0, x1, lsr #63}}
8627  return (uint64_t)vsrad_n_u64(a, b, 63);
8628}
8629
8630uint64_t test_vsrad_n_u64_2(uint64_t a, uint64_t b) {
8631
8632// CHECK-ARM64-LABEL: test_vsrad_n_u64_2
8633// CHECK-ARM64-NOT: add
8634  return (uint64_t)vsrad_n_u64(a, b, 64);
8635}
8636
8637uint64x1_t test_vsra_n_u64(uint64x1_t a, uint64x1_t b) {
8638// CHECK-LABEL: test_vsra_n_u64
8639// CHECK: usra d{{[0-9]+}}, d{{[0-9]+}}, #1
8640  return vsra_n_u64(a, b, 1);
8641}
8642
8643int64_t test_vrsrad_n_s64(int64_t a, int64_t b) {
8644// CHECK-LABEL: test_vrsrad_n_s64
8645// CHECK: {{srsra d[0-9]+, d[0-9]+, #63}}
8646  return (int64_t)vrsrad_n_s64(a, b, 63);
8647}
8648
8649int64x1_t test_vrsra_n_s64(int64x1_t a, int64x1_t b) {
8650// CHECK-LABEL: test_vrsra_n_s64
8651// CHECK: srsra d{{[0-9]+}}, d{{[0-9]+}}, #1
8652  return vrsra_n_s64(a, b, 1);
8653}
8654
8655uint64_t test_vrsrad_n_u64(uint64_t a, uint64_t b) {
8656// CHECK-LABEL: test_vrsrad_n_u64
8657// CHECK: ursra {{d[0-9]+}}, {{d[0-9]+}}, #63
8658  return (uint64_t)vrsrad_n_u64(a, b, 63);
8659}
8660
8661uint64x1_t test_vrsra_n_u64(uint64x1_t a, uint64x1_t b) {
8662// CHECK-LABEL: test_vrsra_n_u64
8663// CHECK: ursra d{{[0-9]+}}, d{{[0-9]+}}, #1
8664  return vrsra_n_u64(a, b, 1);
8665}
8666
8667int64_t test_vshld_n_s64(int64_t a) {
8668// CHECK-LABEL: test_vshld_n_s64
8669// CHECK: {{shl d[0-9]+, d[0-9]+, #1|lsl x0, x0, #1}}
8670  return (int64_t)vshld_n_s64(a, 1);
8671}
8672int64x1_t test_vshl_n_s64(int64x1_t a) {
8673// CHECK-LABEL: test_vshl_n_s64
8674// CHECK: shl d{{[0-9]+}}, d{{[0-9]+}}, #1
8675  return vshl_n_s64(a, 1);
8676}
8677
8678uint64_t test_vshld_n_u64(uint64_t a) {
8679// CHECK-LABEL: test_vshld_n_u64
8680// CHECK: {{shl d[0-9]+, d[0-9]+, #63|lsl x0, x0, #63}}
8681  return (uint64_t)vshld_n_u64(a, 63);
8682}
8683
8684uint64x1_t test_vshl_n_u64(uint64x1_t a) {
8685// CHECK-LABEL: test_vshl_n_u64
8686// CHECK: shl d{{[0-9]+}}, d{{[0-9]+}}, #1
8687  return vshl_n_u64(a, 1);
8688}
8689
8690int8_t test_vqshlb_n_s8(int8_t a) {
8691// CHECK-LABEL: test_vqshlb_n_s8
8692// CHECK: sqshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, #7
8693  return (int8_t)vqshlb_n_s8(a, 7);
8694}
8695
8696int16_t test_vqshlh_n_s16(int16_t a) {
8697// CHECK-LABEL: test_vqshlh_n_s16
8698// CHECK: sqshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, #15
8699  return (int16_t)vqshlh_n_s16(a, 15);
8700}
8701
8702int32_t test_vqshls_n_s32(int32_t a) {
8703// CHECK-LABEL: test_vqshls_n_s32
8704// CHECK: sqshl {{s[0-9]+}}, {{s[0-9]+}}, #31
8705  return (int32_t)vqshls_n_s32(a, 31);
8706}
8707
8708int64_t test_vqshld_n_s64(int64_t a) {
8709// CHECK-LABEL: test_vqshld_n_s64
8710// CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, #63
8711  return (int64_t)vqshld_n_s64(a, 63);
8712}
8713
8714int8x8_t test_vqshl_n_s8(int8x8_t a) {
8715  // CHECK-LABEL: test_vqshl_n_s8
8716  return vqshl_n_s8(a, 0);
8717  // CHECK: sqshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
8718}
8719
8720int8x16_t test_vqshlq_n_s8(int8x16_t a) {
8721  // CHECK-LABEL: test_vqshlq_n_s8
8722  return vqshlq_n_s8(a, 0);
8723  // CHECK: sqshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0
8724}
8725
8726int16x4_t test_vqshl_n_s16(int16x4_t a) {
8727  // CHECK-LABEL: test_vqshl_n_s16
8728  return vqshl_n_s16(a, 0);
8729  // CHECK: sqshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0
8730}
8731
8732int16x8_t test_vqshlq_n_s16(int16x8_t a) {
8733  // CHECK-LABEL: test_vqshlq_n_s16
8734  return vqshlq_n_s16(a, 0);
8735  // CHECK: sqshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0
8736}
8737
8738int32x2_t test_vqshl_n_s32(int32x2_t a) {
8739  // CHECK-LABEL: test_vqshl_n_s32
8740  return vqshl_n_s32(a, 0);
8741  // CHECK: sqshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
8742}
8743
8744int32x4_t test_vqshlq_n_s32(int32x4_t a) {
8745  // CHECK-LABEL: test_vqshlq_n_s32
8746  return vqshlq_n_s32(a, 0);
8747  // CHECK: sqshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
8748}
8749
8750int64x2_t test_vqshlq_n_s64(int64x2_t a) {
8751  // CHECK-LABEL: test_vqshlq_n_s64
8752  return vqshlq_n_s64(a, 0);
8753  // CHECK: sqshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
8754}
8755
8756uint8x8_t test_vqshl_n_u8(uint8x8_t a) {
8757  // CHECK-LABEL: test_vqshl_n_u8
8758  return vqshl_n_u8(a, 0);
8759  // CHECK: uqshl {{v[0-9]+}}.8b, {{v[0-9]+}}.8b, #0
8760}
8761
8762uint8x16_t test_vqshlq_n_u8(uint8x16_t a) {
8763  // CHECK-LABEL: test_vqshlq_n_u8
8764  return vqshlq_n_u8(a, 0);
8765  // CHECK: uqshl {{v[0-9]+}}.16b, {{v[0-9]+}}.16b, #0
8766}
8767
8768uint16x4_t test_vqshl_n_u16(uint16x4_t a) {
8769  // CHECK-LABEL: test_vqshl_n_u16
8770  return vqshl_n_u16(a, 0);
8771  // CHECK: uqshl {{v[0-9]+}}.4h, {{v[0-9]+}}.4h, #0
8772}
8773
8774uint16x8_t test_vqshlq_n_u16(uint16x8_t a) {
8775  // CHECK-LABEL: test_vqshlq_n_u16
8776  return vqshlq_n_u16(a, 0);
8777  // CHECK: uqshl {{v[0-9]+}}.8h, {{v[0-9]+}}.8h, #0
8778}
8779
8780uint32x2_t test_vqshl_n_u32(uint32x2_t a) {
8781  // CHECK-LABEL: test_vqshl_n_u32
8782  return vqshl_n_u32(a, 0);
8783  // CHECK: uqshl {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, #0
8784}
8785
8786uint32x4_t test_vqshlq_n_u32(uint32x4_t a) {
8787  // CHECK-LABEL: test_vqshlq_n_u32
8788  return vqshlq_n_u32(a, 0);
8789  // CHECK: uqshl {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, #0
8790}
8791
8792uint64x2_t test_vqshlq_n_u64(uint64x2_t a) {
8793  // CHECK-LABEL: test_vqshlq_n_u64
8794  return vqshlq_n_u64(a, 0);
8795  // CHECK: uqshl {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, #0
8796}
8797
8798int64x1_t test_vqshl_n_s64(int64x1_t a) {
8799// CHECK-LABEL: test_vqshl_n_s64
8800// CHECK: sqshl d{{[0-9]+}}, d{{[0-9]+}}, #1
8801  return vqshl_n_s64(a, 1);
8802}
8803
8804uint8_t test_vqshlb_n_u8(uint8_t a) {
8805// CHECK-LABEL: test_vqshlb_n_u8
8806// CHECK: uqshl {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, #7
8807  return (uint8_t)vqshlb_n_u8(a, 7);
8808}
8809
8810uint16_t test_vqshlh_n_u16(uint16_t a) {
8811// CHECK-LABEL: test_vqshlh_n_u16
8812// CHECK: uqshl {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, #15
8813  return (uint16_t)vqshlh_n_u16(a, 15);
8814}
8815
8816uint32_t test_vqshls_n_u32(uint32_t a) {
8817// CHECK-LABEL: test_vqshls_n_u32
8818// CHECK: uqshl {{s[0-9]+}}, {{s[0-9]+}}, #31
8819  return (uint32_t)vqshls_n_u32(a, 31);
8820}
8821
8822uint64_t test_vqshld_n_u64(uint64_t a) {
8823// CHECK-LABEL: test_vqshld_n_u64
8824// CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, #63
8825  return (uint64_t)vqshld_n_u64(a, 63);
8826}
8827
8828uint64x1_t test_vqshl_n_u64(uint64x1_t a) {
8829// CHECK-LABEL: test_vqshl_n_u64
8830// CHECK: uqshl d{{[0-9]+}}, d{{[0-9]+}}, #1
8831  return vqshl_n_u64(a, 1);
8832}
8833
8834int8_t test_vqshlub_n_s8(int8_t a) {
8835// CHECK-LABEL: test_vqshlub_n_s8
8836// CHECK: sqshlu {{b[0-9]+|v[0-9]+.8b}}, {{b[0-9]+|v[0-9]+.8b}}, #7
8837  return (int8_t)vqshlub_n_s8(a, 7);
8838}
8839
8840int16_t test_vqshluh_n_s16(int16_t a) {
8841// CHECK-LABEL: test_vqshluh_n_s16
8842// CHECK: sqshlu {{h[0-9]+|v[0-9]+.4h}}, {{h[0-9]+|v[0-9]+.4h}}, #15
8843  return (int16_t)vqshluh_n_s16(a, 15);
8844}
8845
8846int32_t test_vqshlus_n_s32(int32_t a) {
8847// CHECK-LABEL: test_vqshlus_n_s32
8848// CHECK: sqshlu {{s[0-9]+}}, {{s[0-9]+}}, #31
8849  return (int32_t)vqshlus_n_s32(a, 31);
8850}
8851
8852int64_t test_vqshlud_n_s64(int64_t a) {
8853// CHECK-LABEL: test_vqshlud_n_s64
8854// CHECK: sqshlu {{d[0-9]+}}, {{d[0-9]+}}, #63
8855  return (int64_t)vqshlud_n_s64(a, 63);
8856}
8857
8858uint64x1_t test_vqshlu_n_s64(int64x1_t a) {
8859// CHECK-LABEL: test_vqshlu_n_s64
8860// CHECK: sqshlu d{{[0-9]+}}, d{{[0-9]+}}, #1
8861  return vqshlu_n_s64(a, 1);
8862}
8863
8864int64_t test_vsrid_n_s64(int64_t a, int64_t b) {
8865// CHECK-LABEL: test_vsrid_n_s64
8866// CHECK: sri {{d[0-9]+}}, {{d[0-9]+}}, #63
8867  return (int64_t)vsrid_n_s64(a, b, 63);
8868}
8869
8870int64x1_t test_vsri_n_s64(int64x1_t a, int64x1_t b) {
8871// CHECK-LABEL: test_vsri_n_s64
8872// CHECK: sri d{{[0-9]+}}, d{{[0-9]+}}, #1
8873  return vsri_n_s64(a, b, 1);
8874}
8875
8876uint64_t test_vsrid_n_u64(uint64_t a, uint64_t b) {
8877// CHECK-LABEL: test_vsrid_n_u64
8878// CHECK: sri {{d[0-9]+}}, {{d[0-9]+}}, #63
8879  return (uint64_t)vsrid_n_u64(a, b, 63);
8880}
8881
8882uint64x1_t test_vsri_n_u64(uint64x1_t a, uint64x1_t b) {
8883// CHECK-LABEL: test_vsri_n_u64
8884// CHECK: sri d{{[0-9]+}}, d{{[0-9]+}}, #1
8885  return vsri_n_u64(a, b, 1);
8886}
8887
8888int64_t test_vslid_n_s64(int64_t a, int64_t b) {
8889// CHECK-LABEL: test_vslid_n_s64
8890// CHECK: sli {{d[0-9]+}}, {{d[0-9]+}}, #63
8891  return (int64_t)vslid_n_s64(a, b, 63);
8892}
8893
8894int64x1_t test_vsli_n_s64(int64x1_t a, int64x1_t b) {
8895// CHECK-LABEL: test_vsli_n_s64
8896// CHECK: sli d{{[0-9]+}}, d{{[0-9]+}}, #1
8897  return vsli_n_s64(a, b, 1);
8898}
8899
8900uint64_t test_vslid_n_u64(uint64_t a, uint64_t b) {
8901// CHECK-LABEL: test_vslid_n_u64
8902// CHECK: sli {{d[0-9]+}}, {{d[0-9]+}}, #63
8903  return (uint64_t)vslid_n_u64(a, b, 63);
8904}
8905
8906uint64x1_t test_vsli_n_u64(uint64x1_t a, uint64x1_t b) {
8907// CHECK-LABEL: test_vsli_n_u64
8908// CHECK: sli d{{[0-9]+}}, d{{[0-9]+}}, #1
8909  return vsli_n_u64(a, b, 1);
8910}
8911
8912int8_t test_vqshrnh_n_s16(int16_t a) {
8913// CHECK-LABEL: test_vqshrnh_n_s16
8914// CHECK: sqshrn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
8915  return (int8_t)vqshrnh_n_s16(a, 8);
8916}
8917
8918int16_t test_vqshrns_n_s32(int32_t a) {
8919// CHECK-LABEL: test_vqshrns_n_s32
8920// CHECK: sqshrn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
8921  return (int16_t)vqshrns_n_s32(a, 16);
8922}
8923
8924int32_t test_vqshrnd_n_s64(int64_t a) {
8925// CHECK-LABEL: test_vqshrnd_n_s64
8926// CHECK: sqshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
8927  return (int32_t)vqshrnd_n_s64(a, 32);
8928}
8929
8930uint8_t test_vqshrnh_n_u16(uint16_t a) {
8931// CHECK-LABEL: test_vqshrnh_n_u16
8932// CHECK: uqshrn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
8933  return (uint8_t)vqshrnh_n_u16(a, 8);
8934}
8935
8936uint16_t test_vqshrns_n_u32(uint32_t a) {
8937// CHECK-LABEL: test_vqshrns_n_u32
8938// CHECK: uqshrn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
8939  return (uint16_t)vqshrns_n_u32(a, 16);
8940}
8941
8942uint32_t test_vqshrnd_n_u64(uint64_t a) {
8943// CHECK-LABEL: test_vqshrnd_n_u64
8944// CHECK: uqshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
8945  return (uint32_t)vqshrnd_n_u64(a, 32);
8946}
8947
8948int8_t test_vqrshrnh_n_s16(int16_t a) {
8949// CHECK-LABEL: test_vqrshrnh_n_s16
8950// CHECK: sqrshrn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
8951  return (int8_t)vqrshrnh_n_s16(a, 8);
8952}
8953
8954int16_t test_vqrshrns_n_s32(int32_t a) {
8955// CHECK-LABEL: test_vqrshrns_n_s32
8956// CHECK: sqrshrn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
8957  return (int16_t)vqrshrns_n_s32(a, 16);
8958}
8959
8960int32_t test_vqrshrnd_n_s64(int64_t a) {
8961// CHECK-LABEL: test_vqrshrnd_n_s64
8962// CHECK: sqrshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
8963  return (int32_t)vqrshrnd_n_s64(a, 32);
8964}
8965
8966uint8_t test_vqrshrnh_n_u16(uint16_t a) {
8967// CHECK-LABEL: test_vqrshrnh_n_u16
8968// CHECK: uqrshrn {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
8969  return (uint8_t)vqrshrnh_n_u16(a, 8);
8970}
8971
8972uint16_t test_vqrshrns_n_u32(uint32_t a) {
8973// CHECK-LABEL: test_vqrshrns_n_u32
8974// CHECK: uqrshrn {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
8975  return (uint16_t)vqrshrns_n_u32(a, 16);
8976}
8977
8978uint32_t test_vqrshrnd_n_u64(uint64_t a) {
8979// CHECK-LABEL: test_vqrshrnd_n_u64
8980// CHECK: uqrshrn {{s[0-9]+}}, {{d[0-9]+}}, #32
8981  return (uint32_t)vqrshrnd_n_u64(a, 32);
8982}
8983
8984int8_t test_vqshrunh_n_s16(int16_t a) {
8985// CHECK-LABEL: test_vqshrunh_n_s16
8986// CHECK: sqshrun {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
8987  return (int8_t)vqshrunh_n_s16(a, 8);
8988}
8989
8990int16_t test_vqshruns_n_s32(int32_t a) {
8991// CHECK-LABEL: test_vqshruns_n_s32
8992// CHECK: sqshrun {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
8993  return (int16_t)vqshruns_n_s32(a, 16);
8994}
8995
8996int32_t test_vqshrund_n_s64(int64_t a) {
8997// CHECK-LABEL: test_vqshrund_n_s64
8998// CHECK: sqshrun {{s[0-9]+}}, {{d[0-9]+}}, #32
8999  return (int32_t)vqshrund_n_s64(a, 32);
9000}
9001
9002int8_t test_vqrshrunh_n_s16(int16_t a) {
9003// CHECK-LABEL: test_vqrshrunh_n_s16
9004// CHECK: sqrshrun {{b[0-9]+|v[0-9]+.8b}}, {{h[0-9]+|v[0-9]+.8h}}, #8
9005  return (int8_t)vqrshrunh_n_s16(a, 8);
9006}
9007
9008int16_t test_vqrshruns_n_s32(int32_t a) {
9009// CHECK-LABEL: test_vqrshruns_n_s32
9010// CHECK: sqrshrun {{h[0-9]+|v[0-9]+.4h}}, {{s[0-9]+|v[0-9]+.4s}}, #16
9011  return (int16_t)vqrshruns_n_s32(a, 16);
9012}
9013
9014int32_t test_vqrshrund_n_s64(int64_t a) {
9015// CHECK-LABEL: test_vqrshrund_n_s64
9016// CHECK: sqrshrun {{s[0-9]+}}, {{d[0-9]+}}, #32
9017  return (int32_t)vqrshrund_n_s64(a, 32);
9018}
9019
9020float32_t test_vcvts_n_f32_s32(int32_t a) {
9021// CHECK-LABEL: test_vcvts_n_f32_s32
9022// CHECK: scvtf {{s[0-9]+}}, {{s[0-9]+}}, #1
9023  return vcvts_n_f32_s32(a, 1);
9024}
9025
9026float64_t test_vcvtd_n_f64_s64(int64_t a) {
9027// CHECK-LABEL: test_vcvtd_n_f64_s64
9028// CHECK: scvtf {{d[0-9]+}}, {{d[0-9]+}}, #1
9029  return vcvtd_n_f64_s64(a, 1);
9030}
9031
9032float32_t test_vcvts_n_f32_u32(uint32_t a) {
9033// CHECK-LABEL: test_vcvts_n_f32_u32
9034// CHECK: ucvtf {{s[0-9]+}}, {{s[0-9]+}}, #32
9035  return vcvts_n_f32_u32(a, 32);
9036}
9037
9038float64_t test_vcvtd_n_f64_u64(uint64_t a) {
9039// CHECK-LABEL: test_vcvtd_n_f64_u64
9040// CHECK: ucvtf {{d[0-9]+}}, {{d[0-9]+}}, #64
9041  return vcvtd_n_f64_u64(a, 64);
9042}
9043
9044int32_t test_vcvts_n_s32_f32(float32_t a) {
9045// CHECK-LABEL: test_vcvts_n_s32_f32
9046// CHECK: fcvtzs {{s[0-9]+}}, {{s[0-9]+}}, #1
9047  return (int32_t)vcvts_n_s32_f32(a, 1);
9048}
9049
9050int64_t test_vcvtd_n_s64_f64(float64_t a) {
9051// CHECK-LABEL: test_vcvtd_n_s64_f64
9052// CHECK: fcvtzs {{d[0-9]+}}, {{d[0-9]+}}, #1
9053  return (int64_t)vcvtd_n_s64_f64(a, 1);
9054}
9055
9056uint32_t test_vcvts_n_u32_f32(float32_t a) {
9057// CHECK-LABEL: test_vcvts_n_u32_f32
9058// CHECK: fcvtzu {{s[0-9]+}}, {{s[0-9]+}}, #32
9059  return (uint32_t)vcvts_n_u32_f32(a, 32);
9060}
9061
9062uint64_t test_vcvtd_n_u64_f64(float64_t a) {
9063// CHECK-LABEL: test_vcvtd_n_u64_f64
9064// CHECK: fcvtzu {{d[0-9]+}}, {{d[0-9]+}}, #64
9065  return (uint64_t)vcvtd_n_u64_f64(a, 64);
9066}
9067
9068// CHECK-LABEL: test_vreinterpret_s8_s16:
9069// CHECK-NEXT: ret
9070int8x8_t test_vreinterpret_s8_s16(int16x4_t a) {
9071  return vreinterpret_s8_s16(a);
9072}
9073
9074// CHECK-LABEL: test_vreinterpret_s8_s32:
9075// CHECK-NEXT: ret
9076int8x8_t test_vreinterpret_s8_s32(int32x2_t a) {
9077  return vreinterpret_s8_s32(a);
9078}
9079
9080// CHECK-LABEL: test_vreinterpret_s8_s64:
9081// CHECK-NEXT: ret
9082int8x8_t test_vreinterpret_s8_s64(int64x1_t a) {
9083  return vreinterpret_s8_s64(a);
9084}
9085
9086// CHECK-LABEL: test_vreinterpret_s8_u8:
9087// CHECK-NEXT: ret
9088int8x8_t test_vreinterpret_s8_u8(uint8x8_t a) {
9089  return vreinterpret_s8_u8(a);
9090}
9091
9092// CHECK-LABEL: test_vreinterpret_s8_u16:
9093// CHECK-NEXT: ret
9094int8x8_t test_vreinterpret_s8_u16(uint16x4_t a) {
9095  return vreinterpret_s8_u16(a);
9096}
9097
9098// CHECK-LABEL: test_vreinterpret_s8_u32:
9099// CHECK-NEXT: ret
9100int8x8_t test_vreinterpret_s8_u32(uint32x2_t a) {
9101  return vreinterpret_s8_u32(a);
9102}
9103
9104// CHECK-LABEL: test_vreinterpret_s8_u64:
9105// CHECK-NEXT: ret
9106int8x8_t test_vreinterpret_s8_u64(uint64x1_t a) {
9107  return vreinterpret_s8_u64(a);
9108}
9109
9110// CHECK-LABEL: test_vreinterpret_s8_f16:
9111// CHECK-NEXT: ret
9112int8x8_t test_vreinterpret_s8_f16(float16x4_t a) {
9113  return vreinterpret_s8_f16(a);
9114}
9115
9116// CHECK-LABEL: test_vreinterpret_s8_f32:
9117// CHECK-NEXT: ret
9118int8x8_t test_vreinterpret_s8_f32(float32x2_t a) {
9119  return vreinterpret_s8_f32(a);
9120}
9121
9122// CHECK-LABEL: test_vreinterpret_s8_f64:
9123// CHECK-NEXT: ret
9124int8x8_t test_vreinterpret_s8_f64(float64x1_t a) {
9125  return vreinterpret_s8_f64(a);
9126}
9127
9128// CHECK-LABEL: test_vreinterpret_s8_p8:
9129// CHECK-NEXT: ret
9130int8x8_t test_vreinterpret_s8_p8(poly8x8_t a) {
9131  return vreinterpret_s8_p8(a);
9132}
9133
9134// CHECK-LABEL: test_vreinterpret_s8_p16:
9135// CHECK-NEXT: ret
9136int8x8_t test_vreinterpret_s8_p16(poly16x4_t a) {
9137  return vreinterpret_s8_p16(a);
9138}
9139
9140// CHECK-LABEL: test_vreinterpret_s8_p64:
9141// CHECK-NEXT: ret
9142int8x8_t test_vreinterpret_s8_p64(poly64x1_t a) {
9143  return vreinterpret_s8_p64(a);
9144}
9145
9146// CHECK-LABEL: test_vreinterpret_s16_s8:
9147// CHECK-NEXT: ret
9148int16x4_t test_vreinterpret_s16_s8(int8x8_t a) {
9149  return vreinterpret_s16_s8(a);
9150}
9151
9152// CHECK-LABEL: test_vreinterpret_s16_s32:
9153// CHECK-NEXT: ret
9154int16x4_t test_vreinterpret_s16_s32(int32x2_t a) {
9155  return vreinterpret_s16_s32(a);
9156}
9157
9158// CHECK-LABEL: test_vreinterpret_s16_s64:
9159// CHECK-NEXT: ret
9160int16x4_t test_vreinterpret_s16_s64(int64x1_t a) {
9161  return vreinterpret_s16_s64(a);
9162}
9163
9164// CHECK-LABEL: test_vreinterpret_s16_u8:
9165// CHECK-NEXT: ret
9166int16x4_t test_vreinterpret_s16_u8(uint8x8_t a) {
9167  return vreinterpret_s16_u8(a);
9168}
9169
9170// CHECK-LABEL: test_vreinterpret_s16_u16:
9171// CHECK-NEXT: ret
9172int16x4_t test_vreinterpret_s16_u16(uint16x4_t a) {
9173  return vreinterpret_s16_u16(a);
9174}
9175
9176// CHECK-LABEL: test_vreinterpret_s16_u32:
9177// CHECK-NEXT: ret
9178int16x4_t test_vreinterpret_s16_u32(uint32x2_t a) {
9179  return vreinterpret_s16_u32(a);
9180}
9181
9182// CHECK-LABEL: test_vreinterpret_s16_u64:
9183// CHECK-NEXT: ret
9184int16x4_t test_vreinterpret_s16_u64(uint64x1_t a) {
9185  return vreinterpret_s16_u64(a);
9186}
9187
9188// CHECK-LABEL: test_vreinterpret_s16_f16:
9189// CHECK-NEXT: ret
9190int16x4_t test_vreinterpret_s16_f16(float16x4_t a) {
9191  return vreinterpret_s16_f16(a);
9192}
9193
9194// CHECK-LABEL: test_vreinterpret_s16_f32:
9195// CHECK-NEXT: ret
9196int16x4_t test_vreinterpret_s16_f32(float32x2_t a) {
9197  return vreinterpret_s16_f32(a);
9198}
9199
9200// CHECK-LABEL: test_vreinterpret_s16_f64:
9201// CHECK-NEXT: ret
9202int16x4_t test_vreinterpret_s16_f64(float64x1_t a) {
9203  return vreinterpret_s16_f64(a);
9204}
9205
9206// CHECK-LABEL: test_vreinterpret_s16_p8:
9207// CHECK-NEXT: ret
9208int16x4_t test_vreinterpret_s16_p8(poly8x8_t a) {
9209  return vreinterpret_s16_p8(a);
9210}
9211
9212// CHECK-LABEL: test_vreinterpret_s16_p16:
9213// CHECK-NEXT: ret
9214int16x4_t test_vreinterpret_s16_p16(poly16x4_t a) {
9215  return vreinterpret_s16_p16(a);
9216}
9217
9218// CHECK-LABEL: test_vreinterpret_s16_p64:
9219// CHECK-NEXT: ret
9220int16x4_t test_vreinterpret_s16_p64(poly64x1_t a) {
9221  return vreinterpret_s16_p64(a);
9222}
9223
9224// CHECK-LABEL: test_vreinterpret_s32_s8:
9225// CHECK-NEXT: ret
9226int32x2_t test_vreinterpret_s32_s8(int8x8_t a) {
9227  return vreinterpret_s32_s8(a);
9228}
9229
9230// CHECK-LABEL: test_vreinterpret_s32_s16:
9231// CHECK-NEXT: ret
9232int32x2_t test_vreinterpret_s32_s16(int16x4_t a) {
9233  return vreinterpret_s32_s16(a);
9234}
9235
9236// CHECK-LABEL: test_vreinterpret_s32_s64:
9237// CHECK-NEXT: ret
9238int32x2_t test_vreinterpret_s32_s64(int64x1_t a) {
9239  return vreinterpret_s32_s64(a);
9240}
9241
9242// CHECK-LABEL: test_vreinterpret_s32_u8:
9243// CHECK-NEXT: ret
9244int32x2_t test_vreinterpret_s32_u8(uint8x8_t a) {
9245  return vreinterpret_s32_u8(a);
9246}
9247
9248// CHECK-LABEL: test_vreinterpret_s32_u16:
9249// CHECK-NEXT: ret
9250int32x2_t test_vreinterpret_s32_u16(uint16x4_t a) {
9251  return vreinterpret_s32_u16(a);
9252}
9253
9254// CHECK-LABEL: test_vreinterpret_s32_u32:
9255// CHECK-NEXT: ret
9256int32x2_t test_vreinterpret_s32_u32(uint32x2_t a) {
9257  return vreinterpret_s32_u32(a);
9258}
9259
9260// CHECK-LABEL: test_vreinterpret_s32_u64:
9261// CHECK-NEXT: ret
9262int32x2_t test_vreinterpret_s32_u64(uint64x1_t a) {
9263  return vreinterpret_s32_u64(a);
9264}
9265
9266// CHECK-LABEL: test_vreinterpret_s32_f16:
9267// CHECK-NEXT: ret
9268int32x2_t test_vreinterpret_s32_f16(float16x4_t a) {
9269  return vreinterpret_s32_f16(a);
9270}
9271
9272// CHECK-LABEL: test_vreinterpret_s32_f32:
9273// CHECK-NEXT: ret
9274int32x2_t test_vreinterpret_s32_f32(float32x2_t a) {
9275  return vreinterpret_s32_f32(a);
9276}
9277
9278// CHECK-LABEL: test_vreinterpret_s32_f64:
9279// CHECK-NEXT: ret
9280int32x2_t test_vreinterpret_s32_f64(float64x1_t a) {
9281  return vreinterpret_s32_f64(a);
9282}
9283
9284// CHECK-LABEL: test_vreinterpret_s32_p8:
9285// CHECK-NEXT: ret
9286int32x2_t test_vreinterpret_s32_p8(poly8x8_t a) {
9287  return vreinterpret_s32_p8(a);
9288}
9289
9290// CHECK-LABEL: test_vreinterpret_s32_p16:
9291// CHECK-NEXT: ret
9292int32x2_t test_vreinterpret_s32_p16(poly16x4_t a) {
9293  return vreinterpret_s32_p16(a);
9294}
9295
9296// CHECK-LABEL: test_vreinterpret_s32_p64:
9297// CHECK-NEXT: ret
9298int32x2_t test_vreinterpret_s32_p64(poly64x1_t a) {
9299  return vreinterpret_s32_p64(a);
9300}
9301
9302// CHECK-LABEL: test_vreinterpret_s64_s8:
9303// CHECK-NEXT: ret
9304int64x1_t test_vreinterpret_s64_s8(int8x8_t a) {
9305  return vreinterpret_s64_s8(a);
9306}
9307
9308// CHECK-LABEL: test_vreinterpret_s64_s16:
9309// CHECK-NEXT: ret
9310int64x1_t test_vreinterpret_s64_s16(int16x4_t a) {
9311  return vreinterpret_s64_s16(a);
9312}
9313
9314// CHECK-LABEL: test_vreinterpret_s64_s32:
9315// CHECK-NEXT: ret
9316int64x1_t test_vreinterpret_s64_s32(int32x2_t a) {
9317  return vreinterpret_s64_s32(a);
9318}
9319
9320// CHECK-LABEL: test_vreinterpret_s64_u8:
9321// CHECK-NEXT: ret
9322int64x1_t test_vreinterpret_s64_u8(uint8x8_t a) {
9323  return vreinterpret_s64_u8(a);
9324}
9325
9326// CHECK-LABEL: test_vreinterpret_s64_u16:
9327// CHECK-NEXT: ret
9328int64x1_t test_vreinterpret_s64_u16(uint16x4_t a) {
9329  return vreinterpret_s64_u16(a);
9330}
9331
9332// CHECK-LABEL: test_vreinterpret_s64_u32:
9333// CHECK-NEXT: ret
9334int64x1_t test_vreinterpret_s64_u32(uint32x2_t a) {
9335  return vreinterpret_s64_u32(a);
9336}
9337
9338// CHECK-LABEL: test_vreinterpret_s64_u64:
9339// CHECK-NEXT: ret
9340int64x1_t test_vreinterpret_s64_u64(uint64x1_t a) {
9341  return vreinterpret_s64_u64(a);
9342}
9343
9344// CHECK-LABEL: test_vreinterpret_s64_f16:
9345// CHECK-NEXT: ret
9346int64x1_t test_vreinterpret_s64_f16(float16x4_t a) {
9347  return vreinterpret_s64_f16(a);
9348}
9349
9350// CHECK-LABEL: test_vreinterpret_s64_f32:
9351// CHECK-NEXT: ret
9352int64x1_t test_vreinterpret_s64_f32(float32x2_t a) {
9353  return vreinterpret_s64_f32(a);
9354}
9355
9356// CHECK-LABEL: test_vreinterpret_s64_f64:
9357// CHECK-NEXT: ret
9358int64x1_t test_vreinterpret_s64_f64(float64x1_t a) {
9359  return vreinterpret_s64_f64(a);
9360}
9361
9362// CHECK-LABEL: test_vreinterpret_s64_p8:
9363// CHECK-NEXT: ret
9364int64x1_t test_vreinterpret_s64_p8(poly8x8_t a) {
9365  return vreinterpret_s64_p8(a);
9366}
9367
9368// CHECK-LABEL: test_vreinterpret_s64_p16:
9369// CHECK-NEXT: ret
9370int64x1_t test_vreinterpret_s64_p16(poly16x4_t a) {
9371  return vreinterpret_s64_p16(a);
9372}
9373
9374// CHECK-LABEL: test_vreinterpret_s64_p64:
9375// CHECK-NEXT: ret
9376int64x1_t test_vreinterpret_s64_p64(poly64x1_t a) {
9377  return vreinterpret_s64_p64(a);
9378}
9379
9380// CHECK-LABEL: test_vreinterpret_u8_s8:
9381// CHECK-NEXT: ret
9382uint8x8_t test_vreinterpret_u8_s8(int8x8_t a) {
9383  return vreinterpret_u8_s8(a);
9384}
9385
9386// CHECK-LABEL: test_vreinterpret_u8_s16:
9387// CHECK-NEXT: ret
9388uint8x8_t test_vreinterpret_u8_s16(int16x4_t a) {
9389  return vreinterpret_u8_s16(a);
9390}
9391
9392// CHECK-LABEL: test_vreinterpret_u8_s32:
9393// CHECK-NEXT: ret
9394uint8x8_t test_vreinterpret_u8_s32(int32x2_t a) {
9395  return vreinterpret_u8_s32(a);
9396}
9397
9398// CHECK-LABEL: test_vreinterpret_u8_s64:
9399// CHECK-NEXT: ret
9400uint8x8_t test_vreinterpret_u8_s64(int64x1_t a) {
9401  return vreinterpret_u8_s64(a);
9402}
9403
9404// CHECK-LABEL: test_vreinterpret_u8_u16:
9405// CHECK-NEXT: ret
9406uint8x8_t test_vreinterpret_u8_u16(uint16x4_t a) {
9407  return vreinterpret_u8_u16(a);
9408}
9409
9410// CHECK-LABEL: test_vreinterpret_u8_u32:
9411// CHECK-NEXT: ret
9412uint8x8_t test_vreinterpret_u8_u32(uint32x2_t a) {
9413  return vreinterpret_u8_u32(a);
9414}
9415
9416// CHECK-LABEL: test_vreinterpret_u8_u64:
9417// CHECK-NEXT: ret
9418uint8x8_t test_vreinterpret_u8_u64(uint64x1_t a) {
9419  return vreinterpret_u8_u64(a);
9420}
9421
9422// CHECK-LABEL: test_vreinterpret_u8_f16:
9423// CHECK-NEXT: ret
9424uint8x8_t test_vreinterpret_u8_f16(float16x4_t a) {
9425  return vreinterpret_u8_f16(a);
9426}
9427
9428// CHECK-LABEL: test_vreinterpret_u8_f32:
9429// CHECK-NEXT: ret
9430uint8x8_t test_vreinterpret_u8_f32(float32x2_t a) {
9431  return vreinterpret_u8_f32(a);
9432}
9433
9434// CHECK-LABEL: test_vreinterpret_u8_f64:
9435// CHECK-NEXT: ret
9436uint8x8_t test_vreinterpret_u8_f64(float64x1_t a) {
9437  return vreinterpret_u8_f64(a);
9438}
9439
9440// CHECK-LABEL: test_vreinterpret_u8_p8:
9441// CHECK-NEXT: ret
9442uint8x8_t test_vreinterpret_u8_p8(poly8x8_t a) {
9443  return vreinterpret_u8_p8(a);
9444}
9445
9446// CHECK-LABEL: test_vreinterpret_u8_p16:
9447// CHECK-NEXT: ret
9448uint8x8_t test_vreinterpret_u8_p16(poly16x4_t a) {
9449  return vreinterpret_u8_p16(a);
9450}
9451
9452// CHECK-LABEL: test_vreinterpret_u8_p64:
9453// CHECK-NEXT: ret
9454uint8x8_t test_vreinterpret_u8_p64(poly64x1_t a) {
9455  return vreinterpret_u8_p64(a);
9456}
9457
9458// CHECK-LABEL: test_vreinterpret_u16_s8:
9459// CHECK-NEXT: ret
9460uint16x4_t test_vreinterpret_u16_s8(int8x8_t a) {
9461  return vreinterpret_u16_s8(a);
9462}
9463
9464// CHECK-LABEL: test_vreinterpret_u16_s16:
9465// CHECK-NEXT: ret
9466uint16x4_t test_vreinterpret_u16_s16(int16x4_t a) {
9467  return vreinterpret_u16_s16(a);
9468}
9469
9470// CHECK-LABEL: test_vreinterpret_u16_s32:
9471// CHECK-NEXT: ret
9472uint16x4_t test_vreinterpret_u16_s32(int32x2_t a) {
9473  return vreinterpret_u16_s32(a);
9474}
9475
9476// CHECK-LABEL: test_vreinterpret_u16_s64:
9477// CHECK-NEXT: ret
9478uint16x4_t test_vreinterpret_u16_s64(int64x1_t a) {
9479  return vreinterpret_u16_s64(a);
9480}
9481
9482// CHECK-LABEL: test_vreinterpret_u16_u8:
9483// CHECK-NEXT: ret
9484uint16x4_t test_vreinterpret_u16_u8(uint8x8_t a) {
9485  return vreinterpret_u16_u8(a);
9486}
9487
9488// CHECK-LABEL: test_vreinterpret_u16_u32:
9489// CHECK-NEXT: ret
9490uint16x4_t test_vreinterpret_u16_u32(uint32x2_t a) {
9491  return vreinterpret_u16_u32(a);
9492}
9493
9494// CHECK-LABEL: test_vreinterpret_u16_u64:
9495// CHECK-NEXT: ret
9496uint16x4_t test_vreinterpret_u16_u64(uint64x1_t a) {
9497  return vreinterpret_u16_u64(a);
9498}
9499
9500// CHECK-LABEL: test_vreinterpret_u16_f16:
9501// CHECK-NEXT: ret
9502uint16x4_t test_vreinterpret_u16_f16(float16x4_t a) {
9503  return vreinterpret_u16_f16(a);
9504}
9505
9506// CHECK-LABEL: test_vreinterpret_u16_f32:
9507// CHECK-NEXT: ret
9508uint16x4_t test_vreinterpret_u16_f32(float32x2_t a) {
9509  return vreinterpret_u16_f32(a);
9510}
9511
9512// CHECK-LABEL: test_vreinterpret_u16_f64:
9513// CHECK-NEXT: ret
9514uint16x4_t test_vreinterpret_u16_f64(float64x1_t a) {
9515  return vreinterpret_u16_f64(a);
9516}
9517
9518// CHECK-LABEL: test_vreinterpret_u16_p8:
9519// CHECK-NEXT: ret
9520uint16x4_t test_vreinterpret_u16_p8(poly8x8_t a) {
9521  return vreinterpret_u16_p8(a);
9522}
9523
9524// CHECK-LABEL: test_vreinterpret_u16_p16:
9525// CHECK-NEXT: ret
9526uint16x4_t test_vreinterpret_u16_p16(poly16x4_t a) {
9527  return vreinterpret_u16_p16(a);
9528}
9529
9530// CHECK-LABEL: test_vreinterpret_u16_p64:
9531// CHECK-NEXT: ret
9532uint16x4_t test_vreinterpret_u16_p64(poly64x1_t a) {
9533  return vreinterpret_u16_p64(a);
9534}
9535
9536// CHECK-LABEL: test_vreinterpret_u32_s8:
9537// CHECK-NEXT: ret
9538uint32x2_t test_vreinterpret_u32_s8(int8x8_t a) {
9539  return vreinterpret_u32_s8(a);
9540}
9541
9542// CHECK-LABEL: test_vreinterpret_u32_s16:
9543// CHECK-NEXT: ret
9544uint32x2_t test_vreinterpret_u32_s16(int16x4_t a) {
9545  return vreinterpret_u32_s16(a);
9546}
9547
9548// CHECK-LABEL: test_vreinterpret_u32_s32:
9549// CHECK-NEXT: ret
9550uint32x2_t test_vreinterpret_u32_s32(int32x2_t a) {
9551  return vreinterpret_u32_s32(a);
9552}
9553
9554// CHECK-LABEL: test_vreinterpret_u32_s64:
9555// CHECK-NEXT: ret
9556uint32x2_t test_vreinterpret_u32_s64(int64x1_t a) {
9557  return vreinterpret_u32_s64(a);
9558}
9559
9560// CHECK-LABEL: test_vreinterpret_u32_u8:
9561// CHECK-NEXT: ret
9562uint32x2_t test_vreinterpret_u32_u8(uint8x8_t a) {
9563  return vreinterpret_u32_u8(a);
9564}
9565
9566// CHECK-LABEL: test_vreinterpret_u32_u16:
9567// CHECK-NEXT: ret
9568uint32x2_t test_vreinterpret_u32_u16(uint16x4_t a) {
9569  return vreinterpret_u32_u16(a);
9570}
9571
9572// CHECK-LABEL: test_vreinterpret_u32_u64:
9573// CHECK-NEXT: ret
9574uint32x2_t test_vreinterpret_u32_u64(uint64x1_t a) {
9575  return vreinterpret_u32_u64(a);
9576}
9577
9578// CHECK-LABEL: test_vreinterpret_u32_f16:
9579// CHECK-NEXT: ret
9580uint32x2_t test_vreinterpret_u32_f16(float16x4_t a) {
9581  return vreinterpret_u32_f16(a);
9582}
9583
9584// CHECK-LABEL: test_vreinterpret_u32_f32:
9585// CHECK-NEXT: ret
9586uint32x2_t test_vreinterpret_u32_f32(float32x2_t a) {
9587  return vreinterpret_u32_f32(a);
9588}
9589
9590// CHECK-LABEL: test_vreinterpret_u32_f64:
9591// CHECK-NEXT: ret
9592uint32x2_t test_vreinterpret_u32_f64(float64x1_t a) {
9593  return vreinterpret_u32_f64(a);
9594}
9595
9596// CHECK-LABEL: test_vreinterpret_u32_p8:
9597// CHECK-NEXT: ret
9598uint32x2_t test_vreinterpret_u32_p8(poly8x8_t a) {
9599  return vreinterpret_u32_p8(a);
9600}
9601
9602// CHECK-LABEL: test_vreinterpret_u32_p16:
9603// CHECK-NEXT: ret
9604uint32x2_t test_vreinterpret_u32_p16(poly16x4_t a) {
9605  return vreinterpret_u32_p16(a);
9606}
9607
9608// CHECK-LABEL: test_vreinterpret_u32_p64:
9609// CHECK-NEXT: ret
9610uint32x2_t test_vreinterpret_u32_p64(poly64x1_t a) {
9611  return vreinterpret_u32_p64(a);
9612}
9613
9614// CHECK-LABEL: test_vreinterpret_u64_s8:
9615// CHECK-NEXT: ret
9616uint64x1_t test_vreinterpret_u64_s8(int8x8_t a) {
9617  return vreinterpret_u64_s8(a);
9618}
9619
9620// CHECK-LABEL: test_vreinterpret_u64_s16:
9621// CHECK-NEXT: ret
9622uint64x1_t test_vreinterpret_u64_s16(int16x4_t a) {
9623  return vreinterpret_u64_s16(a);
9624}
9625
9626// CHECK-LABEL: test_vreinterpret_u64_s32:
9627// CHECK-NEXT: ret
9628uint64x1_t test_vreinterpret_u64_s32(int32x2_t a) {
9629  return vreinterpret_u64_s32(a);
9630}
9631
9632// CHECK-LABEL: test_vreinterpret_u64_s64:
9633// CHECK-NEXT: ret
9634uint64x1_t test_vreinterpret_u64_s64(int64x1_t a) {
9635  return vreinterpret_u64_s64(a);
9636}
9637
9638// CHECK-LABEL: test_vreinterpret_u64_u8:
9639// CHECK-NEXT: ret
9640uint64x1_t test_vreinterpret_u64_u8(uint8x8_t a) {
9641  return vreinterpret_u64_u8(a);
9642}
9643
9644// CHECK-LABEL: test_vreinterpret_u64_u16:
9645// CHECK-NEXT: ret
9646uint64x1_t test_vreinterpret_u64_u16(uint16x4_t a) {
9647  return vreinterpret_u64_u16(a);
9648}
9649
9650// CHECK-LABEL: test_vreinterpret_u64_u32:
9651// CHECK-NEXT: ret
9652uint64x1_t test_vreinterpret_u64_u32(uint32x2_t a) {
9653  return vreinterpret_u64_u32(a);
9654}
9655
9656// CHECK-LABEL: test_vreinterpret_u64_f16:
9657// CHECK-NEXT: ret
9658uint64x1_t test_vreinterpret_u64_f16(float16x4_t a) {
9659  return vreinterpret_u64_f16(a);
9660}
9661
9662// CHECK-LABEL: test_vreinterpret_u64_f32:
9663// CHECK-NEXT: ret
9664uint64x1_t test_vreinterpret_u64_f32(float32x2_t a) {
9665  return vreinterpret_u64_f32(a);
9666}
9667
9668// CHECK-LABEL: test_vreinterpret_u64_f64:
9669// CHECK-NEXT: ret
9670uint64x1_t test_vreinterpret_u64_f64(float64x1_t a) {
9671  return vreinterpret_u64_f64(a);
9672}
9673
9674// CHECK-LABEL: test_vreinterpret_u64_p8:
9675// CHECK-NEXT: ret
9676uint64x1_t test_vreinterpret_u64_p8(poly8x8_t a) {
9677  return vreinterpret_u64_p8(a);
9678}
9679
9680// CHECK-LABEL: test_vreinterpret_u64_p16:
9681// CHECK-NEXT: ret
9682uint64x1_t test_vreinterpret_u64_p16(poly16x4_t a) {
9683  return vreinterpret_u64_p16(a);
9684}
9685
9686// CHECK-LABEL: test_vreinterpret_u64_p64:
9687// CHECK-NEXT: ret
9688uint64x1_t test_vreinterpret_u64_p64(poly64x1_t a) {
9689  return vreinterpret_u64_p64(a);
9690}
9691
9692// CHECK-LABEL: test_vreinterpret_f16_s8:
9693// CHECK-NEXT: ret
9694float16x4_t test_vreinterpret_f16_s8(int8x8_t a) {
9695  return vreinterpret_f16_s8(a);
9696}
9697
9698// CHECK-LABEL: test_vreinterpret_f16_s16:
9699// CHECK-NEXT: ret
9700float16x4_t test_vreinterpret_f16_s16(int16x4_t a) {
9701  return vreinterpret_f16_s16(a);
9702}
9703
9704// CHECK-LABEL: test_vreinterpret_f16_s32:
9705// CHECK-NEXT: ret
9706float16x4_t test_vreinterpret_f16_s32(int32x2_t a) {
9707  return vreinterpret_f16_s32(a);
9708}
9709
9710// CHECK-LABEL: test_vreinterpret_f16_s64:
9711// CHECK-NEXT: ret
9712float16x4_t test_vreinterpret_f16_s64(int64x1_t a) {
9713  return vreinterpret_f16_s64(a);
9714}
9715
9716// CHECK-LABEL: test_vreinterpret_f16_u8:
9717// CHECK-NEXT: ret
9718float16x4_t test_vreinterpret_f16_u8(uint8x8_t a) {
9719  return vreinterpret_f16_u8(a);
9720}
9721
9722// CHECK-LABEL: test_vreinterpret_f16_u16:
9723// CHECK-NEXT: ret
9724float16x4_t test_vreinterpret_f16_u16(uint16x4_t a) {
9725  return vreinterpret_f16_u16(a);
9726}
9727
9728// CHECK-LABEL: test_vreinterpret_f16_u32:
9729// CHECK-NEXT: ret
9730float16x4_t test_vreinterpret_f16_u32(uint32x2_t a) {
9731  return vreinterpret_f16_u32(a);
9732}
9733
9734// CHECK-LABEL: test_vreinterpret_f16_u64:
9735// CHECK-NEXT: ret
9736float16x4_t test_vreinterpret_f16_u64(uint64x1_t a) {
9737  return vreinterpret_f16_u64(a);
9738}
9739
9740// CHECK-LABEL: test_vreinterpret_f16_f32:
9741// CHECK-NEXT: ret
9742float16x4_t test_vreinterpret_f16_f32(float32x2_t a) {
9743  return vreinterpret_f16_f32(a);
9744}
9745
9746// CHECK-LABEL: test_vreinterpret_f16_f64:
9747// CHECK-NEXT: ret
9748float16x4_t test_vreinterpret_f16_f64(float64x1_t a) {
9749  return vreinterpret_f16_f64(a);
9750}
9751
9752// CHECK-LABEL: test_vreinterpret_f16_p8:
9753// CHECK-NEXT: ret
9754float16x4_t test_vreinterpret_f16_p8(poly8x8_t a) {
9755  return vreinterpret_f16_p8(a);
9756}
9757
9758// CHECK-LABEL: test_vreinterpret_f16_p16:
9759// CHECK-NEXT: ret
9760float16x4_t test_vreinterpret_f16_p16(poly16x4_t a) {
9761  return vreinterpret_f16_p16(a);
9762}
9763
9764// CHECK-LABEL: test_vreinterpret_f16_p64:
9765// CHECK-NEXT: ret
9766float16x4_t test_vreinterpret_f16_p64(poly64x1_t a) {
9767  return vreinterpret_f16_p64(a);
9768}
9769
9770// CHECK-LABEL: test_vreinterpret_f32_s8:
9771// CHECK-NEXT: ret
9772float32x2_t test_vreinterpret_f32_s8(int8x8_t a) {
9773  return vreinterpret_f32_s8(a);
9774}
9775
9776// CHECK-LABEL: test_vreinterpret_f32_s16:
9777// CHECK-NEXT: ret
9778float32x2_t test_vreinterpret_f32_s16(int16x4_t a) {
9779  return vreinterpret_f32_s16(a);
9780}
9781
9782// CHECK-LABEL: test_vreinterpret_f32_s32:
9783// CHECK-NEXT: ret
9784float32x2_t test_vreinterpret_f32_s32(int32x2_t a) {
9785  return vreinterpret_f32_s32(a);
9786}
9787
9788// CHECK-LABEL: test_vreinterpret_f32_s64:
9789// CHECK-NEXT: ret
9790float32x2_t test_vreinterpret_f32_s64(int64x1_t a) {
9791  return vreinterpret_f32_s64(a);
9792}
9793
9794// CHECK-LABEL: test_vreinterpret_f32_u8:
9795// CHECK-NEXT: ret
9796float32x2_t test_vreinterpret_f32_u8(uint8x8_t a) {
9797  return vreinterpret_f32_u8(a);
9798}
9799
9800// CHECK-LABEL: test_vreinterpret_f32_u16:
9801// CHECK-NEXT: ret
9802float32x2_t test_vreinterpret_f32_u16(uint16x4_t a) {
9803  return vreinterpret_f32_u16(a);
9804}
9805
9806// CHECK-LABEL: test_vreinterpret_f32_u32:
9807// CHECK-NEXT: ret
9808float32x2_t test_vreinterpret_f32_u32(uint32x2_t a) {
9809  return vreinterpret_f32_u32(a);
9810}
9811
9812// CHECK-LABEL: test_vreinterpret_f32_u64:
9813// CHECK-NEXT: ret
9814float32x2_t test_vreinterpret_f32_u64(uint64x1_t a) {
9815  return vreinterpret_f32_u64(a);
9816}
9817
9818// CHECK-LABEL: test_vreinterpret_f32_f16:
9819// CHECK-NEXT: ret
9820float32x2_t test_vreinterpret_f32_f16(float16x4_t a) {
9821  return vreinterpret_f32_f16(a);
9822}
9823
9824// CHECK-LABEL: test_vreinterpret_f32_f64:
9825// CHECK-NEXT: ret
9826float32x2_t test_vreinterpret_f32_f64(float64x1_t a) {
9827  return vreinterpret_f32_f64(a);
9828}
9829
9830// CHECK-LABEL: test_vreinterpret_f32_p8:
9831// CHECK-NEXT: ret
9832float32x2_t test_vreinterpret_f32_p8(poly8x8_t a) {
9833  return vreinterpret_f32_p8(a);
9834}
9835
9836// CHECK-LABEL: test_vreinterpret_f32_p16:
9837// CHECK-NEXT: ret
9838float32x2_t test_vreinterpret_f32_p16(poly16x4_t a) {
9839  return vreinterpret_f32_p16(a);
9840}
9841
9842// CHECK-LABEL: test_vreinterpret_f32_p64:
9843// CHECK-NEXT: ret
9844float32x2_t test_vreinterpret_f32_p64(poly64x1_t a) {
9845  return vreinterpret_f32_p64(a);
9846}
9847
9848// CHECK-LABEL: test_vreinterpret_f64_s8:
9849// CHECK-NEXT: ret
9850float64x1_t test_vreinterpret_f64_s8(int8x8_t a) {
9851  return vreinterpret_f64_s8(a);
9852}
9853
9854// CHECK-LABEL: test_vreinterpret_f64_s16:
9855// CHECK-NEXT: ret
9856float64x1_t test_vreinterpret_f64_s16(int16x4_t a) {
9857  return vreinterpret_f64_s16(a);
9858}
9859
9860// CHECK-LABEL: test_vreinterpret_f64_s32:
9861// CHECK-NEXT: ret
9862float64x1_t test_vreinterpret_f64_s32(int32x2_t a) {
9863  return vreinterpret_f64_s32(a);
9864}
9865
9866// CHECK-LABEL: test_vreinterpret_f64_s64:
9867// CHECK-NEXT: ret
9868float64x1_t test_vreinterpret_f64_s64(int64x1_t a) {
9869  return vreinterpret_f64_s64(a);
9870}
9871
9872// CHECK-LABEL: test_vreinterpret_f64_u8:
9873// CHECK-NEXT: ret
9874float64x1_t test_vreinterpret_f64_u8(uint8x8_t a) {
9875  return vreinterpret_f64_u8(a);
9876}
9877
9878// CHECK-LABEL: test_vreinterpret_f64_u16:
9879// CHECK-NEXT: ret
9880float64x1_t test_vreinterpret_f64_u16(uint16x4_t a) {
9881  return vreinterpret_f64_u16(a);
9882}
9883
9884// CHECK-LABEL: test_vreinterpret_f64_u32:
9885// CHECK-NEXT: ret
9886float64x1_t test_vreinterpret_f64_u32(uint32x2_t a) {
9887  return vreinterpret_f64_u32(a);
9888}
9889
9890// CHECK-LABEL: test_vreinterpret_f64_u64:
9891// CHECK-NEXT: ret
9892float64x1_t test_vreinterpret_f64_u64(uint64x1_t a) {
9893  return vreinterpret_f64_u64(a);
9894}
9895
9896// CHECK-LABEL: test_vreinterpret_f64_f16:
9897// CHECK-NEXT: ret
9898float64x1_t test_vreinterpret_f64_f16(float16x4_t a) {
9899  return vreinterpret_f64_f16(a);
9900}
9901
9902// CHECK-LABEL: test_vreinterpret_f64_f32:
9903// CHECK-NEXT: ret
9904float64x1_t test_vreinterpret_f64_f32(float32x2_t a) {
9905  return vreinterpret_f64_f32(a);
9906}
9907
9908// CHECK-LABEL: test_vreinterpret_f64_p8:
9909// CHECK-NEXT: ret
9910float64x1_t test_vreinterpret_f64_p8(poly8x8_t a) {
9911  return vreinterpret_f64_p8(a);
9912}
9913
9914// CHECK-LABEL: test_vreinterpret_f64_p16:
9915// CHECK-NEXT: ret
9916float64x1_t test_vreinterpret_f64_p16(poly16x4_t a) {
9917  return vreinterpret_f64_p16(a);
9918}
9919
9920// CHECK-LABEL: test_vreinterpret_f64_p64:
9921// CHECK-NEXT: ret
9922float64x1_t test_vreinterpret_f64_p64(poly64x1_t a) {
9923  return vreinterpret_f64_p64(a);
9924}
9925
9926// CHECK-LABEL: test_vreinterpret_p8_s8:
9927// CHECK-NEXT: ret
9928poly8x8_t test_vreinterpret_p8_s8(int8x8_t a) {
9929  return vreinterpret_p8_s8(a);
9930}
9931
9932// CHECK-LABEL: test_vreinterpret_p8_s16:
9933// CHECK-NEXT: ret
9934poly8x8_t test_vreinterpret_p8_s16(int16x4_t a) {
9935  return vreinterpret_p8_s16(a);
9936}
9937
9938// CHECK-LABEL: test_vreinterpret_p8_s32:
9939// CHECK-NEXT: ret
9940poly8x8_t test_vreinterpret_p8_s32(int32x2_t a) {
9941  return vreinterpret_p8_s32(a);
9942}
9943
9944// CHECK-LABEL: test_vreinterpret_p8_s64:
9945// CHECK-NEXT: ret
9946poly8x8_t test_vreinterpret_p8_s64(int64x1_t a) {
9947  return vreinterpret_p8_s64(a);
9948}
9949
9950// CHECK-LABEL: test_vreinterpret_p8_u8:
9951// CHECK-NEXT: ret
9952poly8x8_t test_vreinterpret_p8_u8(uint8x8_t a) {
9953  return vreinterpret_p8_u8(a);
9954}
9955
9956// CHECK-LABEL: test_vreinterpret_p8_u16:
9957// CHECK-NEXT: ret
9958poly8x8_t test_vreinterpret_p8_u16(uint16x4_t a) {
9959  return vreinterpret_p8_u16(a);
9960}
9961
9962// CHECK-LABEL: test_vreinterpret_p8_u32:
9963// CHECK-NEXT: ret
9964poly8x8_t test_vreinterpret_p8_u32(uint32x2_t a) {
9965  return vreinterpret_p8_u32(a);
9966}
9967
9968// CHECK-LABEL: test_vreinterpret_p8_u64:
9969// CHECK-NEXT: ret
9970poly8x8_t test_vreinterpret_p8_u64(uint64x1_t a) {
9971  return vreinterpret_p8_u64(a);
9972}
9973
9974// CHECK-LABEL: test_vreinterpret_p8_f16:
9975// CHECK-NEXT: ret
9976poly8x8_t test_vreinterpret_p8_f16(float16x4_t a) {
9977  return vreinterpret_p8_f16(a);
9978}
9979
9980// CHECK-LABEL: test_vreinterpret_p8_f32:
9981// CHECK-NEXT: ret
9982poly8x8_t test_vreinterpret_p8_f32(float32x2_t a) {
9983  return vreinterpret_p8_f32(a);
9984}
9985
9986// CHECK-LABEL: test_vreinterpret_p8_f64:
9987// CHECK-NEXT: ret
9988poly8x8_t test_vreinterpret_p8_f64(float64x1_t a) {
9989  return vreinterpret_p8_f64(a);
9990}
9991
9992// CHECK-LABEL: test_vreinterpret_p8_p16:
9993// CHECK-NEXT: ret
9994poly8x8_t test_vreinterpret_p8_p16(poly16x4_t a) {
9995  return vreinterpret_p8_p16(a);
9996}
9997
9998// CHECK-LABEL: test_vreinterpret_p8_p64:
9999// CHECK-NEXT: ret
10000poly8x8_t test_vreinterpret_p8_p64(poly64x1_t a) {
10001  return vreinterpret_p8_p64(a);
10002}
10003
10004// CHECK-LABEL: test_vreinterpret_p16_s8:
10005// CHECK-NEXT: ret
10006poly16x4_t test_vreinterpret_p16_s8(int8x8_t a) {
10007  return vreinterpret_p16_s8(a);
10008}
10009
10010// CHECK-LABEL: test_vreinterpret_p16_s16:
10011// CHECK-NEXT: ret
10012poly16x4_t test_vreinterpret_p16_s16(int16x4_t a) {
10013  return vreinterpret_p16_s16(a);
10014}
10015
10016// CHECK-LABEL: test_vreinterpret_p16_s32:
10017// CHECK-NEXT: ret
10018poly16x4_t test_vreinterpret_p16_s32(int32x2_t a) {
10019  return vreinterpret_p16_s32(a);
10020}
10021
10022// CHECK-LABEL: test_vreinterpret_p16_s64:
10023// CHECK-NEXT: ret
10024poly16x4_t test_vreinterpret_p16_s64(int64x1_t a) {
10025  return vreinterpret_p16_s64(a);
10026}
10027
10028// CHECK-LABEL: test_vreinterpret_p16_u8:
10029// CHECK-NEXT: ret
10030poly16x4_t test_vreinterpret_p16_u8(uint8x8_t a) {
10031  return vreinterpret_p16_u8(a);
10032}
10033
10034// CHECK-LABEL: test_vreinterpret_p16_u16:
10035// CHECK-NEXT: ret
10036poly16x4_t test_vreinterpret_p16_u16(uint16x4_t a) {
10037  return vreinterpret_p16_u16(a);
10038}
10039
10040// CHECK-LABEL: test_vreinterpret_p16_u32:
10041// CHECK-NEXT: ret
10042poly16x4_t test_vreinterpret_p16_u32(uint32x2_t a) {
10043  return vreinterpret_p16_u32(a);
10044}
10045
10046// CHECK-LABEL: test_vreinterpret_p16_u64:
10047// CHECK-NEXT: ret
10048poly16x4_t test_vreinterpret_p16_u64(uint64x1_t a) {
10049  return vreinterpret_p16_u64(a);
10050}
10051
10052// CHECK-LABEL: test_vreinterpret_p16_f16:
10053// CHECK-NEXT: ret
10054poly16x4_t test_vreinterpret_p16_f16(float16x4_t a) {
10055  return vreinterpret_p16_f16(a);
10056}
10057
10058// CHECK-LABEL: test_vreinterpret_p16_f32:
10059// CHECK-NEXT: ret
10060poly16x4_t test_vreinterpret_p16_f32(float32x2_t a) {
10061  return vreinterpret_p16_f32(a);
10062}
10063
10064// CHECK-LABEL: test_vreinterpret_p16_f64:
10065// CHECK-NEXT: ret
10066poly16x4_t test_vreinterpret_p16_f64(float64x1_t a) {
10067  return vreinterpret_p16_f64(a);
10068}
10069
10070// CHECK-LABEL: test_vreinterpret_p16_p8:
10071// CHECK-NEXT: ret
10072poly16x4_t test_vreinterpret_p16_p8(poly8x8_t a) {
10073  return vreinterpret_p16_p8(a);
10074}
10075
10076// CHECK-LABEL: test_vreinterpret_p16_p64:
10077// CHECK-NEXT: ret
10078poly16x4_t test_vreinterpret_p16_p64(poly64x1_t a) {
10079  return vreinterpret_p16_p64(a);
10080}
10081
10082// CHECK-LABEL: test_vreinterpret_p64_s8:
10083// CHECK-NEXT: ret
10084poly64x1_t test_vreinterpret_p64_s8(int8x8_t a) {
10085  return vreinterpret_p64_s8(a);
10086}
10087
10088// CHECK-LABEL: test_vreinterpret_p64_s16:
10089// CHECK-NEXT: ret
10090poly64x1_t test_vreinterpret_p64_s16(int16x4_t a) {
10091  return vreinterpret_p64_s16(a);
10092}
10093
10094// CHECK-LABEL: test_vreinterpret_p64_s32:
10095// CHECK-NEXT: ret
10096poly64x1_t test_vreinterpret_p64_s32(int32x2_t a) {
10097  return vreinterpret_p64_s32(a);
10098}
10099
10100// CHECK-LABEL: test_vreinterpret_p64_s64:
10101// CHECK-NEXT: ret
10102poly64x1_t test_vreinterpret_p64_s64(int64x1_t a) {
10103  return vreinterpret_p64_s64(a);
10104}
10105
10106// CHECK-LABEL: test_vreinterpret_p64_u8:
10107// CHECK-NEXT: ret
10108poly64x1_t test_vreinterpret_p64_u8(uint8x8_t a) {
10109  return vreinterpret_p64_u8(a);
10110}
10111
10112// CHECK-LABEL: test_vreinterpret_p64_u16:
10113// CHECK-NEXT: ret
10114poly64x1_t test_vreinterpret_p64_u16(uint16x4_t a) {
10115  return vreinterpret_p64_u16(a);
10116}
10117
10118// CHECK-LABEL: test_vreinterpret_p64_u32:
10119// CHECK-NEXT: ret
10120poly64x1_t test_vreinterpret_p64_u32(uint32x2_t a) {
10121  return vreinterpret_p64_u32(a);
10122}
10123
10124// CHECK-LABEL: test_vreinterpret_p64_u64:
10125// CHECK-NEXT: ret
10126poly64x1_t test_vreinterpret_p64_u64(uint64x1_t a) {
10127  return vreinterpret_p64_u64(a);
10128}
10129
10130// CHECK-LABEL: test_vreinterpret_p64_f16:
10131// CHECK-NEXT: ret
10132poly64x1_t test_vreinterpret_p64_f16(float16x4_t a) {
10133  return vreinterpret_p64_f16(a);
10134}
10135
10136// CHECK-LABEL: test_vreinterpret_p64_f32:
10137// CHECK-NEXT: ret
10138poly64x1_t test_vreinterpret_p64_f32(float32x2_t a) {
10139  return vreinterpret_p64_f32(a);
10140}
10141
10142// CHECK-LABEL: test_vreinterpret_p64_f64:
10143// CHECK-NEXT: ret
10144poly64x1_t test_vreinterpret_p64_f64(float64x1_t a) {
10145  return vreinterpret_p64_f64(a);
10146}
10147
10148// CHECK-LABEL: test_vreinterpret_p64_p8:
10149// CHECK-NEXT: ret
10150poly64x1_t test_vreinterpret_p64_p8(poly8x8_t a) {
10151  return vreinterpret_p64_p8(a);
10152}
10153
10154// CHECK-LABEL: test_vreinterpret_p64_p16:
10155// CHECK-NEXT: ret
10156poly64x1_t test_vreinterpret_p64_p16(poly16x4_t a) {
10157  return vreinterpret_p64_p16(a);
10158}
10159
10160// CHECK-LABEL: test_vreinterpretq_s8_s16:
10161// CHECK-NEXT: ret
10162int8x16_t test_vreinterpretq_s8_s16(int16x8_t a) {
10163  return vreinterpretq_s8_s16(a);
10164}
10165
10166// CHECK-LABEL: test_vreinterpretq_s8_s32:
10167// CHECK-NEXT: ret
10168int8x16_t test_vreinterpretq_s8_s32(int32x4_t a) {
10169  return vreinterpretq_s8_s32(a);
10170}
10171
10172// CHECK-LABEL: test_vreinterpretq_s8_s64:
10173// CHECK-NEXT: ret
10174int8x16_t test_vreinterpretq_s8_s64(int64x2_t a) {
10175  return vreinterpretq_s8_s64(a);
10176}
10177
10178// CHECK-LABEL: test_vreinterpretq_s8_u8:
10179// CHECK-NEXT: ret
10180int8x16_t test_vreinterpretq_s8_u8(uint8x16_t a) {
10181  return vreinterpretq_s8_u8(a);
10182}
10183
10184// CHECK-LABEL: test_vreinterpretq_s8_u16:
10185// CHECK-NEXT: ret
10186int8x16_t test_vreinterpretq_s8_u16(uint16x8_t a) {
10187  return vreinterpretq_s8_u16(a);
10188}
10189
10190// CHECK-LABEL: test_vreinterpretq_s8_u32:
10191// CHECK-NEXT: ret
10192int8x16_t test_vreinterpretq_s8_u32(uint32x4_t a) {
10193  return vreinterpretq_s8_u32(a);
10194}
10195
10196// CHECK-LABEL: test_vreinterpretq_s8_u64:
10197// CHECK-NEXT: ret
10198int8x16_t test_vreinterpretq_s8_u64(uint64x2_t a) {
10199  return vreinterpretq_s8_u64(a);
10200}
10201
10202// CHECK-LABEL: test_vreinterpretq_s8_f16:
10203// CHECK-NEXT: ret
10204int8x16_t test_vreinterpretq_s8_f16(float16x8_t a) {
10205  return vreinterpretq_s8_f16(a);
10206}
10207
10208// CHECK-LABEL: test_vreinterpretq_s8_f32:
10209// CHECK-NEXT: ret
10210int8x16_t test_vreinterpretq_s8_f32(float32x4_t a) {
10211  return vreinterpretq_s8_f32(a);
10212}
10213
10214// CHECK-LABEL: test_vreinterpretq_s8_f64:
10215// CHECK-NEXT: ret
10216int8x16_t test_vreinterpretq_s8_f64(float64x2_t a) {
10217  return vreinterpretq_s8_f64(a);
10218}
10219
10220// CHECK-LABEL: test_vreinterpretq_s8_p8:
10221// CHECK-NEXT: ret
10222int8x16_t test_vreinterpretq_s8_p8(poly8x16_t a) {
10223  return vreinterpretq_s8_p8(a);
10224}
10225
10226// CHECK-LABEL: test_vreinterpretq_s8_p16:
10227// CHECK-NEXT: ret
10228int8x16_t test_vreinterpretq_s8_p16(poly16x8_t a) {
10229  return vreinterpretq_s8_p16(a);
10230}
10231
10232// CHECK-LABEL: test_vreinterpretq_s8_p64:
10233// CHECK-NEXT: ret
10234int8x16_t test_vreinterpretq_s8_p64(poly64x2_t a) {
10235  return vreinterpretq_s8_p64(a);
10236}
10237
10238// CHECK-LABEL: test_vreinterpretq_s16_s8:
10239// CHECK-NEXT: ret
10240int16x8_t test_vreinterpretq_s16_s8(int8x16_t a) {
10241  return vreinterpretq_s16_s8(a);
10242}
10243
10244// CHECK-LABEL: test_vreinterpretq_s16_s32:
10245// CHECK-NEXT: ret
10246int16x8_t test_vreinterpretq_s16_s32(int32x4_t a) {
10247  return vreinterpretq_s16_s32(a);
10248}
10249
10250// CHECK-LABEL: test_vreinterpretq_s16_s64:
10251// CHECK-NEXT: ret
10252int16x8_t test_vreinterpretq_s16_s64(int64x2_t a) {
10253  return vreinterpretq_s16_s64(a);
10254}
10255
10256// CHECK-LABEL: test_vreinterpretq_s16_u8:
10257// CHECK-NEXT: ret
10258int16x8_t test_vreinterpretq_s16_u8(uint8x16_t a) {
10259  return vreinterpretq_s16_u8(a);
10260}
10261
10262// CHECK-LABEL: test_vreinterpretq_s16_u16:
10263// CHECK-NEXT: ret
10264int16x8_t test_vreinterpretq_s16_u16(uint16x8_t a) {
10265  return vreinterpretq_s16_u16(a);
10266}
10267
10268// CHECK-LABEL: test_vreinterpretq_s16_u32:
10269// CHECK-NEXT: ret
10270int16x8_t test_vreinterpretq_s16_u32(uint32x4_t a) {
10271  return vreinterpretq_s16_u32(a);
10272}
10273
10274// CHECK-LABEL: test_vreinterpretq_s16_u64:
10275// CHECK-NEXT: ret
10276int16x8_t test_vreinterpretq_s16_u64(uint64x2_t a) {
10277  return vreinterpretq_s16_u64(a);
10278}
10279
10280// CHECK-LABEL: test_vreinterpretq_s16_f16:
10281// CHECK-NEXT: ret
10282int16x8_t test_vreinterpretq_s16_f16(float16x8_t a) {
10283  return vreinterpretq_s16_f16(a);
10284}
10285
10286// CHECK-LABEL: test_vreinterpretq_s16_f32:
10287// CHECK-NEXT: ret
10288int16x8_t test_vreinterpretq_s16_f32(float32x4_t a) {
10289  return vreinterpretq_s16_f32(a);
10290}
10291
10292// CHECK-LABEL: test_vreinterpretq_s16_f64:
10293// CHECK-NEXT: ret
10294int16x8_t test_vreinterpretq_s16_f64(float64x2_t a) {
10295  return vreinterpretq_s16_f64(a);
10296}
10297
10298// CHECK-LABEL: test_vreinterpretq_s16_p8:
10299// CHECK-NEXT: ret
10300int16x8_t test_vreinterpretq_s16_p8(poly8x16_t a) {
10301  return vreinterpretq_s16_p8(a);
10302}
10303
10304// CHECK-LABEL: test_vreinterpretq_s16_p16:
10305// CHECK-NEXT: ret
10306int16x8_t test_vreinterpretq_s16_p16(poly16x8_t a) {
10307  return vreinterpretq_s16_p16(a);
10308}
10309
10310// CHECK-LABEL: test_vreinterpretq_s16_p64:
10311// CHECK-NEXT: ret
10312int16x8_t test_vreinterpretq_s16_p64(poly64x2_t a) {
10313  return vreinterpretq_s16_p64(a);
10314}
10315
10316// CHECK-LABEL: test_vreinterpretq_s32_s8:
10317// CHECK-NEXT: ret
10318int32x4_t test_vreinterpretq_s32_s8(int8x16_t a) {
10319  return vreinterpretq_s32_s8(a);
10320}
10321
10322// CHECK-LABEL: test_vreinterpretq_s32_s16:
10323// CHECK-NEXT: ret
10324int32x4_t test_vreinterpretq_s32_s16(int16x8_t a) {
10325  return vreinterpretq_s32_s16(a);
10326}
10327
10328// CHECK-LABEL: test_vreinterpretq_s32_s64:
10329// CHECK-NEXT: ret
10330int32x4_t test_vreinterpretq_s32_s64(int64x2_t a) {
10331  return vreinterpretq_s32_s64(a);
10332}
10333
10334// CHECK-LABEL: test_vreinterpretq_s32_u8:
10335// CHECK-NEXT: ret
10336int32x4_t test_vreinterpretq_s32_u8(uint8x16_t a) {
10337  return vreinterpretq_s32_u8(a);
10338}
10339
10340// CHECK-LABEL: test_vreinterpretq_s32_u16:
10341// CHECK-NEXT: ret
10342int32x4_t test_vreinterpretq_s32_u16(uint16x8_t a) {
10343  return vreinterpretq_s32_u16(a);
10344}
10345
10346// CHECK-LABEL: test_vreinterpretq_s32_u32:
10347// CHECK-NEXT: ret
10348int32x4_t test_vreinterpretq_s32_u32(uint32x4_t a) {
10349  return vreinterpretq_s32_u32(a);
10350}
10351
10352// CHECK-LABEL: test_vreinterpretq_s32_u64:
10353// CHECK-NEXT: ret
10354int32x4_t test_vreinterpretq_s32_u64(uint64x2_t a) {
10355  return vreinterpretq_s32_u64(a);
10356}
10357
10358// CHECK-LABEL: test_vreinterpretq_s32_f16:
10359// CHECK-NEXT: ret
10360int32x4_t test_vreinterpretq_s32_f16(float16x8_t a) {
10361  return vreinterpretq_s32_f16(a);
10362}
10363
10364// CHECK-LABEL: test_vreinterpretq_s32_f32:
10365// CHECK-NEXT: ret
10366int32x4_t test_vreinterpretq_s32_f32(float32x4_t a) {
10367  return vreinterpretq_s32_f32(a);
10368}
10369
10370// CHECK-LABEL: test_vreinterpretq_s32_f64:
10371// CHECK-NEXT: ret
10372int32x4_t test_vreinterpretq_s32_f64(float64x2_t a) {
10373  return vreinterpretq_s32_f64(a);
10374}
10375
10376// CHECK-LABEL: test_vreinterpretq_s32_p8:
10377// CHECK-NEXT: ret
10378int32x4_t test_vreinterpretq_s32_p8(poly8x16_t a) {
10379  return vreinterpretq_s32_p8(a);
10380}
10381
10382// CHECK-LABEL: test_vreinterpretq_s32_p16:
10383// CHECK-NEXT: ret
10384int32x4_t test_vreinterpretq_s32_p16(poly16x8_t a) {
10385  return vreinterpretq_s32_p16(a);
10386}
10387
10388// CHECK-LABEL: test_vreinterpretq_s32_p64:
10389// CHECK-NEXT: ret
10390int32x4_t test_vreinterpretq_s32_p64(poly64x2_t a) {
10391  return vreinterpretq_s32_p64(a);
10392}
10393
10394// CHECK-LABEL: test_vreinterpretq_s64_s8:
10395// CHECK-NEXT: ret
10396int64x2_t test_vreinterpretq_s64_s8(int8x16_t a) {
10397  return vreinterpretq_s64_s8(a);
10398}
10399
10400// CHECK-LABEL: test_vreinterpretq_s64_s16:
10401// CHECK-NEXT: ret
10402int64x2_t test_vreinterpretq_s64_s16(int16x8_t a) {
10403  return vreinterpretq_s64_s16(a);
10404}
10405
10406// CHECK-LABEL: test_vreinterpretq_s64_s32:
10407// CHECK-NEXT: ret
10408int64x2_t test_vreinterpretq_s64_s32(int32x4_t a) {
10409  return vreinterpretq_s64_s32(a);
10410}
10411
10412// CHECK-LABEL: test_vreinterpretq_s64_u8:
10413// CHECK-NEXT: ret
10414int64x2_t test_vreinterpretq_s64_u8(uint8x16_t a) {
10415  return vreinterpretq_s64_u8(a);
10416}
10417
10418// CHECK-LABEL: test_vreinterpretq_s64_u16:
10419// CHECK-NEXT: ret
10420int64x2_t test_vreinterpretq_s64_u16(uint16x8_t a) {
10421  return vreinterpretq_s64_u16(a);
10422}
10423
10424// CHECK-LABEL: test_vreinterpretq_s64_u32:
10425// CHECK-NEXT: ret
10426int64x2_t test_vreinterpretq_s64_u32(uint32x4_t a) {
10427  return vreinterpretq_s64_u32(a);
10428}
10429
10430// CHECK-LABEL: test_vreinterpretq_s64_u64:
10431// CHECK-NEXT: ret
10432int64x2_t test_vreinterpretq_s64_u64(uint64x2_t a) {
10433  return vreinterpretq_s64_u64(a);
10434}
10435
10436// CHECK-LABEL: test_vreinterpretq_s64_f16:
10437// CHECK-NEXT: ret
10438int64x2_t test_vreinterpretq_s64_f16(float16x8_t a) {
10439  return vreinterpretq_s64_f16(a);
10440}
10441
10442// CHECK-LABEL: test_vreinterpretq_s64_f32:
10443// CHECK-NEXT: ret
10444int64x2_t test_vreinterpretq_s64_f32(float32x4_t a) {
10445  return vreinterpretq_s64_f32(a);
10446}
10447
10448// CHECK-LABEL: test_vreinterpretq_s64_f64:
10449// CHECK-NEXT: ret
10450int64x2_t test_vreinterpretq_s64_f64(float64x2_t a) {
10451  return vreinterpretq_s64_f64(a);
10452}
10453
10454// CHECK-LABEL: test_vreinterpretq_s64_p8:
10455// CHECK-NEXT: ret
10456int64x2_t test_vreinterpretq_s64_p8(poly8x16_t a) {
10457  return vreinterpretq_s64_p8(a);
10458}
10459
10460// CHECK-LABEL: test_vreinterpretq_s64_p16:
10461// CHECK-NEXT: ret
10462int64x2_t test_vreinterpretq_s64_p16(poly16x8_t a) {
10463  return vreinterpretq_s64_p16(a);
10464}
10465
10466// CHECK-LABEL: test_vreinterpretq_s64_p64:
10467// CHECK-NEXT: ret
10468int64x2_t test_vreinterpretq_s64_p64(poly64x2_t a) {
10469  return vreinterpretq_s64_p64(a);
10470}
10471
10472// CHECK-LABEL: test_vreinterpretq_u8_s8:
10473// CHECK-NEXT: ret
10474uint8x16_t test_vreinterpretq_u8_s8(int8x16_t a) {
10475  return vreinterpretq_u8_s8(a);
10476}
10477
10478// CHECK-LABEL: test_vreinterpretq_u8_s16:
10479// CHECK-NEXT: ret
10480uint8x16_t test_vreinterpretq_u8_s16(int16x8_t a) {
10481  return vreinterpretq_u8_s16(a);
10482}
10483
10484// CHECK-LABEL: test_vreinterpretq_u8_s32:
10485// CHECK-NEXT: ret
10486uint8x16_t test_vreinterpretq_u8_s32(int32x4_t a) {
10487  return vreinterpretq_u8_s32(a);
10488}
10489
10490// CHECK-LABEL: test_vreinterpretq_u8_s64:
10491// CHECK-NEXT: ret
10492uint8x16_t test_vreinterpretq_u8_s64(int64x2_t a) {
10493  return vreinterpretq_u8_s64(a);
10494}
10495
10496// CHECK-LABEL: test_vreinterpretq_u8_u16:
10497// CHECK-NEXT: ret
10498uint8x16_t test_vreinterpretq_u8_u16(uint16x8_t a) {
10499  return vreinterpretq_u8_u16(a);
10500}
10501
10502// CHECK-LABEL: test_vreinterpretq_u8_u32:
10503// CHECK-NEXT: ret
10504uint8x16_t test_vreinterpretq_u8_u32(uint32x4_t a) {
10505  return vreinterpretq_u8_u32(a);
10506}
10507
10508// CHECK-LABEL: test_vreinterpretq_u8_u64:
10509// CHECK-NEXT: ret
10510uint8x16_t test_vreinterpretq_u8_u64(uint64x2_t a) {
10511  return vreinterpretq_u8_u64(a);
10512}
10513
10514// CHECK-LABEL: test_vreinterpretq_u8_f16:
10515// CHECK-NEXT: ret
10516uint8x16_t test_vreinterpretq_u8_f16(float16x8_t a) {
10517  return vreinterpretq_u8_f16(a);
10518}
10519
10520// CHECK-LABEL: test_vreinterpretq_u8_f32:
10521// CHECK-NEXT: ret
10522uint8x16_t test_vreinterpretq_u8_f32(float32x4_t a) {
10523  return vreinterpretq_u8_f32(a);
10524}
10525
10526// CHECK-LABEL: test_vreinterpretq_u8_f64:
10527// CHECK-NEXT: ret
10528uint8x16_t test_vreinterpretq_u8_f64(float64x2_t a) {
10529  return vreinterpretq_u8_f64(a);
10530}
10531
10532// CHECK-LABEL: test_vreinterpretq_u8_p8:
10533// CHECK-NEXT: ret
10534uint8x16_t test_vreinterpretq_u8_p8(poly8x16_t a) {
10535  return vreinterpretq_u8_p8(a);
10536}
10537
10538// CHECK-LABEL: test_vreinterpretq_u8_p16:
10539// CHECK-NEXT: ret
10540uint8x16_t test_vreinterpretq_u8_p16(poly16x8_t a) {
10541  return vreinterpretq_u8_p16(a);
10542}
10543
10544// CHECK-LABEL: test_vreinterpretq_u8_p64:
10545// CHECK-NEXT: ret
10546uint8x16_t test_vreinterpretq_u8_p64(poly64x2_t a) {
10547  return vreinterpretq_u8_p64(a);
10548}
10549
10550// CHECK-LABEL: test_vreinterpretq_u16_s8:
10551// CHECK-NEXT: ret
10552uint16x8_t test_vreinterpretq_u16_s8(int8x16_t a) {
10553  return vreinterpretq_u16_s8(a);
10554}
10555
10556// CHECK-LABEL: test_vreinterpretq_u16_s16:
10557// CHECK-NEXT: ret
10558uint16x8_t test_vreinterpretq_u16_s16(int16x8_t a) {
10559  return vreinterpretq_u16_s16(a);
10560}
10561
10562// CHECK-LABEL: test_vreinterpretq_u16_s32:
10563// CHECK-NEXT: ret
10564uint16x8_t test_vreinterpretq_u16_s32(int32x4_t a) {
10565  return vreinterpretq_u16_s32(a);
10566}
10567
10568// CHECK-LABEL: test_vreinterpretq_u16_s64:
10569// CHECK-NEXT: ret
10570uint16x8_t test_vreinterpretq_u16_s64(int64x2_t a) {
10571  return vreinterpretq_u16_s64(a);
10572}
10573
10574// CHECK-LABEL: test_vreinterpretq_u16_u8:
10575// CHECK-NEXT: ret
10576uint16x8_t test_vreinterpretq_u16_u8(uint8x16_t a) {
10577  return vreinterpretq_u16_u8(a);
10578}
10579
10580// CHECK-LABEL: test_vreinterpretq_u16_u32:
10581// CHECK-NEXT: ret
10582uint16x8_t test_vreinterpretq_u16_u32(uint32x4_t a) {
10583  return vreinterpretq_u16_u32(a);
10584}
10585
10586// CHECK-LABEL: test_vreinterpretq_u16_u64:
10587// CHECK-NEXT: ret
10588uint16x8_t test_vreinterpretq_u16_u64(uint64x2_t a) {
10589  return vreinterpretq_u16_u64(a);
10590}
10591
10592// CHECK-LABEL: test_vreinterpretq_u16_f16:
10593// CHECK-NEXT: ret
10594uint16x8_t test_vreinterpretq_u16_f16(float16x8_t a) {
10595  return vreinterpretq_u16_f16(a);
10596}
10597
10598// CHECK-LABEL: test_vreinterpretq_u16_f32:
10599// CHECK-NEXT: ret
10600uint16x8_t test_vreinterpretq_u16_f32(float32x4_t a) {
10601  return vreinterpretq_u16_f32(a);
10602}
10603
10604// CHECK-LABEL: test_vreinterpretq_u16_f64:
10605// CHECK-NEXT: ret
10606uint16x8_t test_vreinterpretq_u16_f64(float64x2_t a) {
10607  return vreinterpretq_u16_f64(a);
10608}
10609
10610// CHECK-LABEL: test_vreinterpretq_u16_p8:
10611// CHECK-NEXT: ret
10612uint16x8_t test_vreinterpretq_u16_p8(poly8x16_t a) {
10613  return vreinterpretq_u16_p8(a);
10614}
10615
10616// CHECK-LABEL: test_vreinterpretq_u16_p16:
10617// CHECK-NEXT: ret
10618uint16x8_t test_vreinterpretq_u16_p16(poly16x8_t a) {
10619  return vreinterpretq_u16_p16(a);
10620}
10621
10622// CHECK-LABEL: test_vreinterpretq_u16_p64:
10623// CHECK-NEXT: ret
10624uint16x8_t test_vreinterpretq_u16_p64(poly64x2_t a) {
10625  return vreinterpretq_u16_p64(a);
10626}
10627
10628// CHECK-LABEL: test_vreinterpretq_u32_s8:
10629// CHECK-NEXT: ret
10630uint32x4_t test_vreinterpretq_u32_s8(int8x16_t a) {
10631  return vreinterpretq_u32_s8(a);
10632}
10633
10634// CHECK-LABEL: test_vreinterpretq_u32_s16:
10635// CHECK-NEXT: ret
10636uint32x4_t test_vreinterpretq_u32_s16(int16x8_t a) {
10637  return vreinterpretq_u32_s16(a);
10638}
10639
10640// CHECK-LABEL: test_vreinterpretq_u32_s32:
10641// CHECK-NEXT: ret
10642uint32x4_t test_vreinterpretq_u32_s32(int32x4_t a) {
10643  return vreinterpretq_u32_s32(a);
10644}
10645
10646// CHECK-LABEL: test_vreinterpretq_u32_s64:
10647// CHECK-NEXT: ret
10648uint32x4_t test_vreinterpretq_u32_s64(int64x2_t a) {
10649  return vreinterpretq_u32_s64(a);
10650}
10651
10652// CHECK-LABEL: test_vreinterpretq_u32_u8:
10653// CHECK-NEXT: ret
10654uint32x4_t test_vreinterpretq_u32_u8(uint8x16_t a) {
10655  return vreinterpretq_u32_u8(a);
10656}
10657
10658// CHECK-LABEL: test_vreinterpretq_u32_u16:
10659// CHECK-NEXT: ret
10660uint32x4_t test_vreinterpretq_u32_u16(uint16x8_t a) {
10661  return vreinterpretq_u32_u16(a);
10662}
10663
10664// CHECK-LABEL: test_vreinterpretq_u32_u64:
10665// CHECK-NEXT: ret
10666uint32x4_t test_vreinterpretq_u32_u64(uint64x2_t a) {
10667  return vreinterpretq_u32_u64(a);
10668}
10669
10670// CHECK-LABEL: test_vreinterpretq_u32_f16:
10671// CHECK-NEXT: ret
10672uint32x4_t test_vreinterpretq_u32_f16(float16x8_t a) {
10673  return vreinterpretq_u32_f16(a);
10674}
10675
10676// CHECK-LABEL: test_vreinterpretq_u32_f32:
10677// CHECK-NEXT: ret
10678uint32x4_t test_vreinterpretq_u32_f32(float32x4_t a) {
10679  return vreinterpretq_u32_f32(a);
10680}
10681
10682// CHECK-LABEL: test_vreinterpretq_u32_f64:
10683// CHECK-NEXT: ret
10684uint32x4_t test_vreinterpretq_u32_f64(float64x2_t a) {
10685  return vreinterpretq_u32_f64(a);
10686}
10687
10688// CHECK-LABEL: test_vreinterpretq_u32_p8:
10689// CHECK-NEXT: ret
10690uint32x4_t test_vreinterpretq_u32_p8(poly8x16_t a) {
10691  return vreinterpretq_u32_p8(a);
10692}
10693
10694// CHECK-LABEL: test_vreinterpretq_u32_p16:
10695// CHECK-NEXT: ret
10696uint32x4_t test_vreinterpretq_u32_p16(poly16x8_t a) {
10697  return vreinterpretq_u32_p16(a);
10698}
10699
10700// CHECK-LABEL: test_vreinterpretq_u32_p64:
10701// CHECK-NEXT: ret
10702uint32x4_t test_vreinterpretq_u32_p64(poly64x2_t a) {
10703  return vreinterpretq_u32_p64(a);
10704}
10705
10706// CHECK-LABEL: test_vreinterpretq_u64_s8:
10707// CHECK-NEXT: ret
10708uint64x2_t test_vreinterpretq_u64_s8(int8x16_t a) {
10709  return vreinterpretq_u64_s8(a);
10710}
10711
10712// CHECK-LABEL: test_vreinterpretq_u64_s16:
10713// CHECK-NEXT: ret
10714uint64x2_t test_vreinterpretq_u64_s16(int16x8_t a) {
10715  return vreinterpretq_u64_s16(a);
10716}
10717
10718// CHECK-LABEL: test_vreinterpretq_u64_s32:
10719// CHECK-NEXT: ret
10720uint64x2_t test_vreinterpretq_u64_s32(int32x4_t a) {
10721  return vreinterpretq_u64_s32(a);
10722}
10723
10724// CHECK-LABEL: test_vreinterpretq_u64_s64:
10725// CHECK-NEXT: ret
10726uint64x2_t test_vreinterpretq_u64_s64(int64x2_t a) {
10727  return vreinterpretq_u64_s64(a);
10728}
10729
10730// CHECK-LABEL: test_vreinterpretq_u64_u8:
10731// CHECK-NEXT: ret
10732uint64x2_t test_vreinterpretq_u64_u8(uint8x16_t a) {
10733  return vreinterpretq_u64_u8(a);
10734}
10735
10736// CHECK-LABEL: test_vreinterpretq_u64_u16:
10737// CHECK-NEXT: ret
10738uint64x2_t test_vreinterpretq_u64_u16(uint16x8_t a) {
10739  return vreinterpretq_u64_u16(a);
10740}
10741
10742// CHECK-LABEL: test_vreinterpretq_u64_u32:
10743// CHECK-NEXT: ret
10744uint64x2_t test_vreinterpretq_u64_u32(uint32x4_t a) {
10745  return vreinterpretq_u64_u32(a);
10746}
10747
10748// CHECK-LABEL: test_vreinterpretq_u64_f16:
10749// CHECK-NEXT: ret
10750uint64x2_t test_vreinterpretq_u64_f16(float16x8_t a) {
10751  return vreinterpretq_u64_f16(a);
10752}
10753
10754// CHECK-LABEL: test_vreinterpretq_u64_f32:
10755// CHECK-NEXT: ret
10756uint64x2_t test_vreinterpretq_u64_f32(float32x4_t a) {
10757  return vreinterpretq_u64_f32(a);
10758}
10759
10760// CHECK-LABEL: test_vreinterpretq_u64_f64:
10761// CHECK-NEXT: ret
10762uint64x2_t test_vreinterpretq_u64_f64(float64x2_t a) {
10763  return vreinterpretq_u64_f64(a);
10764}
10765
10766// CHECK-LABEL: test_vreinterpretq_u64_p8:
10767// CHECK-NEXT: ret
10768uint64x2_t test_vreinterpretq_u64_p8(poly8x16_t a) {
10769  return vreinterpretq_u64_p8(a);
10770}
10771
10772// CHECK-LABEL: test_vreinterpretq_u64_p16:
10773// CHECK-NEXT: ret
10774uint64x2_t test_vreinterpretq_u64_p16(poly16x8_t a) {
10775  return vreinterpretq_u64_p16(a);
10776}
10777
10778// CHECK-LABEL: test_vreinterpretq_u64_p64:
10779// CHECK-NEXT: ret
10780uint64x2_t test_vreinterpretq_u64_p64(poly64x2_t a) {
10781  return vreinterpretq_u64_p64(a);
10782}
10783
10784// CHECK-LABEL: test_vreinterpretq_f16_s8:
10785// CHECK-NEXT: ret
10786float16x8_t test_vreinterpretq_f16_s8(int8x16_t a) {
10787  return vreinterpretq_f16_s8(a);
10788}
10789
10790// CHECK-LABEL: test_vreinterpretq_f16_s16:
10791// CHECK-NEXT: ret
10792float16x8_t test_vreinterpretq_f16_s16(int16x8_t a) {
10793  return vreinterpretq_f16_s16(a);
10794}
10795
10796// CHECK-LABEL: test_vreinterpretq_f16_s32:
10797// CHECK-NEXT: ret
10798float16x8_t test_vreinterpretq_f16_s32(int32x4_t a) {
10799  return vreinterpretq_f16_s32(a);
10800}
10801
10802// CHECK-LABEL: test_vreinterpretq_f16_s64:
10803// CHECK-NEXT: ret
10804float16x8_t test_vreinterpretq_f16_s64(int64x2_t a) {
10805  return vreinterpretq_f16_s64(a);
10806}
10807
10808// CHECK-LABEL: test_vreinterpretq_f16_u8:
10809// CHECK-NEXT: ret
10810float16x8_t test_vreinterpretq_f16_u8(uint8x16_t a) {
10811  return vreinterpretq_f16_u8(a);
10812}
10813
10814// CHECK-LABEL: test_vreinterpretq_f16_u16:
10815// CHECK-NEXT: ret
10816float16x8_t test_vreinterpretq_f16_u16(uint16x8_t a) {
10817  return vreinterpretq_f16_u16(a);
10818}
10819
10820// CHECK-LABEL: test_vreinterpretq_f16_u32:
10821// CHECK-NEXT: ret
10822float16x8_t test_vreinterpretq_f16_u32(uint32x4_t a) {
10823  return vreinterpretq_f16_u32(a);
10824}
10825
10826// CHECK-LABEL: test_vreinterpretq_f16_u64:
10827// CHECK-NEXT: ret
10828float16x8_t test_vreinterpretq_f16_u64(uint64x2_t a) {
10829  return vreinterpretq_f16_u64(a);
10830}
10831
10832// CHECK-LABEL: test_vreinterpretq_f16_f32:
10833// CHECK-NEXT: ret
10834float16x8_t test_vreinterpretq_f16_f32(float32x4_t a) {
10835  return vreinterpretq_f16_f32(a);
10836}
10837
10838// CHECK-LABEL: test_vreinterpretq_f16_f64:
10839// CHECK-NEXT: ret
10840float16x8_t test_vreinterpretq_f16_f64(float64x2_t a) {
10841  return vreinterpretq_f16_f64(a);
10842}
10843
10844// CHECK-LABEL: test_vreinterpretq_f16_p8:
10845// CHECK-NEXT: ret
10846float16x8_t test_vreinterpretq_f16_p8(poly8x16_t a) {
10847  return vreinterpretq_f16_p8(a);
10848}
10849
10850// CHECK-LABEL: test_vreinterpretq_f16_p16:
10851// CHECK-NEXT: ret
10852float16x8_t test_vreinterpretq_f16_p16(poly16x8_t a) {
10853  return vreinterpretq_f16_p16(a);
10854}
10855
10856// CHECK-LABEL: test_vreinterpretq_f16_p64:
10857// CHECK-NEXT: ret
10858float16x8_t test_vreinterpretq_f16_p64(poly64x2_t a) {
10859  return vreinterpretq_f16_p64(a);
10860}
10861
10862// CHECK-LABEL: test_vreinterpretq_f32_s8:
10863// CHECK-NEXT: ret
10864float32x4_t test_vreinterpretq_f32_s8(int8x16_t a) {
10865  return vreinterpretq_f32_s8(a);
10866}
10867
10868// CHECK-LABEL: test_vreinterpretq_f32_s16:
10869// CHECK-NEXT: ret
10870float32x4_t test_vreinterpretq_f32_s16(int16x8_t a) {
10871  return vreinterpretq_f32_s16(a);
10872}
10873
10874// CHECK-LABEL: test_vreinterpretq_f32_s32:
10875// CHECK-NEXT: ret
10876float32x4_t test_vreinterpretq_f32_s32(int32x4_t a) {
10877  return vreinterpretq_f32_s32(a);
10878}
10879
10880// CHECK-LABEL: test_vreinterpretq_f32_s64:
10881// CHECK-NEXT: ret
10882float32x4_t test_vreinterpretq_f32_s64(int64x2_t a) {
10883  return vreinterpretq_f32_s64(a);
10884}
10885
10886// CHECK-LABEL: test_vreinterpretq_f32_u8:
10887// CHECK-NEXT: ret
10888float32x4_t test_vreinterpretq_f32_u8(uint8x16_t a) {
10889  return vreinterpretq_f32_u8(a);
10890}
10891
10892// CHECK-LABEL: test_vreinterpretq_f32_u16:
10893// CHECK-NEXT: ret
10894float32x4_t test_vreinterpretq_f32_u16(uint16x8_t a) {
10895  return vreinterpretq_f32_u16(a);
10896}
10897
10898// CHECK-LABEL: test_vreinterpretq_f32_u32:
10899// CHECK-NEXT: ret
10900float32x4_t test_vreinterpretq_f32_u32(uint32x4_t a) {
10901  return vreinterpretq_f32_u32(a);
10902}
10903
10904// CHECK-LABEL: test_vreinterpretq_f32_u64:
10905// CHECK-NEXT: ret
10906float32x4_t test_vreinterpretq_f32_u64(uint64x2_t a) {
10907  return vreinterpretq_f32_u64(a);
10908}
10909
10910// CHECK-LABEL: test_vreinterpretq_f32_f16:
10911// CHECK-NEXT: ret
10912float32x4_t test_vreinterpretq_f32_f16(float16x8_t a) {
10913  return vreinterpretq_f32_f16(a);
10914}
10915
10916// CHECK-LABEL: test_vreinterpretq_f32_f64:
10917// CHECK-NEXT: ret
10918float32x4_t test_vreinterpretq_f32_f64(float64x2_t a) {
10919  return vreinterpretq_f32_f64(a);
10920}
10921
10922// CHECK-LABEL: test_vreinterpretq_f32_p8:
10923// CHECK-NEXT: ret
10924float32x4_t test_vreinterpretq_f32_p8(poly8x16_t a) {
10925  return vreinterpretq_f32_p8(a);
10926}
10927
10928// CHECK-LABEL: test_vreinterpretq_f32_p16:
10929// CHECK-NEXT: ret
10930float32x4_t test_vreinterpretq_f32_p16(poly16x8_t a) {
10931  return vreinterpretq_f32_p16(a);
10932}
10933
10934// CHECK-LABEL: test_vreinterpretq_f32_p64:
10935// CHECK-NEXT: ret
10936float32x4_t test_vreinterpretq_f32_p64(poly64x2_t a) {
10937  return vreinterpretq_f32_p64(a);
10938}
10939
10940// CHECK-LABEL: test_vreinterpretq_f64_s8:
10941// CHECK-NEXT: ret
10942float64x2_t test_vreinterpretq_f64_s8(int8x16_t a) {
10943  return vreinterpretq_f64_s8(a);
10944}
10945
10946// CHECK-LABEL: test_vreinterpretq_f64_s16:
10947// CHECK-NEXT: ret
10948float64x2_t test_vreinterpretq_f64_s16(int16x8_t a) {
10949  return vreinterpretq_f64_s16(a);
10950}
10951
10952// CHECK-LABEL: test_vreinterpretq_f64_s32:
10953// CHECK-NEXT: ret
10954float64x2_t test_vreinterpretq_f64_s32(int32x4_t a) {
10955  return vreinterpretq_f64_s32(a);
10956}
10957
10958// CHECK-LABEL: test_vreinterpretq_f64_s64:
10959// CHECK-NEXT: ret
10960float64x2_t test_vreinterpretq_f64_s64(int64x2_t a) {
10961  return vreinterpretq_f64_s64(a);
10962}
10963
10964// CHECK-LABEL: test_vreinterpretq_f64_u8:
10965// CHECK-NEXT: ret
10966float64x2_t test_vreinterpretq_f64_u8(uint8x16_t a) {
10967  return vreinterpretq_f64_u8(a);
10968}
10969
10970// CHECK-LABEL: test_vreinterpretq_f64_u16:
10971// CHECK-NEXT: ret
10972float64x2_t test_vreinterpretq_f64_u16(uint16x8_t a) {
10973  return vreinterpretq_f64_u16(a);
10974}
10975
10976// CHECK-LABEL: test_vreinterpretq_f64_u32:
10977// CHECK-NEXT: ret
10978float64x2_t test_vreinterpretq_f64_u32(uint32x4_t a) {
10979  return vreinterpretq_f64_u32(a);
10980}
10981
10982// CHECK-LABEL: test_vreinterpretq_f64_u64:
10983// CHECK-NEXT: ret
10984float64x2_t test_vreinterpretq_f64_u64(uint64x2_t a) {
10985  return vreinterpretq_f64_u64(a);
10986}
10987
10988// CHECK-LABEL: test_vreinterpretq_f64_f16:
10989// CHECK-NEXT: ret
10990float64x2_t test_vreinterpretq_f64_f16(float16x8_t a) {
10991  return vreinterpretq_f64_f16(a);
10992}
10993
10994// CHECK-LABEL: test_vreinterpretq_f64_f32:
10995// CHECK-NEXT: ret
10996float64x2_t test_vreinterpretq_f64_f32(float32x4_t a) {
10997  return vreinterpretq_f64_f32(a);
10998}
10999
11000// CHECK-LABEL: test_vreinterpretq_f64_p8:
11001// CHECK-NEXT: ret
11002float64x2_t test_vreinterpretq_f64_p8(poly8x16_t a) {
11003  return vreinterpretq_f64_p8(a);
11004}
11005
11006// CHECK-LABEL: test_vreinterpretq_f64_p16:
11007// CHECK-NEXT: ret
11008float64x2_t test_vreinterpretq_f64_p16(poly16x8_t a) {
11009  return vreinterpretq_f64_p16(a);
11010}
11011
11012// CHECK-LABEL: test_vreinterpretq_f64_p64:
11013// CHECK-NEXT: ret
11014float64x2_t test_vreinterpretq_f64_p64(poly64x2_t a) {
11015  return vreinterpretq_f64_p64(a);
11016}
11017
11018// CHECK-LABEL: test_vreinterpretq_p8_s8:
11019// CHECK-NEXT: ret
11020poly8x16_t test_vreinterpretq_p8_s8(int8x16_t a) {
11021  return vreinterpretq_p8_s8(a);
11022}
11023
11024// CHECK-LABEL: test_vreinterpretq_p8_s16:
11025// CHECK-NEXT: ret
11026poly8x16_t test_vreinterpretq_p8_s16(int16x8_t a) {
11027  return vreinterpretq_p8_s16(a);
11028}
11029
11030// CHECK-LABEL: test_vreinterpretq_p8_s32:
11031// CHECK-NEXT: ret
11032poly8x16_t test_vreinterpretq_p8_s32(int32x4_t a) {
11033  return vreinterpretq_p8_s32(a);
11034}
11035
11036// CHECK-LABEL: test_vreinterpretq_p8_s64:
11037// CHECK-NEXT: ret
11038poly8x16_t test_vreinterpretq_p8_s64(int64x2_t a) {
11039  return vreinterpretq_p8_s64(a);
11040}
11041
11042// CHECK-LABEL: test_vreinterpretq_p8_u8:
11043// CHECK-NEXT: ret
11044poly8x16_t test_vreinterpretq_p8_u8(uint8x16_t a) {
11045  return vreinterpretq_p8_u8(a);
11046}
11047
11048// CHECK-LABEL: test_vreinterpretq_p8_u16:
11049// CHECK-NEXT: ret
11050poly8x16_t test_vreinterpretq_p8_u16(uint16x8_t a) {
11051  return vreinterpretq_p8_u16(a);
11052}
11053
11054// CHECK-LABEL: test_vreinterpretq_p8_u32:
11055// CHECK-NEXT: ret
11056poly8x16_t test_vreinterpretq_p8_u32(uint32x4_t a) {
11057  return vreinterpretq_p8_u32(a);
11058}
11059
11060// CHECK-LABEL: test_vreinterpretq_p8_u64:
11061// CHECK-NEXT: ret
11062poly8x16_t test_vreinterpretq_p8_u64(uint64x2_t a) {
11063  return vreinterpretq_p8_u64(a);
11064}
11065
11066// CHECK-LABEL: test_vreinterpretq_p8_f16:
11067// CHECK-NEXT: ret
11068poly8x16_t test_vreinterpretq_p8_f16(float16x8_t a) {
11069  return vreinterpretq_p8_f16(a);
11070}
11071
11072// CHECK-LABEL: test_vreinterpretq_p8_f32:
11073// CHECK-NEXT: ret
11074poly8x16_t test_vreinterpretq_p8_f32(float32x4_t a) {
11075  return vreinterpretq_p8_f32(a);
11076}
11077
11078// CHECK-LABEL: test_vreinterpretq_p8_f64:
11079// CHECK-NEXT: ret
11080poly8x16_t test_vreinterpretq_p8_f64(float64x2_t a) {
11081  return vreinterpretq_p8_f64(a);
11082}
11083
11084// CHECK-LABEL: test_vreinterpretq_p8_p16:
11085// CHECK-NEXT: ret
11086poly8x16_t test_vreinterpretq_p8_p16(poly16x8_t a) {
11087  return vreinterpretq_p8_p16(a);
11088}
11089
11090// CHECK-LABEL: test_vreinterpretq_p8_p64:
11091// CHECK-NEXT: ret
11092poly8x16_t test_vreinterpretq_p8_p64(poly64x2_t a) {
11093  return vreinterpretq_p8_p64(a);
11094}
11095
11096// CHECK-LABEL: test_vreinterpretq_p16_s8:
11097// CHECK-NEXT: ret
11098poly16x8_t test_vreinterpretq_p16_s8(int8x16_t a) {
11099  return vreinterpretq_p16_s8(a);
11100}
11101
11102// CHECK-LABEL: test_vreinterpretq_p16_s16:
11103// CHECK-NEXT: ret
11104poly16x8_t test_vreinterpretq_p16_s16(int16x8_t a) {
11105  return vreinterpretq_p16_s16(a);
11106}
11107
11108// CHECK-LABEL: test_vreinterpretq_p16_s32:
11109// CHECK-NEXT: ret
11110poly16x8_t test_vreinterpretq_p16_s32(int32x4_t a) {
11111  return vreinterpretq_p16_s32(a);
11112}
11113
11114// CHECK-LABEL: test_vreinterpretq_p16_s64:
11115// CHECK-NEXT: ret
11116poly16x8_t test_vreinterpretq_p16_s64(int64x2_t a) {
11117  return vreinterpretq_p16_s64(a);
11118}
11119
11120// CHECK-LABEL: test_vreinterpretq_p16_u8:
11121// CHECK-NEXT: ret
11122poly16x8_t test_vreinterpretq_p16_u8(uint8x16_t a) {
11123  return vreinterpretq_p16_u8(a);
11124}
11125
11126// CHECK-LABEL: test_vreinterpretq_p16_u16:
11127// CHECK-NEXT: ret
11128poly16x8_t test_vreinterpretq_p16_u16(uint16x8_t a) {
11129  return vreinterpretq_p16_u16(a);
11130}
11131
11132// CHECK-LABEL: test_vreinterpretq_p16_u32:
11133// CHECK-NEXT: ret
11134poly16x8_t test_vreinterpretq_p16_u32(uint32x4_t a) {
11135  return vreinterpretq_p16_u32(a);
11136}
11137
11138// CHECK-LABEL: test_vreinterpretq_p16_u64:
11139// CHECK-NEXT: ret
11140poly16x8_t test_vreinterpretq_p16_u64(uint64x2_t a) {
11141  return vreinterpretq_p16_u64(a);
11142}
11143
11144// CHECK-LABEL: test_vreinterpretq_p16_f16:
11145// CHECK-NEXT: ret
11146poly16x8_t test_vreinterpretq_p16_f16(float16x8_t a) {
11147  return vreinterpretq_p16_f16(a);
11148}
11149
11150// CHECK-LABEL: test_vreinterpretq_p16_f32:
11151// CHECK-NEXT: ret
11152poly16x8_t test_vreinterpretq_p16_f32(float32x4_t a) {
11153  return vreinterpretq_p16_f32(a);
11154}
11155
11156// CHECK-LABEL: test_vreinterpretq_p16_f64:
11157// CHECK-NEXT: ret
11158poly16x8_t test_vreinterpretq_p16_f64(float64x2_t a) {
11159  return vreinterpretq_p16_f64(a);
11160}
11161
11162// CHECK-LABEL: test_vreinterpretq_p16_p8:
11163// CHECK-NEXT: ret
11164poly16x8_t test_vreinterpretq_p16_p8(poly8x16_t a) {
11165  return vreinterpretq_p16_p8(a);
11166}
11167
11168// CHECK-LABEL: test_vreinterpretq_p16_p64:
11169// CHECK-NEXT: ret
11170poly16x8_t test_vreinterpretq_p16_p64(poly64x2_t a) {
11171  return vreinterpretq_p16_p64(a);
11172}
11173
11174// CHECK-LABEL: test_vreinterpretq_p64_s8:
11175// CHECK-NEXT: ret
11176poly64x2_t test_vreinterpretq_p64_s8(int8x16_t a) {
11177  return vreinterpretq_p64_s8(a);
11178}
11179
11180// CHECK-LABEL: test_vreinterpretq_p64_s16:
11181// CHECK-NEXT: ret
11182poly64x2_t test_vreinterpretq_p64_s16(int16x8_t a) {
11183  return vreinterpretq_p64_s16(a);
11184}
11185
11186// CHECK-LABEL: test_vreinterpretq_p64_s32:
11187// CHECK-NEXT: ret
11188poly64x2_t test_vreinterpretq_p64_s32(int32x4_t a) {
11189  return vreinterpretq_p64_s32(a);
11190}
11191
11192// CHECK-LABEL: test_vreinterpretq_p64_s64:
11193// CHECK-NEXT: ret
11194poly64x2_t test_vreinterpretq_p64_s64(int64x2_t a) {
11195  return vreinterpretq_p64_s64(a);
11196}
11197
11198// CHECK-LABEL: test_vreinterpretq_p64_u8:
11199// CHECK-NEXT: ret
11200poly64x2_t test_vreinterpretq_p64_u8(uint8x16_t a) {
11201  return vreinterpretq_p64_u8(a);
11202}
11203
11204// CHECK-LABEL: test_vreinterpretq_p64_u16:
11205// CHECK-NEXT: ret
11206poly64x2_t test_vreinterpretq_p64_u16(uint16x8_t a) {
11207  return vreinterpretq_p64_u16(a);
11208}
11209
11210// CHECK-LABEL: test_vreinterpretq_p64_u32:
11211// CHECK-NEXT: ret
11212poly64x2_t test_vreinterpretq_p64_u32(uint32x4_t a) {
11213  return vreinterpretq_p64_u32(a);
11214}
11215
11216// CHECK-LABEL: test_vreinterpretq_p64_u64:
11217// CHECK-NEXT: ret
11218poly64x2_t test_vreinterpretq_p64_u64(uint64x2_t a) {
11219  return vreinterpretq_p64_u64(a);
11220}
11221
11222// CHECK-LABEL: test_vreinterpretq_p64_f16:
11223// CHECK-NEXT: ret
11224poly64x2_t test_vreinterpretq_p64_f16(float16x8_t a) {
11225  return vreinterpretq_p64_f16(a);
11226}
11227
11228// CHECK-LABEL: test_vreinterpretq_p64_f32:
11229// CHECK-NEXT: ret
11230poly64x2_t test_vreinterpretq_p64_f32(float32x4_t a) {
11231  return vreinterpretq_p64_f32(a);
11232}
11233
11234// CHECK-LABEL: test_vreinterpretq_p64_f64:
11235// CHECK-NEXT: ret
11236poly64x2_t test_vreinterpretq_p64_f64(float64x2_t a) {
11237  return vreinterpretq_p64_f64(a);
11238}
11239
11240// CHECK-LABEL: test_vreinterpretq_p64_p8:
11241// CHECK-NEXT: ret
11242poly64x2_t test_vreinterpretq_p64_p8(poly8x16_t a) {
11243  return vreinterpretq_p64_p8(a);
11244}
11245
11246// CHECK-LABEL: test_vreinterpretq_p64_p16:
11247// CHECK-NEXT: ret
11248poly64x2_t test_vreinterpretq_p64_p16(poly16x8_t a) {
11249  return vreinterpretq_p64_p16(a);
11250}
11251
11252float32_t test_vabds_f32(float32_t a, float32_t b) {
11253// CHECK-LABEL: test_vabds_f32
11254// CHECK: fabd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
11255  return vabds_f32(a, b);
11256}
11257
11258float64_t test_vabdd_f64(float64_t a, float64_t b) {
11259// CHECK-LABEL: test_vabdd_f64
11260// CHECK: fabd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
11261  return vabdd_f64(a, b);
11262}
11263
11264int64x1_t test_vuqadd_s64(int64x1_t a, uint64x1_t b) {
11265  // CHECK-LABEL: test_vuqadd_s64
11266  return vuqadd_s64(a, b);
11267  // CHECK: suqadd d{{[0-9]+}}, d{{[0-9]+}}
11268}
11269
11270uint64x1_t test_vsqadd_u64(uint64x1_t a, int64x1_t b) {
11271  // CHECK-LABEL: test_vsqadd_u64
11272  return vsqadd_u64(a, b);
11273  // CHECK: usqadd d{{[0-9]+}}, d{{[0-9]+}}
11274}
11275
11276uint8x8_t test_vsqadd_u8(uint8x8_t a, int8x8_t b) {
11277  // CHECK-LABEL: test_vsqadd_u8
11278  return vsqadd_u8(a, b);
11279  // CHECK: usqadd {{v[0-9]+}}.8b, {{v[0-9]+}}.8b
11280}
11281
11282uint8x16_t test_vsqaddq_u8(uint8x16_t a, int8x16_t b) {
11283  // CHECK-LABEL: test_vsqaddq_u8
11284  return vsqaddq_u8(a, b);
11285  // CHECK: usqadd {{v[0-9]+}}.16b, {{v[0-9]+}}.16b
11286}
11287
11288uint16x4_t test_vsqadd_u16(uint16x4_t a, int16x4_t b) {
11289  // CHECK-LABEL: test_vsqadd_u16
11290  return vsqadd_u16(a, b);
11291  // CHECK: usqadd {{v[0-9]+}}.4h, {{v[0-9]+}}.4h
11292}
11293
11294uint16x8_t test_vsqaddq_u16(uint16x8_t a, int16x8_t b) {
11295  // CHECK-LABEL: test_vsqaddq_u16
11296  return vsqaddq_u16(a, b);
11297  // CHECK: usqadd {{v[0-9]+}}.8h, {{v[0-9]+}}.8h
11298}
11299
11300uint32x2_t test_vsqadd_u32(uint32x2_t a, int32x2_t b) {
11301  // CHECK-LABEL: test_vsqadd_u32
11302  return vsqadd_u32(a, b);
11303  // CHECK: usqadd {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
11304}
11305
11306uint32x4_t test_vsqaddq_u32(uint32x4_t a, int32x4_t b) {
11307  // CHECK-LABEL: test_vsqaddq_u32
11308  return vsqaddq_u32(a, b);
11309  // CHECK: usqadd {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
11310}
11311
11312uint64x2_t test_vsqaddq_u64(uint64x2_t a, int64x2_t b) {
11313  // CHECK-LABEL: test_vsqaddq_u64
11314  return vsqaddq_u64(a, b);
11315  // CHECK: usqadd {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
11316}
11317
11318int64x1_t test_vabs_s64(int64x1_t a) {
11319  // CHECK-LABEL: test_vabs_s64
11320  return vabs_s64(a);
11321  // CHECK: abs d{{[0-9]+}}, d{{[0-9]+}}
11322}
11323
11324int64x1_t test_vqabs_s64(int64x1_t a) {
11325  // CHECK-LABEL: test_vqabs_s64
11326  return vqabs_s64(a);
11327  // CHECK: sqabs d{{[0-9]+}}, d{{[0-9]+}}
11328}
11329
11330int64x1_t test_vqneg_s64(int64x1_t a) {
11331  // CHECK-LABEL: test_vqneg_s64
11332  return vqneg_s64(a);
11333  // CHECK: sqneg d{{[0-9]+}}, d{{[0-9]+}}
11334}
11335
11336int64x1_t test_vneg_s64(int64x1_t a) {
11337  // CHECK-LABEL: test_vneg_s64
11338  return vneg_s64(a);
11339  // CHECK: neg d{{[0-9]+}}, d{{[0-9]+}}
11340}
11341
11342float32_t test_vaddv_f32(float32x2_t a) {
11343  // CHECK-LABEL: test_vaddv_f32
11344  return vaddv_f32(a);
11345  // CHECK: faddp {{s[0-9]+}}, {{v[0-9]+}}.2s
11346}
11347
11348float32_t test_vaddvq_f32(float32x4_t a) {
11349  // CHECK-LABEL: test_vaddvq_f32
11350  return vaddvq_f32(a);
11351  // CHECK: faddp {{v[0-9]+}}.4s, {{v[0-9]+}}.4s, {{v[0-9]+}}.4s
11352  // CHECK: faddp {{s[0-9]+}}, {{v[0-9]+}}.2s
11353}
11354
11355float64_t test_vaddvq_f64(float64x2_t a) {
11356  // CHECK-LABEL: test_vaddvq_f64
11357  return vaddvq_f64(a);
11358  // CHECK: faddp {{d[0-9]+}}, {{v[0-9]+}}.2d
11359}
11360
11361float32_t test_vmaxv_f32(float32x2_t a) {
11362  // CHECK-LABEL: test_vmaxv_f32
11363  return vmaxv_f32(a);
11364  // CHECK: fmaxp {{s[0-9]+}}, {{v[0-9]+}}.2s
11365}
11366
11367float64_t test_vmaxvq_f64(float64x2_t a) {
11368  // CHECK-LABEL: test_vmaxvq_f64
11369  return vmaxvq_f64(a);
11370  // CHECK: fmaxp {{d[0-9]+}}, {{v[0-9]+}}.2d
11371}
11372
11373float32_t test_vminv_f32(float32x2_t a) {
11374  // CHECK-LABEL: test_vminv_f32
11375  return vminv_f32(a);
11376  // CHECK: fminp {{s[0-9]+}}, {{v[0-9]+}}.2s
11377}
11378
11379float64_t test_vminvq_f64(float64x2_t a) {
11380  // CHECK-LABEL: test_vminvq_f64
11381  return vminvq_f64(a);
11382  // CHECK: fminp {{d[0-9]+}}, {{v[0-9]+}}.2d
11383}
11384
11385float64_t test_vmaxnmvq_f64(float64x2_t a) {
11386  // CHECK-LABEL: test_vmaxnmvq_f64
11387  return vmaxnmvq_f64(a);
11388  // CHECK: fmaxnmp {{d[0-9]+}}, {{v[0-9]+}}.2d
11389}
11390
11391float32_t test_vmaxnmv_f32(float32x2_t a) {
11392  // CHECK-LABEL: test_vmaxnmv_f32
11393  return vmaxnmv_f32(a);
11394  // CHECK: fmaxnmp {{s[0-9]+}}, {{v[0-9]+}}.2s
11395}
11396
11397float64_t test_vminnmvq_f64(float64x2_t a) {
11398  // CHECK-LABEL: test_vminnmvq_f64
11399  return vminnmvq_f64(a);
11400  // CHECK: fminnmp {{d[0-9]+}}, {{v[0-9]+}}.2d
11401}
11402
11403float32_t test_vminnmv_f32(float32x2_t a) {
11404  // CHECK-LABEL: test_vminnmv_f32
11405  return vminnmv_f32(a);
11406  // CHECK: fminnmp {{s[0-9]+}}, {{v[0-9]+}}.2s
11407}
11408
11409int64x2_t test_vpaddq_s64(int64x2_t a, int64x2_t b) {
11410  // CHECK-LABEL: test_vpaddq_s64
11411  return vpaddq_s64(a, b);
11412  // CHECK: addp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
11413}
11414
11415uint64x2_t test_vpaddq_u64(uint64x2_t a, uint64x2_t b) {
11416  // CHECK-LABEL: test_vpaddq_u64
11417  return vpaddq_u64(a, b);
11418  // CHECK: addp {{v[0-9]+}}.2d, {{v[0-9]+}}.2d, {{v[0-9]+}}.2d
11419}
11420
11421uint64_t test_vpaddd_u64(uint64x2_t a) {
11422  // CHECK-LABEL: test_vpaddd_u64
11423  return vpaddd_u64(a);
11424  // CHECK: addp {{d[0-9]+}}, {{v[0-9]+}}.2d
11425}
11426
11427int64_t test_vaddvq_s64(int64x2_t a) {
11428  // CHECK-LABEL: test_vaddvq_s64
11429  return vaddvq_s64(a);
11430  // CHECK: addp {{d[0-9]+}}, {{v[0-9]+}}.2d
11431}
11432
11433uint64_t test_vaddvq_u64(uint64x2_t a) {
11434  // CHECK-LABEL: test_vaddvq_u64
11435  return vaddvq_u64(a);
11436  // CHECK: addp {{d[0-9]+}}, {{v[0-9]+}}.2d
11437}
11438
11439float64x1_t test_vadd_f64(float64x1_t a, float64x1_t b) {
11440  // CHECK-LABEL: test_vadd_f64
11441  return vadd_f64(a, b);
11442  // CHECK: fadd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11443}
11444
11445float64x1_t test_vmul_f64(float64x1_t a, float64x1_t b) {
11446  // CHECK-LABEL: test_vmul_f64
11447  return vmul_f64(a, b);
11448  // CHECK: fmul d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11449}
11450
11451float64x1_t test_vdiv_f64(float64x1_t a, float64x1_t b) {
11452  // CHECK-LABEL: test_vdiv_f64
11453  return vdiv_f64(a, b);
11454  // CHECK: fdiv d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11455}
11456
11457float64x1_t test_vmla_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
11458  // CHECK-LABEL: test_vmla_f64
11459  return vmla_f64(a, b, c);
11460  // CHECK: fmadd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11461}
11462
11463float64x1_t test_vmls_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
11464  // CHECK-LABEL: test_vmls_f64
11465  return vmls_f64(a, b, c);
11466  // CHECK: fmsub d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11467}
11468
11469float64x1_t test_vfma_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
11470  // CHECK-LABEL: test_vfma_f64
11471  return vfma_f64(a, b, c);
11472  // CHECK: fmadd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11473}
11474
11475float64x1_t test_vfms_f64(float64x1_t a, float64x1_t b, float64x1_t c) {
11476  // CHECK-LABEL: test_vfms_f64
11477  return vfms_f64(a, b, c);
11478  // CHECK: fmsub d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11479}
11480
11481float64x1_t test_vsub_f64(float64x1_t a, float64x1_t b) {
11482  // CHECK-LABEL: test_vsub_f64
11483  return vsub_f64(a, b);
11484  // CHECK: fsub d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11485}
11486
11487float64x1_t test_vabd_f64(float64x1_t a, float64x1_t b) {
11488  // CHECK-LABEL: test_vabd_f64
11489  return vabd_f64(a, b);
11490  // CHECK: fabd d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11491}
11492
11493float64x1_t test_vmax_f64(float64x1_t a, float64x1_t b) {
11494// CHECK-LABEL: test_vmax_f64
11495  return vmax_f64(a, b);
11496// CHECK: fmax d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11497}
11498
11499float64x1_t test_vmin_f64(float64x1_t a, float64x1_t b) {
11500// CHECK-LABEL: test_vmin_f64
11501  return vmin_f64(a, b);
11502// CHECK: fmin d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11503}
11504
11505float64x1_t test_vmaxnm_f64(float64x1_t a, float64x1_t b) {
11506// CHECK-LABEL: test_vmaxnm_f64
11507  return vmaxnm_f64(a, b);
11508// CHECK: fmaxnm d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11509}
11510
11511float64x1_t test_vminnm_f64(float64x1_t a, float64x1_t b) {
11512// CHECK-LABEL: test_vminnm_f64
11513  return vminnm_f64(a, b);
11514// CHECK: fminnm d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11515}
11516
11517float64x1_t test_vabs_f64(float64x1_t a) {
11518  // CHECK-LABEL: test_vabs_f64
11519  return vabs_f64(a);
11520  // CHECK: fabs d{{[0-9]+}}, d{{[0-9]+}}
11521}
11522
11523float64x1_t test_vneg_f64(float64x1_t a) {
11524  // CHECK-LABEL: test_vneg_f64
11525  return vneg_f64(a);
11526  // CHECK: fneg d{{[0-9]+}}, d{{[0-9]+}}
11527}
11528
11529int64x1_t test_vcvt_s64_f64(float64x1_t a) {
11530  // CHECK-LABEL: test_vcvt_s64_f64
11531  return vcvt_s64_f64(a);
11532  // CHECK: fcvtzs {{[xd][0-9]+}}, d{{[0-9]+}}
11533}
11534
11535uint64x1_t test_vcvt_u64_f64(float64x1_t a) {
11536  // CHECK-LABEL: test_vcvt_u64_f64
11537  return vcvt_u64_f64(a);
11538  // CHECK: fcvtzu {{[xd][0-9]+}}, d{{[0-9]+}}
11539}
11540
11541int64x1_t test_vcvtn_s64_f64(float64x1_t a) {
11542  // CHECK-LABEL: test_vcvtn_s64_f64
11543  return vcvtn_s64_f64(a);
11544  // CHECK: fcvtns d{{[0-9]+}}, d{{[0-9]+}}
11545}
11546
11547uint64x1_t test_vcvtn_u64_f64(float64x1_t a) {
11548  // CHECK-LABEL: test_vcvtn_u64_f64
11549  return vcvtn_u64_f64(a);
11550  // CHECK: fcvtnu d{{[0-9]+}}, d{{[0-9]+}}
11551}
11552
11553int64x1_t test_vcvtp_s64_f64(float64x1_t a) {
11554  // CHECK-LABEL: test_vcvtp_s64_f64
11555  return vcvtp_s64_f64(a);
11556  // CHECK: fcvtps d{{[0-9]+}}, d{{[0-9]+}}
11557}
11558
11559uint64x1_t test_vcvtp_u64_f64(float64x1_t a) {
11560  // CHECK-LABEL: test_vcvtp_u64_f64
11561  return vcvtp_u64_f64(a);
11562  // CHECK: fcvtpu d{{[0-9]+}}, d{{[0-9]+}}
11563}
11564
11565int64x1_t test_vcvtm_s64_f64(float64x1_t a) {
11566  // CHECK-LABEL: test_vcvtm_s64_f64
11567  return vcvtm_s64_f64(a);
11568  // CHECK: fcvtms d{{[0-9]+}}, d{{[0-9]+}}
11569}
11570
11571uint64x1_t test_vcvtm_u64_f64(float64x1_t a) {
11572  // CHECK-LABEL: test_vcvtm_u64_f64
11573  return vcvtm_u64_f64(a);
11574  // CHECK: fcvtmu d{{[0-9]+}}, d{{[0-9]+}}
11575}
11576
11577int64x1_t test_vcvta_s64_f64(float64x1_t a) {
11578  // CHECK-LABEL: test_vcvta_s64_f64
11579  return vcvta_s64_f64(a);
11580  // CHECK: fcvtas d{{[0-9]+}}, d{{[0-9]+}}
11581}
11582
11583uint64x1_t test_vcvta_u64_f64(float64x1_t a) {
11584  // CHECK-LABEL: test_vcvta_u64_f64
11585  return vcvta_u64_f64(a);
11586  // CHECK: fcvtau d{{[0-9]+}}, d{{[0-9]+}}
11587}
11588
11589float64x1_t test_vcvt_f64_s64(int64x1_t a) {
11590  // CHECK-LABEL: test_vcvt_f64_s64
11591  return vcvt_f64_s64(a);
11592  // CHECK: scvtf d{{[0-9]+}}, {{[xd][0-9]+}}
11593}
11594
11595float64x1_t test_vcvt_f64_u64(uint64x1_t a) {
11596  // CHECK-LABEL: test_vcvt_f64_u64
11597  return vcvt_f64_u64(a);
11598  // CHECK: ucvtf d{{[0-9]+}}, {{[xd][0-9]+}}
11599}
11600
11601int64x1_t test_vcvt_n_s64_f64(float64x1_t a) {
11602  // CHECK-LABEL: test_vcvt_n_s64_f64
11603  return vcvt_n_s64_f64(a, 64);
11604  // CHECK: fcvtzs d{{[0-9]+}}, d{{[0-9]+}}, #64
11605}
11606
11607uint64x1_t test_vcvt_n_u64_f64(float64x1_t a) {
11608  // CHECK-LABEL: test_vcvt_n_u64_f64
11609  return vcvt_n_u64_f64(a, 64);
11610  // CHECK: fcvtzu d{{[0-9]+}}, d{{[0-9]+}}, #64
11611}
11612
11613float64x1_t test_vcvt_n_f64_s64(int64x1_t a) {
11614  // CHECK-LABEL: test_vcvt_n_f64_s64
11615  return vcvt_n_f64_s64(a, 64);
11616  // CHECK: scvtf d{{[0-9]+}}, d{{[0-9]+}}, #64
11617}
11618
11619float64x1_t test_vcvt_n_f64_u64(uint64x1_t a) {
11620  // CHECK-LABEL: test_vcvt_n_f64_u64
11621  return vcvt_n_f64_u64(a, 64);
11622  // CHECK: ucvtf d{{[0-9]+}}, d{{[0-9]+}}, #64
11623}
11624
11625float64x1_t test_vrndn_f64(float64x1_t a) {
11626  // CHECK-LABEL: test_vrndn_f64
11627  return vrndn_f64(a);
11628  // CHECK: frintn d{{[0-9]+}}, d{{[0-9]+}}
11629}
11630
11631float64x1_t test_vrnda_f64(float64x1_t a) {
11632  // CHECK-LABEL: test_vrnda_f64
11633  return vrnda_f64(a);
11634  // CHECK: frinta d{{[0-9]+}}, d{{[0-9]+}}
11635}
11636
11637float64x1_t test_vrndp_f64(float64x1_t a) {
11638  // CHECK-LABEL: test_vrndp_f64
11639  return vrndp_f64(a);
11640  // CHECK: frintp d{{[0-9]+}}, d{{[0-9]+}}
11641}
11642
11643float64x1_t test_vrndm_f64(float64x1_t a) {
11644  // CHECK-LABEL: test_vrndm_f64
11645  return vrndm_f64(a);
11646  // CHECK: frintm d{{[0-9]+}}, d{{[0-9]+}}
11647}
11648
11649float64x1_t test_vrndx_f64(float64x1_t a) {
11650  // CHECK-LABEL: test_vrndx_f64
11651  return vrndx_f64(a);
11652  // CHECK: frintx d{{[0-9]+}}, d{{[0-9]+}}
11653}
11654
11655float64x1_t test_vrnd_f64(float64x1_t a) {
11656  // CHECK-LABEL: test_vrnd_f64
11657  return vrnd_f64(a);
11658  // CHECK: frintz d{{[0-9]+}}, d{{[0-9]+}}
11659}
11660
11661float64x1_t test_vrndi_f64(float64x1_t a) {
11662  // CHECK-LABEL: test_vrndi_f64
11663  return vrndi_f64(a);
11664  // CHECK: frinti d{{[0-9]+}}, d{{[0-9]+}}
11665}
11666
11667float64x1_t test_vrsqrte_f64(float64x1_t a) {
11668  // CHECK-LABEL: test_vrsqrte_f64
11669  return vrsqrte_f64(a);
11670  // CHECK: frsqrte d{{[0-9]+}}, d{{[0-9]+}}
11671}
11672
11673float64x1_t test_vrecpe_f64(float64x1_t a) {
11674  // CHECK-LABEL: test_vrecpe_f64
11675  return vrecpe_f64(a);
11676  // CHECK: frecpe d{{[0-9]+}}, d{{[0-9]+}}
11677}
11678
11679float64x1_t test_vsqrt_f64(float64x1_t a) {
11680  // CHECK-LABEL: test_vsqrt_f64
11681  return vsqrt_f64(a);
11682  // CHECK: fsqrt d{{[0-9]+}}, d{{[0-9]+}}
11683}
11684
11685float64x1_t test_vrecps_f64(float64x1_t a, float64x1_t b) {
11686  // CHECK-LABEL: test_vrecps_f64
11687  return vrecps_f64(a, b);
11688  // CHECK: frecps d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11689}
11690
11691float64x1_t test_vrsqrts_f64(float64x1_t a, float64x1_t b) {
11692  // CHECK-LABEL: test_vrsqrts_f64
11693  return vrsqrts_f64(a, b);
11694  // CHECK: frsqrts d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
11695}
11696
11697int32_t test_vminv_s32(int32x2_t a) {
11698  // CHECK-LABEL: test_vminv_s32
11699  return vminv_s32(a);
11700  // CHECK: sminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
11701}
11702
11703uint32_t test_vminv_u32(uint32x2_t a) {
11704  // CHECK-LABEL: test_vminv_u32
11705  return vminv_u32(a);
11706  // CHECK: uminp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
11707}
11708
11709int32_t test_vmaxv_s32(int32x2_t a) {
11710  // CHECK-LABEL: test_vmaxv_s32
11711  return vmaxv_s32(a);
11712  // CHECK: smaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
11713}
11714
11715uint32_t test_vmaxv_u32(uint32x2_t a) {
11716  // CHECK-LABEL: test_vmaxv_u32
11717  return vmaxv_u32(a);
11718  // CHECK: umaxp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
11719}
11720
11721int32_t test_vaddv_s32(int32x2_t a) {
11722  // CHECK-LABEL: test_vaddv_s32
11723  return vaddv_s32(a);
11724  // CHECK: addp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
11725}
11726
11727uint32_t test_vaddv_u32(uint32x2_t a) {
11728  // CHECK-LABEL: test_vaddv_u32
11729  return vaddv_u32(a);
11730  // CHECK: addp {{v[0-9]+}}.2s, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s
11731}
11732
11733int64_t test_vaddlv_s32(int32x2_t a) {
11734  // CHECK-LABEL: test_vaddlv_s32
11735  return vaddlv_s32(a);
11736  // CHECK: saddlp {{v[0-9]+}}.1d, {{v[0-9]+}}.2s
11737}
11738
11739uint64_t test_vaddlv_u32(uint32x2_t a) {
11740  // CHECK-LABEL: test_vaddlv_u32
11741  return vaddlv_u32(a);
11742  // CHECK: uaddlp {{v[0-9]+}}.1d, {{v[0-9]+}}.2s
11743}
11744