• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
test_vadd_s8(int8x8_t v1,int8x8_t v2)9 int8x8_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 
test_vadd_s16(int16x4_t v1,int16x4_t v2)15 int16x4_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 
test_vadd_s32(int32x2_t v1,int32x2_t v2)21 int32x2_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 
test_vadd_s64(int64x1_t v1,int64x1_t v2)27 int64x1_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 
test_vadd_f32(float32x2_t v1,float32x2_t v2)33 float32x2_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 
test_vadd_u8(uint8x8_t v1,uint8x8_t v2)39 uint8x8_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 
test_vadd_u16(uint16x4_t v1,uint16x4_t v2)45 uint16x4_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 
test_vadd_u32(uint32x2_t v1,uint32x2_t v2)51 uint32x2_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 
test_vadd_u64(uint64x1_t v1,uint64x1_t v2)57 uint64x1_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 
test_vaddq_s8(int8x16_t v1,int8x16_t v2)63 int8x16_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 
test_vaddq_s16(int16x8_t v1,int16x8_t v2)69 int16x8_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 
test_vaddq_s32(int32x4_t v1,int32x4_t v2)75 int32x4_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 
test_vaddq_s64(int64x2_t v1,int64x2_t v2)81 int64x2_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 
test_vaddq_f32(float32x4_t v1,float32x4_t v2)87 float32x4_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 
test_vaddq_f64(float64x2_t v1,float64x2_t v2)93 float64x2_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 
test_vaddq_u8(uint8x16_t v1,uint8x16_t v2)99 uint8x16_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 
test_vaddq_u16(uint16x8_t v1,uint16x8_t v2)105 uint16x8_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 
test_vaddq_u32(uint32x4_t v1,uint32x4_t v2)111 uint32x4_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 
test_vaddq_u64(uint64x2_t v1,uint64x2_t v2)117 uint64x2_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 
test_vsub_s8(int8x8_t v1,int8x8_t v2)123 int8x8_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 }
test_vsub_s16(int16x4_t v1,int16x4_t v2)128 int16x4_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 }
test_vsub_s32(int32x2_t v1,int32x2_t v2)133 int32x2_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 
test_vsub_s64(int64x1_t v1,int64x1_t v2)139 int64x1_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 
test_vsub_f32(float32x2_t v1,float32x2_t v2)145 float32x2_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 
test_vsub_u8(uint8x8_t v1,uint8x8_t v2)151 uint8x8_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 
test_vsub_u16(uint16x4_t v1,uint16x4_t v2)157 uint16x4_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 
test_vsub_u32(uint32x2_t v1,uint32x2_t v2)163 uint32x2_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 
test_vsub_u64(uint64x1_t v1,uint64x1_t v2)169 uint64x1_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 
test_vsubq_s8(int8x16_t v1,int8x16_t v2)175 int8x16_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 
test_vsubq_s16(int16x8_t v1,int16x8_t v2)181 int16x8_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 
test_vsubq_s32(int32x4_t v1,int32x4_t v2)187 int32x4_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 
test_vsubq_s64(int64x2_t v1,int64x2_t v2)193 int64x2_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 
test_vsubq_f32(float32x4_t v1,float32x4_t v2)199 float32x4_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 
test_vsubq_f64(float64x2_t v1,float64x2_t v2)205 float64x2_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 
test_vsubq_u8(uint8x16_t v1,uint8x16_t v2)211 uint8x16_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 
test_vsubq_u16(uint16x8_t v1,uint16x8_t v2)217 uint16x8_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 
test_vsubq_u32(uint32x4_t v1,uint32x4_t v2)223 uint32x4_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 
test_vsubq_u64(uint64x2_t v1,uint64x2_t v2)229 uint64x2_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 
test_vmul_s8(int8x8_t v1,int8x8_t v2)235 int8x8_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 
test_vmul_s16(int16x4_t v1,int16x4_t v2)241 int16x4_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 
test_vmul_s32(int32x2_t v1,int32x2_t v2)247 int32x2_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 
test_vmul_f32(float32x2_t v1,float32x2_t v2)253 float32x2_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 
test_vmul_u8(uint8x8_t v1,uint8x8_t v2)260 uint8x8_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 
test_vmul_u16(uint16x4_t v1,uint16x4_t v2)266 uint16x4_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 
test_vmul_u32(uint32x2_t v1,uint32x2_t v2)272 uint32x2_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 
test_vmulq_s8(int8x16_t v1,int8x16_t v2)278 int8x16_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 
test_vmulq_s16(int16x8_t v1,int16x8_t v2)284 int16x8_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 
test_vmulq_s32(int32x4_t v1,int32x4_t v2)290 int32x4_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 
test_vmulq_u8(uint8x16_t v1,uint8x16_t v2)296 uint8x16_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 
test_vmulq_u16(uint16x8_t v1,uint16x8_t v2)302 uint16x8_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 
test_vmulq_u32(uint32x4_t v1,uint32x4_t v2)308 uint32x4_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 
test_vmulq_f32(float32x4_t v1,float32x4_t v2)314 float32x4_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 
test_vmulq_f64(float64x2_t v1,float64x2_t v2)320 float64x2_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 
test_vmul_p8(poly8x8_t v1,poly8x8_t v2)326 poly8x8_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 
test_vmulq_p8(poly8x16_t v1,poly8x16_t v2)332 poly8x16_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 
test_vmla_s8(int8x8_t v1,int8x8_t v2,int8x8_t v3)339 int8x8_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 
test_vmla_s16(int16x4_t v1,int16x4_t v2,int16x4_t v3)345 int8x8_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 
test_vmla_s32(int32x2_t v1,int32x2_t v2,int32x2_t v3)351 int32x2_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 
test_vmla_f32(float32x2_t v1,float32x2_t v2,float32x2_t v3)357 float32x2_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 
test_vmla_u8(uint8x8_t v1,uint8x8_t v2,uint8x8_t v3)363 uint8x8_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 
test_vmla_u16(uint16x4_t v1,uint16x4_t v2,uint16x4_t v3)369 uint16x4_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 
test_vmla_u32(uint32x2_t v1,uint32x2_t v2,uint32x2_t v3)375 uint32x2_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 
test_vmlaq_s8(int8x16_t v1,int8x16_t v2,int8x16_t v3)381 int8x16_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 
test_vmlaq_s16(int16x8_t v1,int16x8_t v2,int16x8_t v3)387 int16x8_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 
test_vmlaq_s32(int32x4_t v1,int32x4_t v2,int32x4_t v3)393 int32x4_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 
test_vmlaq_f32(float32x4_t v1,float32x4_t v2,float32x4_t v3)399 float32x4_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 
test_vmlaq_u8(uint8x16_t v1,uint8x16_t v2,uint8x16_t v3)405 uint8x16_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 
test_vmlaq_u16(uint16x8_t v1,uint16x8_t v2,uint16x8_t v3)411 uint16x8_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 
test_vmlaq_u32(uint32x4_t v1,uint32x4_t v2,uint32x4_t v3)417 uint32x4_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 
test_vmlaq_f64(float64x2_t v1,float64x2_t v2,float64x2_t v3)423 float64x2_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 
test_vmls_s8(int8x8_t v1,int8x8_t v2,int8x8_t v3)429 int8x8_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 
test_vmls_s16(int16x4_t v1,int16x4_t v2,int16x4_t v3)435 int8x8_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 
test_vmls_s32(int32x2_t v1,int32x2_t v2,int32x2_t v3)441 int32x2_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 
test_vmls_f32(float32x2_t v1,float32x2_t v2,float32x2_t v3)447 float32x2_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 
test_vmls_u8(uint8x8_t v1,uint8x8_t v2,uint8x8_t v3)453 uint8x8_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 
test_vmls_u16(uint16x4_t v1,uint16x4_t v2,uint16x4_t v3)459 uint16x4_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 
test_vmls_u32(uint32x2_t v1,uint32x2_t v2,uint32x2_t v3)465 uint32x2_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 }
test_vmlsq_s8(int8x16_t v1,int8x16_t v2,int8x16_t v3)470 int8x16_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 
test_vmlsq_s16(int16x8_t v1,int16x8_t v2,int16x8_t v3)476 int16x8_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 
test_vmlsq_s32(int32x4_t v1,int32x4_t v2,int32x4_t v3)482 int32x4_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 
test_vmlsq_f32(float32x4_t v1,float32x4_t v2,float32x4_t v3)488 float32x4_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 }
test_vmlsq_u8(uint8x16_t v1,uint8x16_t v2,uint8x16_t v3)493 uint8x16_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 
test_vmlsq_u16(uint16x8_t v1,uint16x8_t v2,uint16x8_t v3)499 uint16x8_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 
test_vmlsq_u32(uint32x4_t v1,uint32x4_t v2,uint32x4_t v3)505 uint32x4_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 
test_vmlsq_f64(float64x2_t v1,float64x2_t v2,float64x2_t v3)511 float64x2_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 }
test_vfma_f32(float32x2_t v1,float32x2_t v2,float32x2_t v3)516 float32x2_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 
test_vfmaq_f32(float32x4_t v1,float32x4_t v2,float32x4_t v3)522 float32x4_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 
test_vfmaq_f64(float64x2_t v1,float64x2_t v2,float64x2_t v3)528 float64x2_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 }
test_vfms_f32(float32x2_t v1,float32x2_t v2,float32x2_t v3)533 float32x2_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 
test_vfmsq_f32(float32x4_t v1,float32x4_t v2,float32x4_t v3)539 float32x4_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 
test_vfmsq_f64(float64x2_t v1,float64x2_t v2,float64x2_t v3)545 float64x2_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 
test_vdivq_f64(float64x2_t v1,float64x2_t v2)551 float64x2_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 
test_vdivq_f32(float32x4_t v1,float32x4_t v2)557 float32x4_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 
test_vdiv_f32(float32x2_t v1,float32x2_t v2)563 float32x2_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 
test_vaba_s8(int8x8_t v1,int8x8_t v2,int8x8_t v3)569 int8x8_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 
test_vaba_s16(int16x4_t v1,int16x4_t v2,int16x4_t v3)575 int16x4_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 
test_vaba_s32(int32x2_t v1,int32x2_t v2,int32x2_t v3)581 int32x2_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 
test_vaba_u8(uint8x8_t v1,uint8x8_t v2,uint8x8_t v3)587 uint8x8_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 
test_vaba_u16(uint16x4_t v1,uint16x4_t v2,uint16x4_t v3)593 uint16x4_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 
test_vaba_u32(uint32x2_t v1,uint32x2_t v2,uint32x2_t v3)599 uint32x2_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 
test_vabaq_s8(int8x16_t v1,int8x16_t v2,int8x16_t v3)605 int8x16_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 
test_vabaq_s16(int16x8_t v1,int16x8_t v2,int16x8_t v3)611 int16x8_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 
test_vabaq_s32(int32x4_t v1,int32x4_t v2,int32x4_t v3)617 int32x4_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 
test_vabaq_u8(uint8x16_t v1,uint8x16_t v2,uint8x16_t v3)623 uint8x16_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 
test_vabaq_u16(uint16x8_t v1,uint16x8_t v2,uint16x8_t v3)629 uint16x8_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 
test_vabaq_u32(uint32x4_t v1,uint32x4_t v2,uint32x4_t v3)635 uint32x4_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 
test_vabd_s8(int8x8_t v1,int8x8_t v2)641 int8x8_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 
test_vabd_s16(int16x4_t v1,int16x4_t v2)647 int16x4_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 
test_vabd_s32(int32x2_t v1,int32x2_t v2)653 int32x2_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 
test_vabd_u8(uint8x8_t v1,uint8x8_t v2)659 uint8x8_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 
test_vabd_u16(uint16x4_t v1,uint16x4_t v2)665 uint16x4_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 
test_vabd_u32(uint32x2_t v1,uint32x2_t v2)671 uint32x2_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 
test_vabd_f32(float32x2_t v1,float32x2_t v2)677 float32x2_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 
test_vabdq_s8(int8x16_t v1,int8x16_t v2)683 int8x16_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 
test_vabdq_s16(int16x8_t v1,int16x8_t v2)689 int16x8_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 
test_vabdq_s32(int32x4_t v1,int32x4_t v2)695 int32x4_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 
test_vabdq_u8(uint8x16_t v1,uint8x16_t v2)701 uint8x16_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 
test_vabdq_u16(uint16x8_t v1,uint16x8_t v2)707 uint16x8_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 
test_vabdq_u32(uint32x4_t v1,uint32x4_t v2)713 uint32x4_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 
test_vabdq_f32(float32x4_t v1,float32x4_t v2)719 float32x4_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 
test_vabdq_f64(float64x2_t v1,float64x2_t v2)725 float64x2_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 
test_vbsl_s8(uint8x8_t v1,int8x8_t v2,int8x8_t v3)732 int8x8_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 
test_vbsl_s16(uint16x4_t v1,int16x4_t v2,int16x4_t v3)738 int8x8_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 
test_vbsl_s32(uint32x2_t v1,int32x2_t v2,int32x2_t v3)744 int32x2_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 
test_vbsl_s64(uint64x1_t v1,uint64x1_t v2,uint64x1_t v3)750 uint64x1_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 
test_vbsl_u8(uint8x8_t v1,uint8x8_t v2,uint8x8_t v3)756 uint8x8_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 
test_vbsl_u16(uint16x4_t v1,uint16x4_t v2,uint16x4_t v3)762 uint16x4_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 
test_vbsl_u32(uint32x2_t v1,uint32x2_t v2,uint32x2_t v3)768 uint32x2_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 
test_vbsl_u64(uint64x1_t v1,uint64x1_t v2,uint64x1_t v3)774 uint64x1_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 
test_vbsl_f32(float32x2_t v1,float32x2_t v2,float32x2_t v3)780 float32x2_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 
test_vbsl_f64(uint64x1_t v1,float64x1_t v2,float64x1_t v3)786 float64x1_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 
test_vbsl_p8(uint8x8_t v1,poly8x8_t v2,poly8x8_t v3)792 poly8x8_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 
test_vbsl_p16(uint16x4_t v1,poly16x4_t v2,poly16x4_t v3)798 poly16x4_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 
test_vbslq_s8(uint8x16_t v1,int8x16_t v2,int8x16_t v3)804 int8x16_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 
test_vbslq_s16(uint16x8_t v1,int16x8_t v2,int16x8_t v3)810 int16x8_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 
test_vbslq_s32(uint32x4_t v1,int32x4_t v2,int32x4_t v3)816 int32x4_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 
test_vbslq_s64(uint64x2_t v1,int64x2_t v2,int64x2_t v3)822 int64x2_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 
test_vbslq_u8(uint8x16_t v1,uint8x16_t v2,uint8x16_t v3)828 uint8x16_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 
test_vbslq_u16(uint16x8_t v1,uint16x8_t v2,uint16x8_t v3)834 uint16x8_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 
test_vbslq_u32(uint32x4_t v1,int32x4_t v2,int32x4_t v3)840 int32x4_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 
test_vbslq_u64(uint64x2_t v1,uint64x2_t v2,uint64x2_t v3)846 uint64x2_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 
test_vbslq_f32(uint32x4_t v1,float32x4_t v2,float32x4_t v3)852 float32x4_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 
test_vbslq_p8(uint8x16_t v1,poly8x16_t v2,poly8x16_t v3)858 poly8x16_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 
test_vbslq_p16(uint16x8_t v1,poly16x8_t v2,poly16x8_t v3)864 poly16x8_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 
test_vbslq_f64(uint64x2_t v1,float64x2_t v2,float64x2_t v3)870 float64x2_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 
test_vrecps_f32(float32x2_t v1,float32x2_t v2)876 float32x2_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 
test_vrecpsq_f32(float32x4_t v1,float32x4_t v2)882 float32x4_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 
test_vrecpsq_f64(float64x2_t v1,float64x2_t v2)888 float64x2_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 
test_vrsqrts_f32(float32x2_t v1,float32x2_t v2)894 float32x2_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 
test_vrsqrtsq_f32(float32x4_t v1,float32x4_t v2)900 float32x4_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 
test_vrsqrtsq_f64(float64x2_t v1,float64x2_t v2)906 float64x2_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 
test_vcage_f32(float32x2_t v1,float32x2_t v2)912 uint32x2_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 
test_vcage_f64(float64x1_t a,float64x1_t b)918 uint64x1_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 
test_vcageq_f32(float32x4_t v1,float32x4_t v2)924 uint32x4_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 
test_vcageq_f64(float64x2_t v1,float64x2_t v2)930 uint64x2_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 
test_vcagt_f32(float32x2_t v1,float32x2_t v2)936 uint32x2_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 
test_vcagt_f64(float64x1_t a,float64x1_t b)942 uint64x1_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 
test_vcagtq_f32(float32x4_t v1,float32x4_t v2)948 uint32x4_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 
test_vcagtq_f64(float64x2_t v1,float64x2_t v2)954 uint64x2_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 
test_vcale_f32(float32x2_t v1,float32x2_t v2)960 uint32x2_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 
test_vcale_f64(float64x1_t a,float64x1_t b)967 uint64x1_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 
test_vcaleq_f32(float32x4_t v1,float32x4_t v2)973 uint32x4_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 
test_vcaleq_f64(float64x2_t v1,float64x2_t v2)980 uint64x2_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 
test_vcalt_f32(float32x2_t v1,float32x2_t v2)987 uint32x2_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 
test_vcalt_f64(float64x1_t a,float64x1_t b)994 uint64x1_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 
test_vcaltq_f32(float32x4_t v1,float32x4_t v2)1000 uint32x4_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 
test_vcaltq_f64(float64x2_t v1,float64x2_t v2)1007 uint64x2_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 
test_vtst_s8(int8x8_t v1,int8x8_t v2)1014 uint8x8_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 
test_vtst_s16(int16x4_t v1,int16x4_t v2)1020 uint16x4_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 
test_vtst_s32(int32x2_t v1,int32x2_t v2)1026 uint32x2_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 
test_vtst_u8(uint8x8_t v1,uint8x8_t v2)1032 uint8x8_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 
test_vtst_u16(uint16x4_t v1,uint16x4_t v2)1038 uint16x4_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 
test_vtst_u32(uint32x2_t v1,uint32x2_t v2)1044 uint32x2_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 
test_vtstq_s8(int8x16_t v1,int8x16_t v2)1050 uint8x16_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 
test_vtstq_s16(int16x8_t v1,int16x8_t v2)1056 uint16x8_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 
test_vtstq_s32(int32x4_t v1,int32x4_t v2)1062 uint32x4_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 
test_vtstq_u8(uint8x16_t v1,uint8x16_t v2)1068 uint8x16_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 
test_vtstq_u16(uint16x8_t v1,uint16x8_t v2)1074 uint16x8_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 
test_vtstq_u32(uint32x4_t v1,uint32x4_t v2)1080 uint32x4_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 
test_vtstq_s64(int64x2_t v1,int64x2_t v2)1086 uint64x2_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 
test_vtstq_u64(uint64x2_t v1,uint64x2_t v2)1092 uint64x2_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 
test_vtst_p8(poly8x8_t v1,poly8x8_t v2)1098 uint8x8_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 
test_vtst_p16(poly16x4_t v1,poly16x4_t v2)1104 uint16x4_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 
test_vtstq_p8(poly8x16_t v1,poly8x16_t v2)1110 uint8x16_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 
test_vtstq_p16(poly16x8_t v1,poly16x8_t v2)1116 uint16x8_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 
test_vtst_s64(int64x1_t a,int64x1_t b)1122 uint64x1_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 
test_vtst_u64(uint64x1_t a,uint64x1_t b)1128 uint64x1_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 
test_vceq_s8(int8x8_t v1,int8x8_t v2)1134 uint8x8_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 
test_vceq_s16(int16x4_t v1,int16x4_t v2)1140 uint16x4_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 
test_vceq_s32(int32x2_t v1,int32x2_t v2)1146 uint32x2_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 
test_vceq_s64(int64x1_t a,int64x1_t b)1152 uint64x1_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 
test_vceq_u64(uint64x1_t a,uint64x1_t b)1158 uint64x1_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 
test_vceq_f32(float32x2_t v1,float32x2_t v2)1164 uint32x2_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 
test_vceq_f64(float64x1_t a,float64x1_t b)1170 uint64x1_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 
test_vceq_u8(uint8x8_t v1,uint8x8_t v2)1176 uint8x8_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 
test_vceq_u16(uint16x4_t v1,uint16x4_t v2)1182 uint16x4_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 
test_vceq_u32(uint32x2_t v1,uint32x2_t v2)1188 uint32x2_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 
test_vceq_p8(poly8x8_t v1,poly8x8_t v2)1194 uint8x8_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 
test_vceqq_s8(int8x16_t v1,int8x16_t v2)1200 uint8x16_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 
test_vceqq_s16(int16x8_t v1,int16x8_t v2)1206 uint16x8_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 
test_vceqq_s32(int32x4_t v1,int32x4_t v2)1212 uint32x4_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 
test_vceqq_f32(float32x4_t v1,float32x4_t v2)1218 uint32x4_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 
test_vceqq_u8(uint8x16_t v1,uint8x16_t v2)1224 uint8x16_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 
test_vceqq_u16(uint16x8_t v1,uint16x8_t v2)1230 uint16x8_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 
test_vceqq_u32(uint32x4_t v1,uint32x4_t v2)1236 uint32x4_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 
test_vceqq_p8(poly8x16_t v1,poly8x16_t v2)1242 uint8x16_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 
test_vceqq_s64(int64x2_t v1,int64x2_t v2)1249 uint64x2_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 
test_vceqq_u64(uint64x2_t v1,uint64x2_t v2)1255 uint64x2_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 
test_vceqq_f64(float64x2_t v1,float64x2_t v2)1261 uint64x2_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 }
test_vcge_s8(int8x8_t v1,int8x8_t v2)1266 uint8x8_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 
test_vcge_s16(int16x4_t v1,int16x4_t v2)1272 uint16x4_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 
test_vcge_s32(int32x2_t v1,int32x2_t v2)1278 uint32x2_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 
test_vcge_s64(int64x1_t a,int64x1_t b)1284 uint64x1_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 
test_vcge_u64(uint64x1_t a,uint64x1_t b)1290 uint64x1_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 
test_vcge_f32(float32x2_t v1,float32x2_t v2)1296 uint32x2_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 
test_vcge_f64(float64x1_t a,float64x1_t b)1302 uint64x1_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 
test_vcge_u8(uint8x8_t v1,uint8x8_t v2)1308 uint8x8_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 
test_vcge_u16(uint16x4_t v1,uint16x4_t v2)1314 uint16x4_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 
test_vcge_u32(uint32x2_t v1,uint32x2_t v2)1320 uint32x2_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 
test_vcgeq_s8(int8x16_t v1,int8x16_t v2)1326 uint8x16_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 
test_vcgeq_s16(int16x8_t v1,int16x8_t v2)1332 uint16x8_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 
test_vcgeq_s32(int32x4_t v1,int32x4_t v2)1338 uint32x4_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 
test_vcgeq_f32(float32x4_t v1,float32x4_t v2)1344 uint32x4_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 
test_vcgeq_u8(uint8x16_t v1,uint8x16_t v2)1350 uint8x16_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 
test_vcgeq_u16(uint16x8_t v1,uint16x8_t v2)1356 uint16x8_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 
test_vcgeq_u32(uint32x4_t v1,uint32x4_t v2)1362 uint32x4_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 
test_vcgeq_s64(int64x2_t v1,int64x2_t v2)1368 uint64x2_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 
test_vcgeq_u64(uint64x2_t v1,uint64x2_t v2)1374 uint64x2_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 
test_vcgeq_f64(float64x2_t v1,float64x2_t v2)1380 uint64x2_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.
test_vcle_s8(int8x8_t v1,int8x8_t v2)1389 uint8x8_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 
test_vcle_s16(int16x4_t v1,int16x4_t v2)1395 uint16x4_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 
test_vcle_s32(int32x2_t v1,int32x2_t v2)1401 uint32x2_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 
test_vcle_s64(int64x1_t a,int64x1_t b)1407 uint64x1_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 
test_vcle_u64(uint64x1_t a,uint64x1_t b)1413 uint64x1_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 
test_vcle_f32(float32x2_t v1,float32x2_t v2)1419 uint32x2_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 
test_vcle_f64(float64x1_t a,float64x1_t b)1425 uint64x1_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 
test_vcle_u8(uint8x8_t v1,uint8x8_t v2)1431 uint8x8_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 
test_vcle_u16(uint16x4_t v1,uint16x4_t v2)1437 uint16x4_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 
test_vcle_u32(uint32x2_t v1,uint32x2_t v2)1443 uint32x2_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 
test_vcleq_s8(int8x16_t v1,int8x16_t v2)1449 uint8x16_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 
test_vcleq_s16(int16x8_t v1,int16x8_t v2)1455 uint16x8_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 
test_vcleq_s32(int32x4_t v1,int32x4_t v2)1461 uint32x4_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 
test_vcleq_f32(float32x4_t v1,float32x4_t v2)1467 uint32x4_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 
test_vcleq_u8(uint8x16_t v1,uint8x16_t v2)1473 uint8x16_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 
test_vcleq_u16(uint16x8_t v1,uint16x8_t v2)1479 uint16x8_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 
test_vcleq_u32(uint32x4_t v1,uint32x4_t v2)1485 uint32x4_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 
test_vcleq_s64(int64x2_t v1,int64x2_t v2)1491 uint64x2_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 
test_vcleq_u64(uint64x2_t v1,uint64x2_t v2)1497 uint64x2_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 
test_vcleq_f64(float64x2_t v1,float64x2_t v2)1503 uint64x2_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 
test_vcgt_s8(int8x8_t v1,int8x8_t v2)1510 uint8x8_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 
test_vcgt_s16(int16x4_t v1,int16x4_t v2)1516 uint16x4_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 
test_vcgt_s32(int32x2_t v1,int32x2_t v2)1522 uint32x2_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 
test_vcgt_s64(int64x1_t a,int64x1_t b)1528 uint64x1_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 
test_vcgt_u64(uint64x1_t a,uint64x1_t b)1534 uint64x1_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 
test_vcgt_f32(float32x2_t v1,float32x2_t v2)1540 uint32x2_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 
test_vcgt_f64(float64x1_t a,float64x1_t b)1546 uint64x1_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 
test_vcgt_u8(uint8x8_t v1,uint8x8_t v2)1552 uint8x8_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 
test_vcgt_u16(uint16x4_t v1,uint16x4_t v2)1558 uint16x4_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 
test_vcgt_u32(uint32x2_t v1,uint32x2_t v2)1564 uint32x2_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 
test_vcgtq_s8(int8x16_t v1,int8x16_t v2)1570 uint8x16_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 
test_vcgtq_s16(int16x8_t v1,int16x8_t v2)1576 uint16x8_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 
test_vcgtq_s32(int32x4_t v1,int32x4_t v2)1582 uint32x4_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 
test_vcgtq_f32(float32x4_t v1,float32x4_t v2)1588 uint32x4_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 
test_vcgtq_u8(uint8x16_t v1,uint8x16_t v2)1594 uint8x16_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 
test_vcgtq_u16(uint16x8_t v1,uint16x8_t v2)1600 uint16x8_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 
test_vcgtq_u32(uint32x4_t v1,uint32x4_t v2)1606 uint32x4_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 
test_vcgtq_s64(int64x2_t v1,int64x2_t v2)1612 uint64x2_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 
test_vcgtq_u64(uint64x2_t v1,uint64x2_t v2)1618 uint64x2_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 
test_vcgtq_f64(float64x2_t v1,float64x2_t v2)1624 uint64x2_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 
test_vclt_s8(int8x8_t v1,int8x8_t v2)1635 uint8x8_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 
test_vclt_s16(int16x4_t v1,int16x4_t v2)1641 uint16x4_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 
test_vclt_s32(int32x2_t v1,int32x2_t v2)1647 uint32x2_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 
test_vclt_s64(int64x1_t a,int64x1_t b)1653 uint64x1_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 
test_vclt_u64(uint64x1_t a,uint64x1_t b)1659 uint64x1_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 
test_vclt_f32(float32x2_t v1,float32x2_t v2)1665 uint32x2_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 
test_vclt_f64(float64x1_t a,float64x1_t b)1671 uint64x1_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 
test_vclt_u8(uint8x8_t v1,uint8x8_t v2)1677 uint8x8_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 
test_vclt_u16(uint16x4_t v1,uint16x4_t v2)1683 uint16x4_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 
test_vclt_u32(uint32x2_t v1,uint32x2_t v2)1689 uint32x2_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 
test_vcltq_s8(int8x16_t v1,int8x16_t v2)1695 uint8x16_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 
test_vcltq_s16(int16x8_t v1,int16x8_t v2)1701 uint16x8_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 
test_vcltq_s32(int32x4_t v1,int32x4_t v2)1707 uint32x4_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 
test_vcltq_f32(float32x4_t v1,float32x4_t v2)1713 uint32x4_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 
test_vcltq_u8(uint8x16_t v1,uint8x16_t v2)1719 uint8x16_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 
test_vcltq_u16(uint16x8_t v1,uint16x8_t v2)1725 uint16x8_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 
test_vcltq_u32(uint32x4_t v1,uint32x4_t v2)1731 uint32x4_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 
test_vcltq_s64(int64x2_t v1,int64x2_t v2)1737 uint64x2_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 
test_vcltq_u64(uint64x2_t v1,uint64x2_t v2)1743 uint64x2_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 
test_vcltq_f64(float64x2_t v1,float64x2_t v2)1749 uint64x2_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 
test_vhadd_s8(int8x8_t v1,int8x8_t v2)1756 int8x8_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 
test_vhadd_s16(int16x4_t v1,int16x4_t v2)1762 int16x4_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 
test_vhadd_s32(int32x2_t v1,int32x2_t v2)1768 int32x2_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 
test_vhadd_u8(uint8x8_t v1,uint8x8_t v2)1774 uint8x8_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 
test_vhadd_u16(uint16x4_t v1,uint16x4_t v2)1780 uint16x4_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 
test_vhadd_u32(uint32x2_t v1,uint32x2_t v2)1786 uint32x2_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 
test_vhaddq_s8(int8x16_t v1,int8x16_t v2)1792 int8x16_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 
test_vhaddq_s16(int16x8_t v1,int16x8_t v2)1798 int16x8_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 
test_vhaddq_s32(int32x4_t v1,int32x4_t v2)1804 int32x4_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 
test_vhaddq_u8(uint8x16_t v1,uint8x16_t v2)1810 uint8x16_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 
test_vhaddq_u16(uint16x8_t v1,uint16x8_t v2)1816 uint16x8_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 
test_vhaddq_u32(uint32x4_t v1,uint32x4_t v2)1822 uint32x4_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 
test_vhsub_s8(int8x8_t v1,int8x8_t v2)1829 int8x8_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 
test_vhsub_s16(int16x4_t v1,int16x4_t v2)1835 int16x4_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 
test_vhsub_s32(int32x2_t v1,int32x2_t v2)1841 int32x2_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 
test_vhsub_u8(uint8x8_t v1,uint8x8_t v2)1847 uint8x8_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 
test_vhsub_u16(uint16x4_t v1,uint16x4_t v2)1853 uint16x4_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 
test_vhsub_u32(uint32x2_t v1,uint32x2_t v2)1859 uint32x2_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 
test_vhsubq_s8(int8x16_t v1,int8x16_t v2)1865 int8x16_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 
test_vhsubq_s16(int16x8_t v1,int16x8_t v2)1871 int16x8_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 
test_vhsubq_s32(int32x4_t v1,int32x4_t v2)1877 int32x4_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 
test_vhsubq_u8(uint8x16_t v1,uint8x16_t v2)1883 uint8x16_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 
test_vhsubq_u16(uint16x8_t v1,uint16x8_t v2)1889 uint16x8_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 
test_vhsubq_u32(uint32x4_t v1,uint32x4_t v2)1895 uint32x4_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 
test_vrhadd_s8(int8x8_t v1,int8x8_t v2)1902 int8x8_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 
test_vrhadd_s16(int16x4_t v1,int16x4_t v2)1908 int16x4_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 
test_vrhadd_s32(int32x2_t v1,int32x2_t v2)1914 int32x2_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 
test_vrhadd_u8(uint8x8_t v1,uint8x8_t v2)1920 uint8x8_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 
test_vrhadd_u16(uint16x4_t v1,uint16x4_t v2)1926 uint16x4_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 
test_vrhadd_u32(uint32x2_t v1,uint32x2_t v2)1932 uint32x2_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 
test_vrhaddq_s8(int8x16_t v1,int8x16_t v2)1938 int8x16_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 
test_vrhaddq_s16(int16x8_t v1,int16x8_t v2)1944 int16x8_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 
test_vrhaddq_s32(int32x4_t v1,int32x4_t v2)1950 int32x4_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 
test_vrhaddq_u8(uint8x16_t v1,uint8x16_t v2)1956 uint8x16_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 
test_vrhaddq_u16(uint16x8_t v1,uint16x8_t v2)1962 uint16x8_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 
test_vrhaddq_u32(uint32x4_t v1,uint32x4_t v2)1968 uint32x4_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 }
test_vqadd_s8(int8x8_t a,int8x8_t b)1973 int8x8_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 
test_vqadd_s16(int16x4_t a,int16x4_t b)1979 int16x4_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 
test_vqadd_s32(int32x2_t a,int32x2_t b)1985 int32x2_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 
test_vqadd_s64(int64x1_t a,int64x1_t b)1991 int64x1_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 
test_vqadd_u8(uint8x8_t a,uint8x8_t b)1997 uint8x8_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 
test_vqadd_u16(uint16x4_t a,uint16x4_t b)2003 uint16x4_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 
test_vqadd_u32(uint32x2_t a,uint32x2_t b)2009 uint32x2_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 
test_vqadd_u64(uint64x1_t a,uint64x1_t b)2015 uint64x1_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 
test_vqaddq_s8(int8x16_t a,int8x16_t b)2021 int8x16_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 
test_vqaddq_s16(int16x8_t a,int16x8_t b)2027 int16x8_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 
test_vqaddq_s32(int32x4_t a,int32x4_t b)2033 int32x4_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 
test_vqaddq_s64(int64x2_t a,int64x2_t b)2039 int64x2_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 
test_vqaddq_u8(uint8x16_t a,uint8x16_t b)2045 uint8x16_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 
test_vqaddq_u16(uint16x8_t a,uint16x8_t b)2051 uint16x8_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 
test_vqaddq_u32(uint32x4_t a,uint32x4_t b)2057 uint32x4_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 
test_vqaddq_u64(uint64x2_t a,uint64x2_t b)2063 uint64x2_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 
test_vqsub_s8(int8x8_t a,int8x8_t b)2070 int8x8_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 
test_vqsub_s16(int16x4_t a,int16x4_t b)2076 int16x4_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 
test_vqsub_s32(int32x2_t a,int32x2_t b)2082 int32x2_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 
test_vqsub_s64(int64x1_t a,int64x1_t b)2088 int64x1_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 
test_vqsub_u8(uint8x8_t a,uint8x8_t b)2094 uint8x8_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 
test_vqsub_u16(uint16x4_t a,uint16x4_t b)2100 uint16x4_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 
test_vqsub_u32(uint32x2_t a,uint32x2_t b)2106 uint32x2_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 
test_vqsub_u64(uint64x1_t a,uint64x1_t b)2112 uint64x1_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 
test_vqsubq_s8(int8x16_t a,int8x16_t b)2118 int8x16_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 
test_vqsubq_s16(int16x8_t a,int16x8_t b)2124 int16x8_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 
test_vqsubq_s32(int32x4_t a,int32x4_t b)2130 int32x4_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 
test_vqsubq_s64(int64x2_t a,int64x2_t b)2136 int64x2_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 
test_vqsubq_u8(uint8x16_t a,uint8x16_t b)2142 uint8x16_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 
test_vqsubq_u16(uint16x8_t a,uint16x8_t b)2148 uint16x8_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 
test_vqsubq_u32(uint32x4_t a,uint32x4_t b)2154 uint32x4_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 
test_vqsubq_u64(uint64x2_t a,uint64x2_t b)2160 uint64x2_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 
test_vshl_s8(int8x8_t a,int8x8_t b)2167 int8x8_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 
test_vshl_s16(int16x4_t a,int16x4_t b)2173 int16x4_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 
test_vshl_s32(int32x2_t a,int32x2_t b)2179 int32x2_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 
test_vshl_s64(int64x1_t a,int64x1_t b)2185 int64x1_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 
test_vshl_u8(uint8x8_t a,int8x8_t b)2191 uint8x8_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 
test_vshl_u16(uint16x4_t a,int16x4_t b)2197 uint16x4_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 
test_vshl_u32(uint32x2_t a,int32x2_t b)2203 uint32x2_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 
test_vshl_u64(uint64x1_t a,int64x1_t b)2209 uint64x1_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 
test_vshlq_s8(int8x16_t a,int8x16_t b)2215 int8x16_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 
test_vshlq_s16(int16x8_t a,int16x8_t b)2221 int16x8_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 
test_vshlq_s32(int32x4_t a,int32x4_t b)2227 int32x4_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 
test_vshlq_s64(int64x2_t a,int64x2_t b)2233 int64x2_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 
test_vshlq_u8(uint8x16_t a,int8x16_t b)2239 uint8x16_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 
test_vshlq_u16(uint16x8_t a,int16x8_t b)2245 uint16x8_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 
test_vshlq_u32(uint32x4_t a,int32x4_t b)2251 uint32x4_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 
test_vshlq_u64(uint64x2_t a,int64x2_t b)2257 uint64x2_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 
test_vqshl_s8(int8x8_t a,int8x8_t b)2264 int8x8_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 
test_vqshl_s16(int16x4_t a,int16x4_t b)2270 int16x4_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 
test_vqshl_s32(int32x2_t a,int32x2_t b)2276 int32x2_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 
test_vqshl_s64(int64x1_t a,int64x1_t b)2282 int64x1_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 
test_vqshl_u8(uint8x8_t a,int8x8_t b)2288 uint8x8_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 
test_vqshl_u16(uint16x4_t a,int16x4_t b)2294 uint16x4_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 
test_vqshl_u32(uint32x2_t a,int32x2_t b)2300 uint32x2_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 
test_vqshl_u64(uint64x1_t a,int64x1_t b)2306 uint64x1_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 
test_vqshlq_s8(int8x16_t a,int8x16_t b)2312 int8x16_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 
test_vqshlq_s16(int16x8_t a,int16x8_t b)2318 int16x8_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 
test_vqshlq_s32(int32x4_t a,int32x4_t b)2324 int32x4_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 
test_vqshlq_s64(int64x2_t a,int64x2_t b)2330 int64x2_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 
test_vqshlq_u8(uint8x16_t a,int8x16_t b)2336 uint8x16_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 
test_vqshlq_u16(uint16x8_t a,int16x8_t b)2342 uint16x8_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 
test_vqshlq_u32(uint32x4_t a,int32x4_t b)2348 uint32x4_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 
test_vqshlq_u64(uint64x2_t a,int64x2_t b)2354 uint64x2_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 
test_vrshl_s8(int8x8_t a,int8x8_t b)2360 int8x8_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 
test_vrshl_s16(int16x4_t a,int16x4_t b)2366 int16x4_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 
test_vrshl_s32(int32x2_t a,int32x2_t b)2372 int32x2_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 
test_vrshl_s64(int64x1_t a,int64x1_t b)2378 int64x1_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 
test_vrshl_u8(uint8x8_t a,int8x8_t b)2384 uint8x8_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 
test_vrshl_u16(uint16x4_t a,int16x4_t b)2390 uint16x4_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 
test_vrshl_u32(uint32x2_t a,int32x2_t b)2396 uint32x2_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 
test_vrshl_u64(uint64x1_t a,int64x1_t b)2402 uint64x1_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 
test_vrshlq_s8(int8x16_t a,int8x16_t b)2408 int8x16_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 
test_vrshlq_s16(int16x8_t a,int16x8_t b)2414 int16x8_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 
test_vrshlq_s32(int32x4_t a,int32x4_t b)2420 int32x4_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 
test_vrshlq_s64(int64x2_t a,int64x2_t b)2426 int64x2_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 
test_vrshlq_u8(uint8x16_t a,int8x16_t b)2432 uint8x16_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 
test_vrshlq_u16(uint16x8_t a,int16x8_t b)2438 uint16x8_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 
test_vrshlq_u32(uint32x4_t a,int32x4_t b)2444 uint32x4_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 
test_vrshlq_u64(uint64x2_t a,int64x2_t b)2450 uint64x2_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 
test_vqrshl_s8(int8x8_t a,int8x8_t b)2457 int8x8_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 
test_vqrshl_s16(int16x4_t a,int16x4_t b)2463 int16x4_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 
test_vqrshl_s32(int32x2_t a,int32x2_t b)2469 int32x2_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 
test_vqrshl_s64(int64x1_t a,int64x1_t b)2475 int64x1_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 
test_vqrshl_u8(uint8x8_t a,int8x8_t b)2481 uint8x8_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 
test_vqrshl_u16(uint16x4_t a,int16x4_t b)2487 uint16x4_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 
test_vqrshl_u32(uint32x2_t a,int32x2_t b)2493 uint32x2_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 
test_vqrshl_u64(uint64x1_t a,int64x1_t b)2499 uint64x1_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 
test_vqrshlq_s8(int8x16_t a,int8x16_t b)2505 int8x16_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 
test_vqrshlq_s16(int16x8_t a,int16x8_t b)2511 int16x8_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 
test_vqrshlq_s32(int32x4_t a,int32x4_t b)2517 int32x4_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 
test_vqrshlq_s64(int64x2_t a,int64x2_t b)2523 int64x2_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
test_vqrshlq_u8(uint8x16_t a,int8x16_t b)2530 uint8x16_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 
test_vqrshlq_u16(uint16x8_t a,int16x8_t b)2535 uint16x8_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 
test_vqrshlq_u32(uint32x4_t a,int32x4_t b)2541 uint32x4_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 
test_vqrshlq_u64(uint64x2_t a,int64x2_t b)2547 uint64x2_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 
test_vsli_n_p64(poly64x1_t a,poly64x1_t b)2553 poly64x1_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 
test_vsliq_n_p64(poly64x2_t a,poly64x2_t b)2559 poly64x2_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 
test_vmax_s8(int8x8_t a,int8x8_t b)2565 int8x8_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 
test_vmax_s16(int16x4_t a,int16x4_t b)2571 int16x4_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 
test_vmax_s32(int32x2_t a,int32x2_t b)2577 int32x2_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 
test_vmax_u8(uint8x8_t a,uint8x8_t b)2583 uint8x8_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 
test_vmax_u16(uint16x4_t a,uint16x4_t b)2589 uint16x4_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 
test_vmax_u32(uint32x2_t a,uint32x2_t b)2595 uint32x2_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 
test_vmax_f32(float32x2_t a,float32x2_t b)2601 float32x2_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 
test_vmaxq_s8(int8x16_t a,int8x16_t b)2607 int8x16_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 
test_vmaxq_s16(int16x8_t a,int16x8_t b)2613 int16x8_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 
test_vmaxq_s32(int32x4_t a,int32x4_t b)2619 int32x4_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 
test_vmaxq_u8(uint8x16_t a,uint8x16_t b)2625 uint8x16_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 
test_vmaxq_u16(uint16x8_t a,uint16x8_t b)2631 uint16x8_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 
test_vmaxq_u32(uint32x4_t a,uint32x4_t b)2637 uint32x4_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 
test_vmaxq_f32(float32x4_t a,float32x4_t b)2643 float32x4_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 
test_vmaxq_f64(float64x2_t a,float64x2_t b)2649 float64x2_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 
test_vmin_s8(int8x8_t a,int8x8_t b)2656 int8x8_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 
test_vmin_s16(int16x4_t a,int16x4_t b)2662 int16x4_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 
test_vmin_s32(int32x2_t a,int32x2_t b)2668 int32x2_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 
test_vmin_u8(uint8x8_t a,uint8x8_t b)2674 uint8x8_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 
test_vmin_u16(uint16x4_t a,uint16x4_t b)2680 uint16x4_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 
test_vmin_u32(uint32x2_t a,uint32x2_t b)2686 uint32x2_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 
test_vmin_f32(float32x2_t a,float32x2_t b)2692 float32x2_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 
test_vminq_s8(int8x16_t a,int8x16_t b)2698 int8x16_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 
test_vminq_s16(int16x8_t a,int16x8_t b)2704 int16x8_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 
test_vminq_s32(int32x4_t a,int32x4_t b)2710 int32x4_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 
test_vminq_u8(uint8x16_t a,uint8x16_t b)2716 uint8x16_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 
test_vminq_u16(uint16x8_t a,uint16x8_t b)2722 uint16x8_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 
test_vminq_u32(uint32x4_t a,uint32x4_t b)2728 uint32x4_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 
test_vminq_f32(float32x4_t a,float32x4_t b)2734 float32x4_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 
test_vminq_f64(float64x2_t a,float64x2_t b)2740 float64x2_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 
test_vmaxnm_f32(float32x2_t a,float32x2_t b)2746 float32x2_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 
test_vmaxnmq_f32(float32x4_t a,float32x4_t b)2752 float32x4_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 
test_vmaxnmq_f64(float64x2_t a,float64x2_t b)2758 float64x2_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 
test_vminnm_f32(float32x2_t a,float32x2_t b)2764 float32x2_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 
test_vminnmq_f32(float32x4_t a,float32x4_t b)2770 float32x4_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 
test_vminnmq_f64(float64x2_t a,float64x2_t b)2776 float64x2_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 
test_vpmax_s8(int8x8_t a,int8x8_t b)2782 int8x8_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 
test_vpmax_s16(int16x4_t a,int16x4_t b)2788 int16x4_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 
test_vpmax_s32(int32x2_t a,int32x2_t b)2794 int32x2_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 
test_vpmax_u8(uint8x8_t a,uint8x8_t b)2800 uint8x8_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 
test_vpmax_u16(uint16x4_t a,uint16x4_t b)2806 uint16x4_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 
test_vpmax_u32(uint32x2_t a,uint32x2_t b)2812 uint32x2_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 
test_vpmax_f32(float32x2_t a,float32x2_t b)2818 float32x2_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 
test_vpmaxq_s8(int8x16_t a,int8x16_t b)2824 int8x16_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 
test_vpmaxq_s16(int16x8_t a,int16x8_t b)2830 int16x8_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 
test_vpmaxq_s32(int32x4_t a,int32x4_t b)2836 int32x4_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 
test_vpmaxq_u8(uint8x16_t a,uint8x16_t b)2842 uint8x16_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 
test_vpmaxq_u16(uint16x8_t a,uint16x8_t b)2848 uint16x8_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 
test_vpmaxq_u32(uint32x4_t a,uint32x4_t b)2854 uint32x4_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 
test_vpmaxq_f32(float32x4_t a,float32x4_t b)2860 float32x4_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 
test_vpmaxq_f64(float64x2_t a,float64x2_t b)2866 float64x2_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 
test_vpmin_s8(int8x8_t a,int8x8_t b)2872 int8x8_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 
test_vpmin_s16(int16x4_t a,int16x4_t b)2878 int16x4_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 
test_vpmin_s32(int32x2_t a,int32x2_t b)2884 int32x2_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 
test_vpmin_u8(uint8x8_t a,uint8x8_t b)2890 uint8x8_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 
test_vpmin_u16(uint16x4_t a,uint16x4_t b)2896 uint16x4_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 
test_vpmin_u32(uint32x2_t a,uint32x2_t b)2902 uint32x2_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 
test_vpmin_f32(float32x2_t a,float32x2_t b)2908 float32x2_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 
test_vpminq_s8(int8x16_t a,int8x16_t b)2914 int8x16_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 
test_vpminq_s16(int16x8_t a,int16x8_t b)2920 int16x8_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 
test_vpminq_s32(int32x4_t a,int32x4_t b)2926 int32x4_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 
test_vpminq_u8(uint8x16_t a,uint8x16_t b)2932 uint8x16_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 
test_vpminq_u16(uint16x8_t a,uint16x8_t b)2938 uint16x8_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 
test_vpminq_u32(uint32x4_t a,uint32x4_t b)2944 uint32x4_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 
test_vpminq_f32(float32x4_t a,float32x4_t b)2950 float32x4_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 
test_vpminq_f64(float64x2_t a,float64x2_t b)2956 float64x2_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 
test_vpmaxnm_f32(float32x2_t a,float32x2_t b)2962 float32x2_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 
test_vpmaxnmq_f32(float32x4_t a,float32x4_t b)2968 float32x4_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 
test_vpmaxnmq_f64(float64x2_t a,float64x2_t b)2974 float64x2_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 
test_vpminnm_f32(float32x2_t a,float32x2_t b)2980 float32x2_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 
test_vpminnmq_f32(float32x4_t a,float32x4_t b)2986 float32x4_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 
test_vpminnmq_f64(float64x2_t a,float64x2_t b)2992 float64x2_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 
test_vpadd_s8(int8x8_t a,int8x8_t b)2998 int8x8_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 
test_vpadd_s16(int16x4_t a,int16x4_t b)3004 int16x4_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 
test_vpadd_s32(int32x2_t a,int32x2_t b)3010 int32x2_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 
test_vpadd_u8(uint8x8_t a,uint8x8_t b)3016 uint8x8_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 
test_vpadd_u16(uint16x4_t a,uint16x4_t b)3022 uint16x4_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 
test_vpadd_u32(uint32x2_t a,uint32x2_t b)3028 uint32x2_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 
test_vpadd_f32(float32x2_t a,float32x2_t b)3034 float32x2_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 
test_vpaddq_s8(int8x16_t a,int8x16_t b)3040 int8x16_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 
test_vpaddq_s16(int16x8_t a,int16x8_t b)3046 int16x8_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 
test_vpaddq_s32(int32x4_t a,int32x4_t b)3052 int32x4_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 
test_vpaddq_u8(uint8x16_t a,uint8x16_t b)3058 uint8x16_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 
test_vpaddq_u16(uint16x8_t a,uint16x8_t b)3064 uint16x8_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 
test_vpaddq_u32(uint32x4_t a,uint32x4_t b)3070 uint32x4_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 
test_vpaddq_f32(float32x4_t a,float32x4_t b)3076 float32x4_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 
test_vpaddq_f64(float64x2_t a,float64x2_t b)3082 float64x2_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 
test_vqdmulh_s16(int16x4_t a,int16x4_t b)3088 int16x4_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 
test_vqdmulh_s32(int32x2_t a,int32x2_t b)3094 int32x2_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 
test_vqdmulhq_s16(int16x8_t a,int16x8_t b)3100 int16x8_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 
test_vqdmulhq_s32(int32x4_t a,int32x4_t b)3106 int32x4_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 
test_vqrdmulh_s16(int16x4_t a,int16x4_t b)3112 int16x4_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 
test_vqrdmulh_s32(int32x2_t a,int32x2_t b)3118 int32x2_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 
test_vqrdmulhq_s16(int16x8_t a,int16x8_t b)3124 int16x8_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 
test_vqrdmulhq_s32(int32x4_t a,int32x4_t b)3130 int32x4_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 
test_vmulx_f32(float32x2_t a,float32x2_t b)3136 float32x2_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 
test_vmulxq_f32(float32x4_t a,float32x4_t b)3142 float32x4_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 
test_vmulxq_f64(float64x2_t a,float64x2_t b)3148 float64x2_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 
test_vshl_n_s8(int8x8_t a)3154 int8x8_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 
test_vshl_n_s16(int16x4_t a)3160 int16x4_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 
test_vshl_n_s32(int32x2_t a)3166 int32x2_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 
test_vshlq_n_s8(int8x16_t a)3172 int8x16_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 
test_vshlq_n_s16(int16x8_t a)3178 int16x8_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 
test_vshlq_n_s32(int32x4_t a)3184 int32x4_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 
test_vshlq_n_s64(int64x2_t a)3190 int64x2_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 
test_vshl_n_u8(int8x8_t a)3196 int8x8_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 
test_vshl_n_u16(int16x4_t a)3202 int16x4_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 
test_vshl_n_u32(int32x2_t a)3208 int32x2_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 
test_vshlq_n_u8(int8x16_t a)3214 int8x16_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 
test_vshlq_n_u16(int16x8_t a)3220 int16x8_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 
test_vshlq_n_u32(int32x4_t a)3226 int32x4_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 
test_vshlq_n_u64(int64x2_t a)3232 int64x2_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 
test_vshr_n_s8(int8x8_t a)3238 int8x8_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 
test_vshr_n_s16(int16x4_t a)3244 int16x4_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 
test_vshr_n_s32(int32x2_t a)3250 int32x2_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 
test_vshrq_n_s8(int8x16_t a)3256 int8x16_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 
test_vshrq_n_s16(int16x8_t a)3262 int16x8_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 
test_vshrq_n_s32(int32x4_t a)3268 int32x4_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 
test_vshrq_n_s64(int64x2_t a)3274 int64x2_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 
test_vshr_n_u8(int8x8_t a)3280 int8x8_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 
test_vshr_n_u16(int16x4_t a)3286 int16x4_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 
test_vshr_n_u32(int32x2_t a)3292 int32x2_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 
test_vshrq_n_u8(int8x16_t a)3298 int8x16_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 
test_vshrq_n_u16(int16x8_t a)3304 int16x8_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 
test_vshrq_n_u32(int32x4_t a)3310 int32x4_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 
test_vshrq_n_u64(int64x2_t a)3316 int64x2_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 
test_vsra_n_s8(int8x8_t a,int8x8_t b)3322 int8x8_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 
test_vsra_n_s16(int16x4_t a,int16x4_t b)3328 int16x4_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 
test_vsra_n_s32(int32x2_t a,int32x2_t b)3334 int32x2_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 
test_vsraq_n_s8(int8x16_t a,int8x16_t b)3340 int8x16_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 
test_vsraq_n_s16(int16x8_t a,int16x8_t b)3346 int16x8_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 
test_vsraq_n_s32(int32x4_t a,int32x4_t b)3352 int32x4_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 
test_vsraq_n_s64(int64x2_t a,int64x2_t b)3358 int64x2_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 
test_vsra_n_u8(int8x8_t a,int8x8_t b)3364 int8x8_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 
test_vsra_n_u16(int16x4_t a,int16x4_t b)3370 int16x4_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 
test_vsra_n_u32(int32x2_t a,int32x2_t b)3376 int32x2_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 
test_vsraq_n_u8(int8x16_t a,int8x16_t b)3382 int8x16_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 
test_vsraq_n_u16(int16x8_t a,int16x8_t b)3388 int16x8_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 
test_vsraq_n_u32(int32x4_t a,int32x4_t b)3394 int32x4_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 
test_vsraq_n_u64(int64x2_t a,int64x2_t b)3400 int64x2_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 
test_vrshr_n_s8(int8x8_t a)3406 int8x8_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 
test_vrshr_n_s16(int16x4_t a)3412 int16x4_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 
test_vrshr_n_s32(int32x2_t a)3418 int32x2_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 
test_vrshrq_n_s8(int8x16_t a)3424 int8x16_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 
test_vrshrq_n_s16(int16x8_t a)3430 int16x8_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 
test_vrshrq_n_s32(int32x4_t a)3436 int32x4_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 
test_vrshrq_n_s64(int64x2_t a)3442 int64x2_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 
test_vrshr_n_u8(int8x8_t a)3448 int8x8_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 
test_vrshr_n_u16(int16x4_t a)3454 int16x4_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 
test_vrshr_n_u32(int32x2_t a)3460 int32x2_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 
test_vrshrq_n_u8(int8x16_t a)3466 int8x16_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 
test_vrshrq_n_u16(int16x8_t a)3472 int16x8_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 
test_vrshrq_n_u32(int32x4_t a)3478 int32x4_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 
test_vrshrq_n_u64(int64x2_t a)3484 int64x2_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 
test_vrsra_n_s8(int8x8_t a,int8x8_t b)3490 int8x8_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 
test_vrsra_n_s16(int16x4_t a,int16x4_t b)3496 int16x4_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 
test_vrsra_n_s32(int32x2_t a,int32x2_t b)3502 int32x2_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 
test_vrsraq_n_s8(int8x16_t a,int8x16_t b)3508 int8x16_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 
test_vrsraq_n_s16(int16x8_t a,int16x8_t b)3514 int16x8_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 
test_vrsraq_n_s32(int32x4_t a,int32x4_t b)3520 int32x4_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 
test_vrsraq_n_s64(int64x2_t a,int64x2_t b)3526 int64x2_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 
test_vrsra_n_u8(int8x8_t a,int8x8_t b)3532 int8x8_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 
test_vrsra_n_u16(int16x4_t a,int16x4_t b)3538 int16x4_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 
test_vrsra_n_u32(int32x2_t a,int32x2_t b)3544 int32x2_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 
test_vrsraq_n_u8(int8x16_t a,int8x16_t b)3550 int8x16_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 
test_vrsraq_n_u16(int16x8_t a,int16x8_t b)3556 int16x8_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 
test_vrsraq_n_u32(int32x4_t a,int32x4_t b)3562 int32x4_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 
test_vrsraq_n_u64(int64x2_t a,int64x2_t b)3568 int64x2_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 
test_vsri_n_s8(int8x8_t a,int8x8_t b)3574 int8x8_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 
test_vsri_n_s16(int16x4_t a,int16x4_t b)3580 int16x4_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 
test_vsri_n_s32(int32x2_t a,int32x2_t b)3586 int32x2_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 
test_vsriq_n_s8(int8x16_t a,int8x16_t b)3592 int8x16_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 
test_vsriq_n_s16(int16x8_t a,int16x8_t b)3598 int16x8_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 
test_vsriq_n_s32(int32x4_t a,int32x4_t b)3604 int32x4_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 
test_vsriq_n_s64(int64x2_t a,int64x2_t b)3610 int64x2_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 
test_vsri_n_u8(int8x8_t a,int8x8_t b)3616 int8x8_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 
test_vsri_n_u16(int16x4_t a,int16x4_t b)3622 int16x4_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 
test_vsri_n_u32(int32x2_t a,int32x2_t b)3628 int32x2_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 
test_vsriq_n_u8(int8x16_t a,int8x16_t b)3634 int8x16_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 
test_vsriq_n_u16(int16x8_t a,int16x8_t b)3640 int16x8_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 
test_vsriq_n_u32(int32x4_t a,int32x4_t b)3646 int32x4_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 
test_vsriq_n_u64(int64x2_t a,int64x2_t b)3652 int64x2_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 
test_vsri_n_p8(poly8x8_t a,poly8x8_t b)3658 poly8x8_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 
test_vsri_n_p16(poly16x4_t a,poly16x4_t b)3664 poly16x4_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 
test_vsriq_n_p8(poly8x16_t a,poly8x16_t b)3670 poly8x16_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 
test_vsriq_n_p16(poly16x8_t a,poly16x8_t b)3676 poly16x8_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 
test_vsli_n_s8(int8x8_t a,int8x8_t b)3682 int8x8_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 
test_vsli_n_s16(int16x4_t a,int16x4_t b)3688 int16x4_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 
test_vsli_n_s32(int32x2_t a,int32x2_t b)3694 int32x2_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 
test_vsliq_n_s8(int8x16_t a,int8x16_t b)3700 int8x16_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 
test_vsliq_n_s16(int16x8_t a,int16x8_t b)3706 int16x8_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 
test_vsliq_n_s32(int32x4_t a,int32x4_t b)3712 int32x4_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 
test_vsliq_n_s64(int64x2_t a,int64x2_t b)3718 int64x2_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 
test_vsli_n_u8(uint8x8_t a,uint8x8_t b)3724 uint8x8_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 
test_vsli_n_u16(uint16x4_t a,uint16x4_t b)3730 uint16x4_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 
test_vsli_n_u32(uint32x2_t a,uint32x2_t b)3736 uint32x2_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 
test_vsliq_n_u8(uint8x16_t a,uint8x16_t b)3742 uint8x16_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 
test_vsliq_n_u16(uint16x8_t a,uint16x8_t b)3748 uint16x8_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 
test_vsliq_n_u32(uint32x4_t a,uint32x4_t b)3754 uint32x4_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 
test_vsliq_n_u64(uint64x2_t a,uint64x2_t b)3760 uint64x2_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 
test_vsli_n_p8(poly8x8_t a,poly8x8_t b)3766 poly8x8_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 
test_vsli_n_p16(poly16x4_t a,poly16x4_t b)3772 poly16x4_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 
test_vsliq_n_p8(poly8x16_t a,poly8x16_t b)3778 poly8x16_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 
test_vsliq_n_p16(poly16x8_t a,poly16x8_t b)3784 poly16x8_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 
test_vqshlu_n_s8(int8x8_t a)3790 int8x8_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 
test_vqshlu_n_s16(int16x4_t a)3796 int16x4_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 
test_vqshlu_n_s32(int32x2_t a)3802 int32x2_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 
test_vqshluq_n_s8(int8x16_t a)3808 int8x16_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 
test_vqshluq_n_s16(int16x8_t a)3814 int16x8_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 
test_vqshluq_n_s32(int32x4_t a)3820 int32x4_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 
test_vqshluq_n_s64(int64x2_t a)3826 int64x2_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 
test_vshrn_n_s16(int16x8_t a)3832 int8x8_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 
test_vshrn_n_s32(int32x4_t a)3838 int16x4_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 
test_vshrn_n_s64(int64x2_t a)3844 int32x2_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 
test_vshrn_n_u16(uint16x8_t a)3850 uint8x8_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 
test_vshrn_n_u32(uint32x4_t a)3856 uint16x4_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 
test_vshrn_n_u64(uint64x2_t a)3862 uint32x2_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 
test_vshrn_high_n_s16(int8x8_t a,int16x8_t b)3868 int8x16_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 
test_vshrn_high_n_s32(int16x4_t a,int32x4_t b)3874 int16x8_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 
test_vshrn_high_n_s64(int32x2_t a,int64x2_t b)3880 int32x4_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 
test_vshrn_high_n_u16(uint8x8_t a,uint16x8_t b)3886 uint8x16_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 
test_vshrn_high_n_u32(uint16x4_t a,uint32x4_t b)3892 uint16x8_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 
test_vshrn_high_n_u64(uint32x2_t a,uint64x2_t b)3898 uint32x4_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 
test_vqshrun_n_s16(int16x8_t a)3904 int8x8_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 
test_vqshrun_n_s32(int32x4_t a)3910 int16x4_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 
test_vqshrun_n_s64(int64x2_t a)3916 int32x2_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 
test_vqshrun_high_n_s16(int8x8_t a,int16x8_t b)3922 int8x16_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 
test_vqshrun_high_n_s32(int16x4_t a,int32x4_t b)3928 int16x8_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 
test_vqshrun_high_n_s64(int32x2_t a,int64x2_t b)3934 int32x4_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 
test_vrshrn_n_s16(int16x8_t a)3940 int8x8_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 
test_vrshrn_n_s32(int32x4_t a)3946 int16x4_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 
test_vrshrn_n_s64(int64x2_t a)3952 int32x2_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 
test_vrshrn_n_u16(uint16x8_t a)3958 uint8x8_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 
test_vrshrn_n_u32(uint32x4_t a)3964 uint16x4_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 
test_vrshrn_n_u64(uint64x2_t a)3970 uint32x2_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 
test_vrshrn_high_n_s16(int8x8_t a,int16x8_t b)3976 int8x16_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 
test_vrshrn_high_n_s32(int16x4_t a,int32x4_t b)3982 int16x8_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 
test_vrshrn_high_n_s64(int32x2_t a,int64x2_t b)3988 int32x4_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 
test_vrshrn_high_n_u16(uint8x8_t a,uint16x8_t b)3994 uint8x16_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 
test_vrshrn_high_n_u32(uint16x4_t a,uint32x4_t b)4000 uint16x8_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 
test_vrshrn_high_n_u64(uint32x2_t a,uint64x2_t b)4006 uint32x4_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 
test_vqrshrun_n_s16(int16x8_t a)4012 int8x8_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 
test_vqrshrun_n_s32(int32x4_t a)4018 int16x4_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 
test_vqrshrun_n_s64(int64x2_t a)4024 int32x2_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 
test_vqrshrun_high_n_s16(int8x8_t a,int16x8_t b)4030 int8x16_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 
test_vqrshrun_high_n_s32(int16x4_t a,int32x4_t b)4036 int16x8_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 
test_vqrshrun_high_n_s64(int32x2_t a,int64x2_t b)4042 int32x4_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 
test_vqshrn_n_s16(int16x8_t a)4048 int8x8_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 
test_vqshrn_n_s32(int32x4_t a)4054 int16x4_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 
test_vqshrn_n_s64(int64x2_t a)4060 int32x2_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 
test_vqshrn_n_u16(uint16x8_t a)4066 uint8x8_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 
test_vqshrn_n_u32(uint32x4_t a)4072 uint16x4_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 
test_vqshrn_n_u64(uint64x2_t a)4078 uint32x2_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 
test_vqshrn_high_n_s16(int8x8_t a,int16x8_t b)4084 int8x16_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 
test_vqshrn_high_n_s32(int16x4_t a,int32x4_t b)4090 int16x8_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 
test_vqshrn_high_n_s64(int32x2_t a,int64x2_t b)4096 int32x4_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 
test_vqshrn_high_n_u16(uint8x8_t a,uint16x8_t b)4102 uint8x16_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 
test_vqshrn_high_n_u32(uint16x4_t a,uint32x4_t b)4108 uint16x8_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 
test_vqshrn_high_n_u64(uint32x2_t a,uint64x2_t b)4114 uint32x4_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 
test_vqrshrn_n_s16(int16x8_t a)4120 int8x8_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 
test_vqrshrn_n_s32(int32x4_t a)4126 int16x4_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 
test_vqrshrn_n_s64(int64x2_t a)4132 int32x2_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 
test_vqrshrn_n_u16(uint16x8_t a)4138 uint8x8_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 
test_vqrshrn_n_u32(uint32x4_t a)4144 uint16x4_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 
test_vqrshrn_n_u64(uint64x2_t a)4150 uint32x2_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 
test_vqrshrn_high_n_s16(int8x8_t a,int16x8_t b)4156 int8x16_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 
test_vqrshrn_high_n_s32(int16x4_t a,int32x4_t b)4162 int16x8_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 
test_vqrshrn_high_n_s64(int32x2_t a,int64x2_t b)4168 int32x4_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 
test_vqrshrn_high_n_u16(uint8x8_t a,uint16x8_t b)4174 uint8x16_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 
test_vqrshrn_high_n_u32(uint16x4_t a,uint32x4_t b)4180 uint16x8_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 
test_vqrshrn_high_n_u64(uint32x2_t a,uint64x2_t b)4186 uint32x4_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 
test_vshll_n_s8(int8x8_t a)4192 int16x8_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 
test_vshll_n_s16(int16x4_t a)4198 int32x4_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 
test_vshll_n_s32(int32x2_t a)4204 int64x2_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 
test_vshll_n_u8(uint8x8_t a)4210 uint16x8_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 
test_vshll_n_u16(uint16x4_t a)4216 uint32x4_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 
test_vshll_n_u32(uint32x2_t a)4222 uint64x2_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 
test_vshll_high_n_s8(int8x16_t a)4228 int16x8_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 
test_vshll_high_n_s16(int16x8_t a)4234 int32x4_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 
test_vshll_high_n_s32(int32x4_t a)4240 int64x2_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 
test_vshll_high_n_u8(uint8x16_t a)4246 uint16x8_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 
test_vshll_high_n_u16(uint16x8_t a)4252 uint32x4_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 
test_vshll_high_n_u32(uint32x4_t a)4258 uint64x2_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 
test_vmovl_s8(int8x8_t a)4264 int16x8_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 
test_vmovl_s16(int16x4_t a)4270 int32x4_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 
test_vmovl_s32(int32x2_t a)4276 int64x2_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 
test_vmovl_u8(uint8x8_t a)4282 uint16x8_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 
test_vmovl_u16(uint16x4_t a)4288 uint32x4_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 
test_vmovl_u32(uint32x2_t a)4294 uint64x2_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 
test_vmovl_high_s8(int8x16_t a)4300 int16x8_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 
test_vmovl_high_s16(int16x8_t a)4306 int32x4_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 
test_vmovl_high_s32(int32x4_t a)4312 int64x2_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 
test_vmovl_high_u8(uint8x16_t a)4318 uint16x8_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 
test_vmovl_high_u16(uint16x8_t a)4324 uint32x4_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 
test_vmovl_high_u32(uint32x4_t a)4330 uint64x2_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 
test_vcvt_n_f32_s32(int32x2_t a)4336 float32x2_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 
test_vcvtq_n_f32_s32(int32x4_t a)4342 float32x4_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 
test_vcvtq_n_f64_s64(int64x2_t a)4348 float64x2_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 
test_vcvt_n_f32_u32(uint32x2_t a)4354 float32x2_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 
test_vcvtq_n_f32_u32(uint32x4_t a)4360 float32x4_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 
test_vcvtq_n_f64_u64(uint64x2_t a)4366 float64x2_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 
test_vcvt_n_s32_f32(float32x2_t a)4372 int32x2_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 
test_vcvtq_n_s32_f32(float32x4_t a)4378 int32x4_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 
test_vcvtq_n_s64_f64(float64x2_t a)4384 int64x2_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 
test_vcvt_n_u32_f32(float32x2_t a)4390 uint32x2_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 
test_vcvtq_n_u32_f32(float32x4_t a)4396 uint32x4_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 
test_vcvtq_n_u64_f64(float64x2_t a)4402 uint64x2_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 
test_vaddl_s8(int8x8_t a,int8x8_t b)4408 int16x8_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 
test_vaddl_s16(int16x4_t a,int16x4_t b)4414 int32x4_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 
test_vaddl_s32(int32x2_t a,int32x2_t b)4420 int64x2_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 
test_vaddl_u8(uint8x8_t a,uint8x8_t b)4426 uint16x8_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 
test_vaddl_u16(uint16x4_t a,uint16x4_t b)4432 uint32x4_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 
test_vaddl_u32(uint32x2_t a,uint32x2_t b)4438 uint64x2_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 
test_vaddl_high_s8(int8x16_t a,int8x16_t b)4444 int16x8_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 
test_vaddl_high_s16(int16x8_t a,int16x8_t b)4450 int32x4_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 
test_vaddl_high_s32(int32x4_t a,int32x4_t b)4456 int64x2_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 
test_vaddl_high_u8(uint8x16_t a,uint8x16_t b)4462 uint16x8_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 
test_vaddl_high_u16(uint16x8_t a,uint16x8_t b)4468 uint32x4_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 
test_vaddl_high_u32(uint32x4_t a,uint32x4_t b)4474 uint64x2_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 
test_vaddw_s8(int16x8_t a,int8x8_t b)4480 int16x8_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 
test_vaddw_s16(int32x4_t a,int16x4_t b)4486 int32x4_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 
test_vaddw_s32(int64x2_t a,int32x2_t b)4492 int64x2_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 
test_vaddw_u8(uint16x8_t a,uint8x8_t b)4498 uint16x8_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 
test_vaddw_u16(uint32x4_t a,uint16x4_t b)4504 uint32x4_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 
test_vaddw_u32(uint64x2_t a,uint32x2_t b)4510 uint64x2_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 
test_vaddw_high_s8(int16x8_t a,int8x16_t b)4516 int16x8_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 
test_vaddw_high_s16(int32x4_t a,int16x8_t b)4522 int32x4_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 
test_vaddw_high_s32(int64x2_t a,int32x4_t b)4528 int64x2_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 
test_vaddw_high_u8(uint16x8_t a,uint8x16_t b)4534 uint16x8_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 
test_vaddw_high_u16(uint32x4_t a,uint16x8_t b)4540 uint32x4_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 
test_vaddw_high_u32(uint64x2_t a,uint32x4_t b)4546 uint64x2_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 
test_vsubl_s8(int8x8_t a,int8x8_t b)4552 int16x8_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 
test_vsubl_s16(int16x4_t a,int16x4_t b)4558 int32x4_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 
test_vsubl_s32(int32x2_t a,int32x2_t b)4564 int64x2_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 
test_vsubl_u8(uint8x8_t a,uint8x8_t b)4570 uint16x8_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 
test_vsubl_u16(uint16x4_t a,uint16x4_t b)4576 uint32x4_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 
test_vsubl_u32(uint32x2_t a,uint32x2_t b)4582 uint64x2_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 
test_vsubl_high_s8(int8x16_t a,int8x16_t b)4588 int16x8_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 
test_vsubl_high_s16(int16x8_t a,int16x8_t b)4594 int32x4_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 
test_vsubl_high_s32(int32x4_t a,int32x4_t b)4600 int64x2_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 
test_vsubl_high_u8(uint8x16_t a,uint8x16_t b)4606 uint16x8_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 
test_vsubl_high_u16(uint16x8_t a,uint16x8_t b)4612 uint32x4_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 
test_vsubl_high_u32(uint32x4_t a,uint32x4_t b)4618 uint64x2_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 
test_vsubw_s8(int16x8_t a,int8x8_t b)4624 int16x8_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 
test_vsubw_s16(int32x4_t a,int16x4_t b)4630 int32x4_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 
test_vsubw_s32(int64x2_t a,int32x2_t b)4636 int64x2_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 
test_vsubw_u8(uint16x8_t a,uint8x8_t b)4642 uint16x8_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 
test_vsubw_u16(uint32x4_t a,uint16x4_t b)4648 uint32x4_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 
test_vsubw_u32(uint64x2_t a,uint32x2_t b)4654 uint64x2_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 
test_vsubw_high_s8(int16x8_t a,int8x16_t b)4660 int16x8_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 
test_vsubw_high_s16(int32x4_t a,int16x8_t b)4666 int32x4_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 
test_vsubw_high_s32(int64x2_t a,int32x4_t b)4672 int64x2_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 
test_vsubw_high_u8(uint16x8_t a,uint8x16_t b)4678 uint16x8_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 
test_vsubw_high_u16(uint32x4_t a,uint16x8_t b)4684 uint32x4_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 
test_vsubw_high_u32(uint64x2_t a,uint32x4_t b)4690 uint64x2_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 
test_vaddhn_s16(int16x8_t a,int16x8_t b)4696 int8x8_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 
test_vaddhn_s32(int32x4_t a,int32x4_t b)4702 int16x4_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 
test_vaddhn_s64(int64x2_t a,int64x2_t b)4708 int32x2_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 
test_vaddhn_u16(uint16x8_t a,uint16x8_t b)4714 uint8x8_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 
test_vaddhn_u32(uint32x4_t a,uint32x4_t b)4720 uint16x4_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 
test_vaddhn_u64(uint64x2_t a,uint64x2_t b)4726 uint32x2_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 
test_vaddhn_high_s16(int8x8_t r,int16x8_t a,int16x8_t b)4732 int8x16_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 
test_vaddhn_high_s32(int16x4_t r,int32x4_t a,int32x4_t b)4738 int16x8_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 
test_vaddhn_high_s64(int32x2_t r,int64x2_t a,int64x2_t b)4744 int32x4_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 
test_vaddhn_high_u16(uint8x8_t r,uint16x8_t a,uint16x8_t b)4750 uint8x16_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 
test_vaddhn_high_u32(uint16x4_t r,uint32x4_t a,uint32x4_t b)4756 uint16x8_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 
test_vaddhn_high_u64(uint32x2_t r,uint64x2_t a,uint64x2_t b)4762 uint32x4_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 
test_vraddhn_s16(int16x8_t a,int16x8_t b)4768 int8x8_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 
test_vraddhn_s32(int32x4_t a,int32x4_t b)4774 int16x4_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 
test_vraddhn_s64(int64x2_t a,int64x2_t b)4780 int32x2_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 
test_vraddhn_u16(uint16x8_t a,uint16x8_t b)4786 uint8x8_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 
test_vraddhn_u32(uint32x4_t a,uint32x4_t b)4792 uint16x4_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 
test_vraddhn_u64(uint64x2_t a,uint64x2_t b)4798 uint32x2_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 
test_vraddhn_high_s16(int8x8_t r,int16x8_t a,int16x8_t b)4804 int8x16_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 
test_vraddhn_high_s32(int16x4_t r,int32x4_t a,int32x4_t b)4810 int16x8_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 
test_vraddhn_high_s64(int32x2_t r,int64x2_t a,int64x2_t b)4816 int32x4_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 
test_vraddhn_high_u16(uint8x8_t r,uint16x8_t a,uint16x8_t b)4822 uint8x16_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 
test_vraddhn_high_u32(uint16x4_t r,uint32x4_t a,uint32x4_t b)4828 uint16x8_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 
test_vraddhn_high_u64(uint32x2_t r,uint64x2_t a,uint64x2_t b)4834 uint32x4_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 
test_vsubhn_s16(int16x8_t a,int16x8_t b)4840 int8x8_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 
test_vsubhn_s32(int32x4_t a,int32x4_t b)4846 int16x4_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 
test_vsubhn_s64(int64x2_t a,int64x2_t b)4852 int32x2_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 
test_vsubhn_u16(uint16x8_t a,uint16x8_t b)4858 uint8x8_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 
test_vsubhn_u32(uint32x4_t a,uint32x4_t b)4864 uint16x4_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 
test_vsubhn_u64(uint64x2_t a,uint64x2_t b)4870 uint32x2_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 
test_vsubhn_high_s16(int8x8_t r,int16x8_t a,int16x8_t b)4876 int8x16_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 
test_vsubhn_high_s32(int16x4_t r,int32x4_t a,int32x4_t b)4882 int16x8_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 
test_vsubhn_high_s64(int32x2_t r,int64x2_t a,int64x2_t b)4888 int32x4_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 
test_vsubhn_high_u16(uint8x8_t r,uint16x8_t a,uint16x8_t b)4894 uint8x16_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 
test_vsubhn_high_u32(uint16x4_t r,uint32x4_t a,uint32x4_t b)4900 uint16x8_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 
test_vsubhn_high_u64(uint32x2_t r,uint64x2_t a,uint64x2_t b)4906 uint32x4_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 
test_vrsubhn_s16(int16x8_t a,int16x8_t b)4912 int8x8_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 
test_vrsubhn_s32(int32x4_t a,int32x4_t b)4918 int16x4_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 
test_vrsubhn_s64(int64x2_t a,int64x2_t b)4924 int32x2_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 
test_vrsubhn_u16(uint16x8_t a,uint16x8_t b)4930 uint8x8_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 
test_vrsubhn_u32(uint32x4_t a,uint32x4_t b)4936 uint16x4_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 
test_vrsubhn_u64(uint64x2_t a,uint64x2_t b)4942 uint32x2_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 
test_vrsubhn_high_s16(int8x8_t r,int16x8_t a,int16x8_t b)4948 int8x16_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 
test_vrsubhn_high_s32(int16x4_t r,int32x4_t a,int32x4_t b)4954 int16x8_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 
test_vrsubhn_high_s64(int32x2_t r,int64x2_t a,int64x2_t b)4960 int32x4_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 
test_vrsubhn_high_u16(uint8x8_t r,uint16x8_t a,uint16x8_t b)4966 uint8x16_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 
test_vrsubhn_high_u32(uint16x4_t r,uint32x4_t a,uint32x4_t b)4972 uint16x8_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 
test_vrsubhn_high_u64(uint32x2_t r,uint64x2_t a,uint64x2_t b)4978 uint32x4_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 
test_vabdl_s8(int8x8_t a,int8x8_t b)4984 int16x8_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 }
test_vabdl_s16(int16x4_t a,int16x4_t b)4989 int32x4_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 }
test_vabdl_s32(int32x2_t a,int32x2_t b)4994 int64x2_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 }
test_vabdl_u8(uint8x8_t a,uint8x8_t b)4999 uint16x8_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 }
test_vabdl_u16(uint16x4_t a,uint16x4_t b)5004 uint32x4_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 }
test_vabdl_u32(uint32x2_t a,uint32x2_t b)5009 uint64x2_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 
test_vabal_s8(int16x8_t a,int8x8_t b,int8x8_t c)5015 int16x8_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 }
test_vabal_s16(int32x4_t a,int16x4_t b,int16x4_t c)5020 int32x4_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 }
test_vabal_s32(int64x2_t a,int32x2_t b,int32x2_t c)5025 int64x2_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 }
test_vabal_u8(uint16x8_t a,uint8x8_t b,uint8x8_t c)5030 uint16x8_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 }
test_vabal_u16(uint32x4_t a,uint16x4_t b,uint16x4_t c)5035 uint32x4_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 }
test_vabal_u32(uint64x2_t a,uint32x2_t b,uint32x2_t c)5040 uint64x2_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 
test_vabdl_high_s8(int8x16_t a,int8x16_t b)5046 int16x8_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 }
test_vabdl_high_s16(int16x8_t a,int16x8_t b)5051 int32x4_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 }
test_vabdl_high_s32(int32x4_t a,int32x4_t b)5056 int64x2_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 }
test_vabdl_high_u8(uint8x16_t a,uint8x16_t b)5061 uint16x8_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 }
test_vabdl_high_u16(uint16x8_t a,uint16x8_t b)5066 uint32x4_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 }
test_vabdl_high_u32(uint32x4_t a,uint32x4_t b)5071 uint64x2_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 
test_vabal_high_s8(int16x8_t a,int8x16_t b,int8x16_t c)5077 int16x8_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 }
test_vabal_high_s16(int32x4_t a,int16x8_t b,int16x8_t c)5082 int32x4_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 }
test_vabal_high_s32(int64x2_t a,int32x4_t b,int32x4_t c)5087 int64x2_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 }
test_vabal_high_u8(uint16x8_t a,uint8x16_t b,uint8x16_t c)5092 uint16x8_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 }
test_vabal_high_u16(uint32x4_t a,uint16x8_t b,uint16x8_t c)5097 uint32x4_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 }
test_vabal_high_u32(uint64x2_t a,uint32x4_t b,uint32x4_t c)5102 uint64x2_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 
test_vmull_s8(int8x8_t a,int8x8_t b)5108 int16x8_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 }
test_vmull_s16(int16x4_t a,int16x4_t b)5113 int32x4_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 }
test_vmull_s32(int32x2_t a,int32x2_t b)5118 int64x2_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 }
test_vmull_u8(uint8x8_t a,uint8x8_t b)5123 uint16x8_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 }
test_vmull_u16(uint16x4_t a,uint16x4_t b)5128 uint32x4_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 }
test_vmull_u32(uint32x2_t a,uint32x2_t b)5133 uint64x2_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 
test_vmull_high_s8(int8x16_t a,int8x16_t b)5139 int16x8_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 }
test_vmull_high_s16(int16x8_t a,int16x8_t b)5144 int32x4_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 }
test_vmull_high_s32(int32x4_t a,int32x4_t b)5149 int64x2_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 }
test_vmull_high_u8(uint8x16_t a,uint8x16_t b)5154 uint16x8_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 }
test_vmull_high_u16(uint16x8_t a,uint16x8_t b)5159 uint32x4_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 }
test_vmull_high_u32(uint32x4_t a,uint32x4_t b)5164 uint64x2_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 
test_vmlal_s8(int16x8_t a,int8x8_t b,int8x8_t c)5170 int16x8_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 }
test_vmlal_s16(int32x4_t a,int16x4_t b,int16x4_t c)5175 int32x4_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 }
test_vmlal_s32(int64x2_t a,int32x2_t b,int32x2_t c)5180 int64x2_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 }
test_vmlal_u8(uint16x8_t a,uint8x8_t b,uint8x8_t c)5185 uint16x8_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 }
test_vmlal_u16(uint32x4_t a,uint16x4_t b,uint16x4_t c)5190 uint32x4_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 }
test_vmlal_u32(uint64x2_t a,uint32x2_t b,uint32x2_t c)5195 uint64x2_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 
test_vmlal_high_s8(int16x8_t a,int8x16_t b,int8x16_t c)5201 int16x8_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 }
test_vmlal_high_s16(int32x4_t a,int16x8_t b,int16x8_t c)5206 int32x4_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 }
test_vmlal_high_s32(int64x2_t a,int32x4_t b,int32x4_t c)5211 int64x2_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 }
test_vmlal_high_u8(uint16x8_t a,uint8x16_t b,uint8x16_t c)5216 uint16x8_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 }
test_vmlal_high_u16(uint32x4_t a,uint16x8_t b,uint16x8_t c)5221 uint32x4_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 }
test_vmlal_high_u32(uint64x2_t a,uint32x4_t b,uint32x4_t c)5226 uint64x2_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 
test_vmlsl_s8(int16x8_t a,int8x8_t b,int8x8_t c)5232 int16x8_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 }
test_vmlsl_s16(int32x4_t a,int16x4_t b,int16x4_t c)5237 int32x4_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 }
test_vmlsl_s32(int64x2_t a,int32x2_t b,int32x2_t c)5242 int64x2_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 }
test_vmlsl_u8(uint16x8_t a,uint8x8_t b,uint8x8_t c)5247 uint16x8_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 }
test_vmlsl_u16(uint32x4_t a,uint16x4_t b,uint16x4_t c)5252 uint32x4_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 }
test_vmlsl_u32(uint64x2_t a,uint32x2_t b,uint32x2_t c)5257 uint64x2_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 
test_vmlsl_high_s8(int16x8_t a,int8x16_t b,int8x16_t c)5263 int16x8_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 }
test_vmlsl_high_s16(int32x4_t a,int16x8_t b,int16x8_t c)5268 int32x4_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 }
test_vmlsl_high_s32(int64x2_t a,int32x4_t b,int32x4_t c)5273 int64x2_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 }
test_vmlsl_high_u8(uint16x8_t a,uint8x16_t b,uint8x16_t c)5278 uint16x8_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 }
test_vmlsl_high_u16(uint32x4_t a,uint16x8_t b,uint16x8_t c)5283 uint32x4_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 }
test_vmlsl_high_u32(uint64x2_t a,uint32x4_t b,uint32x4_t c)5288 uint64x2_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 
test_vqdmull_s16(int16x4_t a,int16x4_t b)5294 int32x4_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 }
test_vqdmull_s32(int32x2_t a,int32x2_t b)5299 int64x2_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 
test_vqdmlal_s16(int32x4_t a,int16x4_t b,int16x4_t c)5305 int32x4_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 
test_vqdmlal_s32(int64x2_t a,int32x2_t b,int32x2_t c)5311 int64x2_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 
test_vqdmlsl_s16(int32x4_t a,int16x4_t b,int16x4_t c)5317 int32x4_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 
test_vqdmlsl_s32(int64x2_t a,int32x2_t b,int32x2_t c)5323 int64x2_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 
test_vqdmull_high_s16(int16x8_t a,int16x8_t b)5329 int32x4_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 }
test_vqdmull_high_s32(int32x4_t a,int32x4_t b)5334 int64x2_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 
test_vqdmlal_high_s16(int32x4_t a,int16x8_t b,int16x8_t c)5340 int32x4_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 
test_vqdmlal_high_s32(int64x2_t a,int32x4_t b,int32x4_t c)5346 int64x2_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 
test_vqdmlsl_high_s16(int32x4_t a,int16x8_t b,int16x8_t c)5352 int32x4_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 
test_vqdmlsl_high_s32(int64x2_t a,int32x4_t b,int32x4_t c)5358 int64x2_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 
test_vmull_p8(poly8x8_t a,poly8x8_t b)5364 poly16x8_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 
test_vmull_high_p8(poly8x16_t a,poly8x16_t b)5370 poly16x8_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 
test_vaddd_s64(int64_t a,int64_t b)5376 int64_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 
test_vaddd_u64(uint64_t a,uint64_t b)5382 uint64_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 
test_vsubd_s64(int64_t a,int64_t b)5388 int64_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 
test_vsubd_u64(uint64_t a,uint64_t b)5394 uint64_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 
test_vqaddb_s8(int8_t a,int8_t b)5400 int8_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 
test_vqaddh_s16(int16_t a,int16_t b)5406 int16_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 
test_vqadds_s32(int32_t a,int32_t b)5412 int32_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 
test_vqaddd_s64(int64_t a,int64_t b)5418 int64_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 
test_vqaddb_u8(uint8_t a,uint8_t b)5424 uint8_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 
test_vqaddh_u16(uint16_t a,uint16_t b)5430 uint16_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 
test_vqadds_u32(uint32_t a,uint32_t b)5436 uint32_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 
test_vqaddd_u64(uint64_t a,uint64_t b)5442 uint64_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 
test_vqsubb_s8(int8_t a,int8_t b)5448 int8_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 
test_vqsubh_s16(int16_t a,int16_t b)5454 int16_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 
test_vqsubs_s32(int32_t a,int32_t b)5460 int32_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 
test_vqsubd_s64(int64_t a,int64_t b)5466 int64_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 
test_vqsubb_u8(uint8_t a,uint8_t b)5472 uint8_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 
test_vqsubh_u16(uint16_t a,uint16_t b)5478 uint16_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 
test_vqsubs_u32(uint32_t a,uint32_t b)5484 uint32_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 
test_vqsubd_u64(uint64_t a,uint64_t b)5490 uint64_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 
test_vshld_s64(int64_t a,int64_t b)5496 int64_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 
test_vshld_u64(uint64_t a,uint64_t b)5502 uint64_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
test_vqshlb_s8(int8_t a,int8_t b)5509 int8_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
test_vqshlh_s16(int16_t a,int16_t b)5515 int16_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
test_vqshls_s32(int32_t a,int32_t b)5521 int32_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
test_vqshld_s64(int64_t a,int64_t b)5527 int64_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
test_vqshlb_u8(uint8_t a,uint8_t b)5533 uint8_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
test_vqshlh_u16(uint16_t a,uint16_t b)5539 uint16_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
test_vqshls_u32(uint32_t a,uint32_t b)5545 uint32_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
test_vqshld_u64(uint64_t a,uint64_t b)5551 uint64_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
test_vrshld_s64(int64_t a,int64_t b)5557 int64_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
test_vrshld_u64(uint64_t a,uint64_t b)5564 uint64_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
test_vqrshlb_s8(int8_t a,int8_t b)5570 int8_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
test_vqrshlh_s16(int16_t a,int16_t b)5576 int16_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
test_vqrshls_s32(int32_t a,int32_t b)5582 int32_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
test_vqrshld_s64(int64_t a,int64_t b)5588 int64_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
test_vqrshlb_u8(uint8_t a,uint8_t b)5594 uint8_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
test_vqrshlh_u16(uint16_t a,uint16_t b)5600 uint16_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
test_vqrshls_u32(uint32_t a,uint32_t b)5606 uint32_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
test_vqrshld_u64(uint64_t a,uint64_t b)5612 uint64_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
test_vpaddd_s64(int64x2_t a)5618 int64_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
test_vpadds_f32(float32x2_t a)5624 float32_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
test_vpaddd_f64(float64x2_t a)5630 float64_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
test_vpmaxnms_f32(float32x2_t a)5636 float32_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
test_vpmaxnmqd_f64(float64x2_t a)5642 float64_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
test_vpmaxs_f32(float32x2_t a)5648 float32_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
test_vpmaxqd_f64(float64x2_t a)5654 float64_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
test_vpminnms_f32(float32x2_t a)5660 float32_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
test_vpminnmqd_f64(float64x2_t a)5666 float64_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
test_vpmins_f32(float32x2_t a)5672 float32_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
test_vpminqd_f64(float64x2_t a)5678 float64_t test_vpminqd_f64(float64x2_t a) {
5679   return vpminqd_f64(a);
5680 // CHECK: fminp {{d[0-9]+}}, {{v[0-9]+}}.2d
5681 }
5682 
test_vqdmulhh_s16(int16_t a,int16_t b)5683 int16_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 
test_vqdmulhs_s32(int32_t a,int32_t b)5689 int32_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 
test_vqrdmulhh_s16(int16_t a,int16_t b)5695 int16_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 
test_vqrdmulhs_s32(int32_t a,int32_t b)5701 int32_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 
test_vmulxs_f32(float32_t a,float32_t b)5707 float32_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 
test_vmulxd_f64(float64_t a,float64_t b)5713 float64_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 
test_vmulx_f64(float64x1_t a,float64x1_t b)5719 float64x1_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 
test_vrecpss_f32(float32_t a,float32_t b)5725 float32_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 
test_vrecpsd_f64(float64_t a,float64_t b)5731 float64_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 
test_vrsqrtss_f32(float32_t a,float32_t b)5737 float32_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 
test_vrsqrtsd_f64(float64_t a,float64_t b)5743 float64_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 
test_vcvts_f32_s32(int32_t a)5749 float32_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 
test_vcvtd_f64_s64(int64_t a)5755 float64_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 
test_vcvts_f32_u32(uint32_t a)5761 float32_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 
test_vcvtd_f64_u64(uint64_t a)5767 float64_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 
test_vrecpes_f32(float32_t a)5773 float32_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 
test_vrecped_f64(float64_t a)5779 float64_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 
test_vrecpxs_f32(float32_t a)5785 float32_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 
test_vrecpxd_f64(float64_t a)5791 float64_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 
test_vrsqrte_u32(uint32x2_t a)5797 uint32x2_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 
test_vrsqrteq_u32(uint32x4_t a)5803 uint32x4_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 
test_vrsqrtes_f32(float32_t a)5809 float32_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 
test_vrsqrted_f64(float64_t a)5815 float64_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 
test_vld1q_u8(uint8_t const * a)5821 uint8x16_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 
test_vld1q_u16(uint16_t const * a)5827 uint16x8_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 
test_vld1q_u32(uint32_t const * a)5833 uint32x4_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 
test_vld1q_u64(uint64_t const * a)5839 uint64x2_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 
test_vld1q_s8(int8_t const * a)5845 int8x16_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 
test_vld1q_s16(int16_t const * a)5851 int16x8_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 
test_vld1q_s32(int32_t const * a)5857 int32x4_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 
test_vld1q_s64(int64_t const * a)5863 int64x2_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 
test_vld1q_f16(float16_t const * a)5869 float16x8_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 
test_vld1q_f32(float32_t const * a)5875 float32x4_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 
test_vld1q_f64(float64_t const * a)5881 float64x2_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 
test_vld1q_p8(poly8_t const * a)5887 poly8x16_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 
test_vld1q_p16(poly16_t const * a)5893 poly16x8_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 
test_vld1_u8(uint8_t const * a)5899 uint8x8_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 
test_vld1_u16(uint16_t const * a)5905 uint16x4_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 
test_vld1_u32(uint32_t const * a)5911 uint32x2_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 
test_vld1_u64(uint64_t const * a)5917 uint64x1_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 
test_vld1_s8(int8_t const * a)5923 int8x8_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 
test_vld1_s16(int16_t const * a)5929 int16x4_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 
test_vld1_s32(int32_t const * a)5935 int32x2_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 
test_vld1_s64(int64_t const * a)5941 int64x1_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 
test_vld1_f16(float16_t const * a)5947 float16x4_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 
test_vld1_f32(float32_t const * a)5953 float32x2_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 
test_vld1_f64(float64_t const * a)5959 float64x1_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 
test_vld1_p8(poly8_t const * a)5965 poly8x8_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 
test_vld1_p16(poly16_t const * a)5971 poly16x4_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 
test_vld2q_u8(uint8_t const * a)5977 uint8x16x2_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 
test_vld2q_u16(uint16_t const * a)5983 uint16x8x2_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 
test_vld2q_u32(uint32_t const * a)5989 uint32x4x2_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 
test_vld2q_u64(uint64_t const * a)5995 uint64x2x2_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 
test_vld2q_s8(int8_t const * a)6001 int8x16x2_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 
test_vld2q_s16(int16_t const * a)6007 int16x8x2_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 
test_vld2q_s32(int32_t const * a)6013 int32x4x2_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 
test_vld2q_s64(int64_t const * a)6019 int64x2x2_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 
test_vld2q_f16(float16_t const * a)6025 float16x8x2_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 
test_vld2q_f32(float32_t const * a)6031 float32x4x2_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 
test_vld2q_f64(float64_t const * a)6037 float64x2x2_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 
test_vld2q_p8(poly8_t const * a)6043 poly8x16x2_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 
test_vld2q_p16(poly16_t const * a)6049 poly16x8x2_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 
test_vld2_u8(uint8_t const * a)6055 uint8x8x2_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 
test_vld2_u16(uint16_t const * a)6061 uint16x4x2_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 
test_vld2_u32(uint32_t const * a)6067 uint32x2x2_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 
test_vld2_u64(uint64_t const * a)6073 uint64x1x2_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 
test_vld2_s8(int8_t const * a)6079 int8x8x2_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 
test_vld2_s16(int16_t const * a)6085 int16x4x2_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 
test_vld2_s32(int32_t const * a)6091 int32x2x2_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 
test_vld2_s64(int64_t const * a)6097 int64x1x2_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 
test_vld2_f16(float16_t const * a)6103 float16x4x2_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 
test_vld2_f32(float32_t const * a)6109 float32x2x2_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 
test_vld2_f64(float64_t const * a)6115 float64x1x2_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 
test_vld2_p8(poly8_t const * a)6121 poly8x8x2_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 
test_vld2_p16(poly16_t const * a)6127 poly16x4x2_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 
test_vld3q_u8(uint8_t const * a)6133 uint8x16x3_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 
test_vld3q_u16(uint16_t const * a)6139 uint16x8x3_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 
test_vld3q_u32(uint32_t const * a)6145 uint32x4x3_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 
test_vld3q_u64(uint64_t const * a)6151 uint64x2x3_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 
test_vld3q_s8(int8_t const * a)6157 int8x16x3_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 
test_vld3q_s16(int16_t const * a)6163 int16x8x3_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 
test_vld3q_s32(int32_t const * a)6169 int32x4x3_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 
test_vld3q_s64(int64_t const * a)6175 int64x2x3_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 
test_vld3q_f16(float16_t const * a)6181 float16x8x3_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 
test_vld3q_f32(float32_t const * a)6187 float32x4x3_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 
test_vld3q_f64(float64_t const * a)6193 float64x2x3_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 
test_vld3q_p8(poly8_t const * a)6199 poly8x16x3_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 
test_vld3q_p16(poly16_t const * a)6205 poly16x8x3_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 
test_vld3_u8(uint8_t const * a)6211 uint8x8x3_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 
test_vld3_u16(uint16_t const * a)6217 uint16x4x3_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 
test_vld3_u32(uint32_t const * a)6223 uint32x2x3_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 
test_vld3_u64(uint64_t const * a)6229 uint64x1x3_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 
test_vld3_s8(int8_t const * a)6235 int8x8x3_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 
test_vld3_s16(int16_t const * a)6241 int16x4x3_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 
test_vld3_s32(int32_t const * a)6247 int32x2x3_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 
test_vld3_s64(int64_t const * a)6253 int64x1x3_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 
test_vld3_f16(float16_t const * a)6259 float16x4x3_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 
test_vld3_f32(float32_t const * a)6265 float32x2x3_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 
test_vld3_f64(float64_t const * a)6271 float64x1x3_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 
test_vld3_p8(poly8_t const * a)6277 poly8x8x3_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 
test_vld3_p16(poly16_t const * a)6283 poly16x4x3_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 
test_vld4q_u8(uint8_t const * a)6289 uint8x16x4_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 
test_vld4q_u16(uint16_t const * a)6295 uint16x8x4_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 
test_vld4q_u32(uint32_t const * a)6301 uint32x4x4_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 
test_vld4q_u64(uint64_t const * a)6307 uint64x2x4_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 
test_vld4q_s8(int8_t const * a)6313 int8x16x4_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 
test_vld4q_s16(int16_t const * a)6319 int16x8x4_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 
test_vld4q_s32(int32_t const * a)6325 int32x4x4_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 
test_vld4q_s64(int64_t const * a)6331 int64x2x4_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 
test_vld4q_f16(float16_t const * a)6337 float16x8x4_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 
test_vld4q_f32(float32_t const * a)6343 float32x4x4_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 
test_vld4q_f64(float64_t const * a)6349 float64x2x4_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 
test_vld4q_p8(poly8_t const * a)6355 poly8x16x4_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 
test_vld4q_p16(poly16_t const * a)6361 poly16x8x4_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 
test_vld4_u8(uint8_t const * a)6367 uint8x8x4_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 
test_vld4_u16(uint16_t const * a)6373 uint16x4x4_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 
test_vld4_u32(uint32_t const * a)6379 uint32x2x4_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 
test_vld4_u64(uint64_t const * a)6385 uint64x1x4_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 
test_vld4_s8(int8_t const * a)6391 int8x8x4_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 
test_vld4_s16(int16_t const * a)6397 int16x4x4_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 
test_vld4_s32(int32_t const * a)6403 int32x2x4_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 
test_vld4_s64(int64_t const * a)6409 int64x1x4_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 
test_vld4_f16(float16_t const * a)6415 float16x4x4_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 
test_vld4_f32(float32_t const * a)6421 float32x2x4_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 
test_vld4_f64(float64_t const * a)6427 float64x1x4_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 
test_vld4_p8(poly8_t const * a)6433 poly8x8x4_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 
test_vld4_p16(poly16_t const * a)6439 poly16x4x4_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 
test_vst1q_u8(uint8_t * a,uint8x16_t b)6445 void 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 
test_vst1q_u16(uint16_t * a,uint16x8_t b)6451 void 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 
test_vst1q_u32(uint32_t * a,uint32x4_t b)6457 void 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 
test_vst1q_u64(uint64_t * a,uint64x2_t b)6463 void 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 
test_vst1q_s8(int8_t * a,int8x16_t b)6469 void 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 
test_vst1q_s16(int16_t * a,int16x8_t b)6475 void 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 
test_vst1q_s32(int32_t * a,int32x4_t b)6481 void 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 
test_vst1q_s64(int64_t * a,int64x2_t b)6487 void 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 
test_vst1q_f16(float16_t * a,float16x8_t b)6493 void 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 
test_vst1q_f32(float32_t * a,float32x4_t b)6499 void 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 
test_vst1q_f64(float64_t * a,float64x2_t b)6505 void 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 
test_vst1q_p8(poly8_t * a,poly8x16_t b)6511 void 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 
test_vst1q_p16(poly16_t * a,poly16x8_t b)6517 void 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 
test_vst1_u8(uint8_t * a,uint8x8_t b)6523 void 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 
test_vst1_u16(uint16_t * a,uint16x4_t b)6529 void 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 
test_vst1_u32(uint32_t * a,uint32x2_t b)6535 void 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 
test_vst1_u64(uint64_t * a,uint64x1_t b)6541 void 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 
test_vst1_s8(int8_t * a,int8x8_t b)6547 void 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 
test_vst1_s16(int16_t * a,int16x4_t b)6553 void 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 
test_vst1_s32(int32_t * a,int32x2_t b)6559 void 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 
test_vst1_s64(int64_t * a,int64x1_t b)6565 void 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 
test_vst1_f16(float16_t * a,float16x4_t b)6571 void 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 
test_vst1_f32(float32_t * a,float32x2_t b)6577 void 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 
test_vst1_f64(float64_t * a,float64x1_t b)6583 void 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 
test_vst1_p8(poly8_t * a,poly8x8_t b)6589 void 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 
test_vst1_p16(poly16_t * a,poly16x4_t b)6595 void 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 
test_vst2q_u8(uint8_t * a,uint8x16x2_t b)6601 void 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 
test_vst2q_u16(uint16_t * a,uint16x8x2_t b)6607 void 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 
test_vst2q_u32(uint32_t * a,uint32x4x2_t b)6613 void 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 
test_vst2q_u64(uint64_t * a,uint64x2x2_t b)6619 void 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 
test_vst2q_s8(int8_t * a,int8x16x2_t b)6625 void 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 
test_vst2q_s16(int16_t * a,int16x8x2_t b)6631 void 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 
test_vst2q_s32(int32_t * a,int32x4x2_t b)6637 void 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 
test_vst2q_s64(int64_t * a,int64x2x2_t b)6643 void 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 
test_vst2q_f16(float16_t * a,float16x8x2_t b)6649 void 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 
test_vst2q_f32(float32_t * a,float32x4x2_t b)6655 void 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 
test_vst2q_f64(float64_t * a,float64x2x2_t b)6661 void 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 
test_vst2q_p8(poly8_t * a,poly8x16x2_t b)6667 void 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 
test_vst2q_p16(poly16_t * a,poly16x8x2_t b)6673 void 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 
test_vst2_u8(uint8_t * a,uint8x8x2_t b)6679 void 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 
test_vst2_u16(uint16_t * a,uint16x4x2_t b)6685 void 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 
test_vst2_u32(uint32_t * a,uint32x2x2_t b)6691 void 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 
test_vst2_u64(uint64_t * a,uint64x1x2_t b)6697 void 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 
test_vst2_s8(int8_t * a,int8x8x2_t b)6703 void 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 
test_vst2_s16(int16_t * a,int16x4x2_t b)6709 void 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 
test_vst2_s32(int32_t * a,int32x2x2_t b)6715 void 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 
test_vst2_s64(int64_t * a,int64x1x2_t b)6721 void 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 
test_vst2_f16(float16_t * a,float16x4x2_t b)6727 void 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 
test_vst2_f32(float32_t * a,float32x2x2_t b)6733 void 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 
test_vst2_f64(float64_t * a,float64x1x2_t b)6739 void 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 
test_vst2_p8(poly8_t * a,poly8x8x2_t b)6745 void 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 
test_vst2_p16(poly16_t * a,poly16x4x2_t b)6751 void 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 
test_vst3q_u8(uint8_t * a,uint8x16x3_t b)6757 void 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 
test_vst3q_u16(uint16_t * a,uint16x8x3_t b)6763 void 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 
test_vst3q_u32(uint32_t * a,uint32x4x3_t b)6769 void 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 
test_vst3q_u64(uint64_t * a,uint64x2x3_t b)6775 void 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 
test_vst3q_s8(int8_t * a,int8x16x3_t b)6781 void 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 
test_vst3q_s16(int16_t * a,int16x8x3_t b)6787 void 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 
test_vst3q_s32(int32_t * a,int32x4x3_t b)6793 void 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 
test_vst3q_s64(int64_t * a,int64x2x3_t b)6799 void 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 
test_vst3q_f16(float16_t * a,float16x8x3_t b)6805 void 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 
test_vst3q_f32(float32_t * a,float32x4x3_t b)6811 void 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 
test_vst3q_f64(float64_t * a,float64x2x3_t b)6817 void 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 
test_vst3q_p8(poly8_t * a,poly8x16x3_t b)6823 void 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 
test_vst3q_p16(poly16_t * a,poly16x8x3_t b)6829 void 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 
test_vst3_u8(uint8_t * a,uint8x8x3_t b)6835 void 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 
test_vst3_u16(uint16_t * a,uint16x4x3_t b)6841 void 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 
test_vst3_u32(uint32_t * a,uint32x2x3_t b)6847 void 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 
test_vst3_u64(uint64_t * a,uint64x1x3_t b)6853 void 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 
test_vst3_s8(int8_t * a,int8x8x3_t b)6859 void 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 
test_vst3_s16(int16_t * a,int16x4x3_t b)6865 void 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 
test_vst3_s32(int32_t * a,int32x2x3_t b)6871 void 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 
test_vst3_s64(int64_t * a,int64x1x3_t b)6877 void 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 
test_vst3_f16(float16_t * a,float16x4x3_t b)6883 void 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 
test_vst3_f32(float32_t * a,float32x2x3_t b)6889 void 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 
test_vst3_f64(float64_t * a,float64x1x3_t b)6895 void 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 
test_vst3_p8(poly8_t * a,poly8x8x3_t b)6901 void 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 
test_vst3_p16(poly16_t * a,poly16x4x3_t b)6907 void 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 
test_vst4q_u8(uint8_t * a,uint8x16x4_t b)6913 void 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 
test_vst4q_u16(uint16_t * a,uint16x8x4_t b)6919 void 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 
test_vst4q_u32(uint32_t * a,uint32x4x4_t b)6925 void 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 
test_vst4q_u64(uint64_t * a,uint64x2x4_t b)6931 void 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 
test_vst4q_s8(int8_t * a,int8x16x4_t b)6937 void 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 
test_vst4q_s16(int16_t * a,int16x8x4_t b)6943 void 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 
test_vst4q_s32(int32_t * a,int32x4x4_t b)6949 void 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 
test_vst4q_s64(int64_t * a,int64x2x4_t b)6955 void 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 
test_vst4q_f16(float16_t * a,float16x8x4_t b)6961 void 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 
test_vst4q_f32(float32_t * a,float32x4x4_t b)6967 void 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 
test_vst4q_f64(float64_t * a,float64x2x4_t b)6973 void 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 
test_vst4q_p8(poly8_t * a,poly8x16x4_t b)6979 void 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 
test_vst4q_p16(poly16_t * a,poly16x8x4_t b)6985 void 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 
test_vst4_u8(uint8_t * a,uint8x8x4_t b)6991 void 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 
test_vst4_u16(uint16_t * a,uint16x4x4_t b)6997 void 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 
test_vst4_u32(uint32_t * a,uint32x2x4_t b)7003 void 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 
test_vst4_u64(uint64_t * a,uint64x1x4_t b)7009 void 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 
test_vst4_s8(int8_t * a,int8x8x4_t b)7015 void 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 
test_vst4_s16(int16_t * a,int16x4x4_t b)7021 void 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 
test_vst4_s32(int32_t * a,int32x2x4_t b)7027 void 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 
test_vst4_s64(int64_t * a,int64x1x4_t b)7033 void 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 
test_vst4_f16(float16_t * a,float16x4x4_t b)7039 void 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 
test_vst4_f32(float32_t * a,float32x2x4_t b)7045 void 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 
test_vst4_f64(float64_t * a,float64x1x4_t b)7051 void 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 
test_vst4_p8(poly8_t * a,poly8x8x4_t b)7057 void 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 
test_vst4_p16(poly16_t * a,poly16x4x4_t b)7063 void 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 
test_vld1q_u8_x2(uint8_t const * a)7069 uint8x16x2_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 
test_vld1q_u16_x2(uint16_t const * a)7075 uint16x8x2_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 
test_vld1q_u32_x2(uint32_t const * a)7081 uint32x4x2_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 
test_vld1q_u64_x2(uint64_t const * a)7087 uint64x2x2_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 
test_vld1q_s8_x2(int8_t const * a)7093 int8x16x2_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 
test_vld1q_s16_x2(int16_t const * a)7099 int16x8x2_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 
test_vld1q_s32_x2(int32_t const * a)7105 int32x4x2_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 
test_vld1q_s64_x2(int64_t const * a)7111 int64x2x2_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 
test_vld1q_f16_x2(float16_t const * a)7117 float16x8x2_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 
test_vld1q_f32_x2(float32_t const * a)7123 float32x4x2_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 
test_vld1q_f64_x2(float64_t const * a)7129 float64x2x2_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 
test_vld1q_p8_x2(poly8_t const * a)7135 poly8x16x2_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 
test_vld1q_p16_x2(poly16_t const * a)7141 poly16x8x2_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 
test_vld1q_p64_x2(poly64_t const * a)7147 poly64x2x2_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 
test_vld1_u8_x2(uint8_t const * a)7153 uint8x8x2_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 
test_vld1_u16_x2(uint16_t const * a)7159 uint16x4x2_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 
test_vld1_u32_x2(uint32_t const * a)7165 uint32x2x2_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 
test_vld1_u64_x2(uint64_t const * a)7171 uint64x1x2_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 
test_vld1_s8_x2(int8_t const * a)7177 int8x8x2_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 
test_vld1_s16_x2(int16_t const * a)7183 int16x4x2_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 
test_vld1_s32_x2(int32_t const * a)7189 int32x2x2_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 
test_vld1_s64_x2(int64_t const * a)7195 int64x1x2_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 
test_vld1_f16_x2(float16_t const * a)7201 float16x4x2_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 
test_vld1_f32_x2(float32_t const * a)7207 float32x2x2_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 
test_vld1_f64_x2(float64_t const * a)7213 float64x1x2_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 
test_vld1_p8_x2(poly8_t const * a)7219 poly8x8x2_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 
test_vld1_p16_x2(poly16_t const * a)7225 poly16x4x2_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 
test_vld1_p64_x2(poly64_t const * a)7231 poly64x1x2_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 
test_vld1q_u8_x3(uint8_t const * a)7237 uint8x16x3_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 
test_vld1q_u16_x3(uint16_t const * a)7243 uint16x8x3_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 
test_vld1q_u32_x3(uint32_t const * a)7249 uint32x4x3_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 
test_vld1q_u64_x3(uint64_t const * a)7255 uint64x2x3_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 
test_vld1q_s8_x3(int8_t const * a)7261 int8x16x3_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 
test_vld1q_s16_x3(int16_t const * a)7267 int16x8x3_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 
test_vld1q_s32_x3(int32_t const * a)7273 int32x4x3_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 
test_vld1q_s64_x3(int64_t const * a)7279 int64x2x3_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 
test_vld1q_f16_x3(float16_t const * a)7285 float16x8x3_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 
test_vld1q_f32_x3(float32_t const * a)7291 float32x4x3_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 
test_vld1q_f64_x3(float64_t const * a)7297 float64x2x3_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 
test_vld1q_p8_x3(poly8_t const * a)7303 poly8x16x3_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 
test_vld1q_p16_x3(poly16_t const * a)7309 poly16x8x3_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 
test_vld1q_p64_x3(poly64_t const * a)7315 poly64x2x3_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 
test_vld1_u8_x3(uint8_t const * a)7321 uint8x8x3_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 
test_vld1_u16_x3(uint16_t const * a)7327 uint16x4x3_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 
test_vld1_u32_x3(uint32_t const * a)7333 uint32x2x3_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 
test_vld1_u64_x3(uint64_t const * a)7339 uint64x1x3_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 
test_vld1_s8_x3(int8_t const * a)7345 int8x8x3_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 
test_vld1_s16_x3(int16_t const * a)7351 int16x4x3_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 
test_vld1_s32_x3(int32_t const * a)7357 int32x2x3_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 
test_vld1_s64_x3(int64_t const * a)7363 int64x1x3_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 
test_vld1_f16_x3(float16_t const * a)7369 float16x4x3_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 
test_vld1_f32_x3(float32_t const * a)7375 float32x2x3_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 
test_vld1_f64_x3(float64_t const * a)7381 float64x1x3_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 
test_vld1_p8_x3(poly8_t const * a)7387 poly8x8x3_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 
test_vld1_p16_x3(poly16_t const * a)7393 poly16x4x3_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 
test_vld1_p64_x3(poly64_t const * a)7399 poly64x1x3_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 
test_vld1q_u8_x4(uint8_t const * a)7405 uint8x16x4_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 
test_vld1q_u16_x4(uint16_t const * a)7411 uint16x8x4_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 
test_vld1q_u32_x4(uint32_t const * a)7417 uint32x4x4_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 
test_vld1q_u64_x4(uint64_t const * a)7423 uint64x2x4_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 
test_vld1q_s8_x4(int8_t const * a)7429 int8x16x4_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 
test_vld1q_s16_x4(int16_t const * a)7435 int16x8x4_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 
test_vld1q_s32_x4(int32_t const * a)7441 int32x4x4_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 
test_vld1q_s64_x4(int64_t const * a)7447 int64x2x4_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 
test_vld1q_f16_x4(float16_t const * a)7453 float16x8x4_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 
test_vld1q_f32_x4(float32_t const * a)7459 float32x4x4_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 
test_vld1q_f64_x4(float64_t const * a)7465 float64x2x4_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 
test_vld1q_p8_x4(poly8_t const * a)7471 poly8x16x4_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 
test_vld1q_p16_x4(poly16_t const * a)7477 poly16x8x4_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 
test_vld1q_p64_x4(poly64_t const * a)7483 poly64x2x4_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 
test_vld1_u8_x4(uint8_t const * a)7489 uint8x8x4_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 
test_vld1_u16_x4(uint16_t const * a)7495 uint16x4x4_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 
test_vld1_u32_x4(uint32_t const * a)7501 uint32x2x4_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 
test_vld1_u64_x4(uint64_t const * a)7507 uint64x1x4_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 
test_vld1_s8_x4(int8_t const * a)7513 int8x8x4_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 
test_vld1_s16_x4(int16_t const * a)7519 int16x4x4_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 
test_vld1_s32_x4(int32_t const * a)7525 int32x2x4_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 
test_vld1_s64_x4(int64_t const * a)7531 int64x1x4_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 
test_vld1_f16_x4(float16_t const * a)7537 float16x4x4_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 
test_vld1_f32_x4(float32_t const * a)7543 float32x2x4_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 
test_vld1_f64_x4(float64_t const * a)7549 float64x1x4_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 
test_vld1_p8_x4(poly8_t const * a)7555 poly8x8x4_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 
test_vld1_p16_x4(poly16_t const * a)7561 poly16x4x4_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 
test_vld1_p64_x4(poly64_t const * a)7567 poly64x1x4_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 
test_vst1q_u8_x2(uint8_t * a,uint8x16x2_t b)7573 void 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 
test_vst1q_u16_x2(uint16_t * a,uint16x8x2_t b)7579 void 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 
test_vst1q_u32_x2(uint32_t * a,uint32x4x2_t b)7585 void 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 
test_vst1q_u64_x2(uint64_t * a,uint64x2x2_t b)7591 void 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 
test_vst1q_s8_x2(int8_t * a,int8x16x2_t b)7597 void 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 
test_vst1q_s16_x2(int16_t * a,int16x8x2_t b)7603 void 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 
test_vst1q_s32_x2(int32_t * a,int32x4x2_t b)7609 void 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 
test_vst1q_s64_x2(int64_t * a,int64x2x2_t b)7615 void 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 
test_vst1q_f16_x2(float16_t * a,float16x8x2_t b)7621 void 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 
test_vst1q_f32_x2(float32_t * a,float32x4x2_t b)7627 void 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 
test_vst1q_f64_x2(float64_t * a,float64x2x2_t b)7633 void 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 
test_vst1q_p8_x2(poly8_t * a,poly8x16x2_t b)7639 void 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 
test_vst1q_p16_x2(poly16_t * a,poly16x8x2_t b)7645 void 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 
test_vst1q_p64_x2(poly64_t * a,poly64x2x2_t b)7651 void 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 
test_vst1_u8_x2(uint8_t * a,uint8x8x2_t b)7657 void 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 
test_vst1_u16_x2(uint16_t * a,uint16x4x2_t b)7663 void 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 
test_vst1_u32_x2(uint32_t * a,uint32x2x2_t b)7669 void 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 
test_vst1_u64_x2(uint64_t * a,uint64x1x2_t b)7675 void 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 
test_vst1_s8_x2(int8_t * a,int8x8x2_t b)7681 void 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 
test_vst1_s16_x2(int16_t * a,int16x4x2_t b)7687 void 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 
test_vst1_s32_x2(int32_t * a,int32x2x2_t b)7693 void 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 
test_vst1_s64_x2(int64_t * a,int64x1x2_t b)7699 void 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 
test_vst1_f16_x2(float16_t * a,float16x4x2_t b)7705 void 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 
test_vst1_f32_x2(float32_t * a,float32x2x2_t b)7711 void 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 
test_vst1_f64_x2(float64_t * a,float64x1x2_t b)7717 void 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 
test_vst1_p8_x2(poly8_t * a,poly8x8x2_t b)7723 void 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 
test_vst1_p16_x2(poly16_t * a,poly16x4x2_t b)7729 void 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 
test_vst1_p64_x2(poly64_t * a,poly64x1x2_t b)7735 void 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 
test_vst1q_u8_x3(uint8_t * a,uint8x16x3_t b)7741 void 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 
test_vst1q_u16_x3(uint16_t * a,uint16x8x3_t b)7747 void 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 
test_vst1q_u32_x3(uint32_t * a,uint32x4x3_t b)7753 void 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 
test_vst1q_u64_x3(uint64_t * a,uint64x2x3_t b)7759 void 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 
test_vst1q_s8_x3(int8_t * a,int8x16x3_t b)7765 void 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 
test_vst1q_s16_x3(int16_t * a,int16x8x3_t b)7771 void 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 
test_vst1q_s32_x3(int32_t * a,int32x4x3_t b)7777 void 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 
test_vst1q_s64_x3(int64_t * a,int64x2x3_t b)7783 void 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 
test_vst1q_f16_x3(float16_t * a,float16x8x3_t b)7789 void 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 
test_vst1q_f32_x3(float32_t * a,float32x4x3_t b)7795 void 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 
test_vst1q_f64_x3(float64_t * a,float64x2x3_t b)7801 void 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 
test_vst1q_p8_x3(poly8_t * a,poly8x16x3_t b)7807 void 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 
test_vst1q_p16_x3(poly16_t * a,poly16x8x3_t b)7813 void 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 
test_vst1q_p64_x3(poly64_t * a,poly64x2x3_t b)7819 void 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 
test_vst1_u8_x3(uint8_t * a,uint8x8x3_t b)7825 void 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 
test_vst1_u16_x3(uint16_t * a,uint16x4x3_t b)7831 void 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 
test_vst1_u32_x3(uint32_t * a,uint32x2x3_t b)7837 void 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 
test_vst1_u64_x3(uint64_t * a,uint64x1x3_t b)7843 void 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 
test_vst1_s8_x3(int8_t * a,int8x8x3_t b)7849 void 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 
test_vst1_s16_x3(int16_t * a,int16x4x3_t b)7855 void 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 
test_vst1_s32_x3(int32_t * a,int32x2x3_t b)7861 void 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 
test_vst1_s64_x3(int64_t * a,int64x1x3_t b)7867 void 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 
test_vst1_f16_x3(float16_t * a,float16x4x3_t b)7873 void 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 
test_vst1_f32_x3(float32_t * a,float32x2x3_t b)7879 void 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 
test_vst1_f64_x3(float64_t * a,float64x1x3_t b)7885 void 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 
test_vst1_p8_x3(poly8_t * a,poly8x8x3_t b)7891 void 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 
test_vst1_p16_x3(poly16_t * a,poly16x4x3_t b)7897 void 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 
test_vst1_p64_x3(poly64_t * a,poly64x1x3_t b)7903 void 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 
test_vst1q_u8_x4(uint8_t * a,uint8x16x4_t b)7909 void 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 
test_vst1q_u16_x4(uint16_t * a,uint16x8x4_t b)7915 void 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 
test_vst1q_u32_x4(uint32_t * a,uint32x4x4_t b)7921 void 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 
test_vst1q_u64_x4(uint64_t * a,uint64x2x4_t b)7927 void 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 
test_vst1q_s8_x4(int8_t * a,int8x16x4_t b)7933 void 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 
test_vst1q_s16_x4(int16_t * a,int16x8x4_t b)7939 void 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 
test_vst1q_s32_x4(int32_t * a,int32x4x4_t b)7945 void 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 
test_vst1q_s64_x4(int64_t * a,int64x2x4_t b)7951 void 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 
test_vst1q_f16_x4(float16_t * a,float16x8x4_t b)7957 void 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 
test_vst1q_f32_x4(float32_t * a,float32x4x4_t b)7963 void 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 
test_vst1q_f64_x4(float64_t * a,float64x2x4_t b)7969 void 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 
test_vst1q_p8_x4(poly8_t * a,poly8x16x4_t b)7975 void 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 
test_vst1q_p16_x4(poly16_t * a,poly16x8x4_t b)7981 void 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 
test_vst1q_p64_x4(poly64_t * a,poly64x2x4_t b)7987 void 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 
test_vst1_u8_x4(uint8_t * a,uint8x8x4_t b)7993 void 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 
test_vst1_u16_x4(uint16_t * a,uint16x4x4_t b)7999 void 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 
test_vst1_u32_x4(uint32_t * a,uint32x2x4_t b)8005 void 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 
test_vst1_u64_x4(uint64_t * a,uint64x1x4_t b)8011 void 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 
test_vst1_s8_x4(int8_t * a,int8x8x4_t b)8017 void 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 
test_vst1_s16_x4(int16_t * a,int16x4x4_t b)8023 void 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 
test_vst1_s32_x4(int32_t * a,int32x2x4_t b)8029 void 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 
test_vst1_s64_x4(int64_t * a,int64x1x4_t b)8035 void 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 
test_vst1_f16_x4(float16_t * a,float16x4x4_t b)8041 void 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 
test_vst1_f32_x4(float32_t * a,float32x2x4_t b)8047 void 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 
test_vst1_f64_x4(float64_t * a,float64x1x4_t b)8053 void 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 
test_vst1_p8_x4(poly8_t * a,poly8x8x4_t b)8059 void 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 
test_vst1_p16_x4(poly16_t * a,poly16x4x4_t b)8065 void 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 
test_vst1_p64_x4(poly64_t * a,poly64x1x4_t b)8071 void 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 
test_vceqd_s64(int64_t a,int64_t b)8077 int64_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 
test_vceqd_u64(uint64_t a,uint64_t b)8083 uint64_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 
test_vceqzd_s64(int64_t a)8089 int64_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 
test_vceqzd_u64(int64_t a)8095 int64_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 
test_vcged_s64(int64_t a,int64_t b)8101 int64_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 
test_vcged_u64(uint64_t a,uint64_t b)8107 uint64_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 
test_vcgezd_s64(int64_t a)8113 int64_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 
test_vcgtd_s64(int64_t a,int64_t b)8119 int64_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 
test_vcgtd_u64(uint64_t a,uint64_t b)8125 uint64_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 
test_vcgtzd_s64(int64_t a)8131 int64_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 
test_vcled_s64(int64_t a,int64_t b)8137 int64_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 
test_vcled_u64(uint64_t a,uint64_t b)8143 uint64_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 
test_vclezd_s64(int64_t a)8149 int64_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 
test_vcltd_s64(int64_t a,int64_t b)8155 int64_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 
test_vcltd_u64(uint64_t a,uint64_t b)8161 uint64_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 
test_vcltzd_s64(int64_t a)8167 int64_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 
test_vtstd_s64(int64_t a,int64_t b)8173 int64_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 
test_vtstd_u64(uint64_t a,uint64_t b)8179 uint64_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 
test_vabsd_s64(int64_t a)8185 int64_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 
test_vqabsb_s8(int8_t a)8191 int8_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 
test_vqabsh_s16(int16_t a)8197 int16_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 
test_vqabss_s32(int32_t a)8203 int32_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 
test_vqabsd_s64(int64_t a)8209 int64_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 
test_vnegd_s64(int64_t a)8215 int64_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 
test_vqnegb_s8(int8_t a)8221 int8_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 
test_vqnegh_s16(int16_t a)8227 int16_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 
test_vqnegs_s32(int32_t a)8233 int32_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 
test_vqnegd_s64(int64_t a)8239 int64_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 
test_vuqaddb_s8(int8_t a,int8_t b)8245 int8_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 
test_vuqaddh_s16(int16_t a,int16_t b)8251 int16_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 
test_vuqadds_s32(int32_t a,int32_t b)8257 int32_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 
test_vuqaddd_s64(int64_t a,int64_t b)8263 int64_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 
test_vsqaddb_u8(uint8_t a,uint8_t b)8269 uint8_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 
test_vsqaddh_u16(uint16_t a,uint16_t b)8275 uint16_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 
test_vsqadds_u32(uint32_t a,uint32_t b)8281 uint32_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 
test_vsqaddd_u64(uint64_t a,uint64_t b)8287 uint64_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 
test_vqdmlalh_s16(int32_t a,int16_t b,int16_t c)8293 int32_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 
test_vqdmlals_s32(int64_t a,int32_t b,int32_t c)8301 int64_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 
test_vqdmlslh_s16(int32_t a,int16_t b,int16_t c)8307 int32_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 
test_vqdmlsls_s32(int64_t a,int32_t b,int32_t c)8315 int64_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 
test_vqdmullh_s16(int16_t a,int16_t b)8321 int32_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 
test_vqdmulls_s32(int32_t a,int32_t b)8327 int64_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 
test_vqmovunh_s16(int16_t a)8333 int8_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 
test_vqmovuns_s32(int32_t a)8339 int16_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 
test_vqmovund_s64(int64_t a)8345 int32_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 
test_vqmovnh_s16(int16_t a)8351 int8_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 
test_vqmovns_s32(int32_t a)8357 int16_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 
test_vqmovnd_s64(int64_t a)8363 int32_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 
test_vqmovnh_u16(int16_t a)8369 int8_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 
test_vqmovns_u32(int32_t a)8375 int16_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 
test_vqmovnd_u64(int64_t a)8381 int32_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 
test_vceqs_f32(float32_t a,float32_t b)8387 uint32_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 
test_vceqd_f64(float64_t a,float64_t b)8393 uint64_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 
test_vceqzs_f32(float32_t a)8399 uint32_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 
test_vceqzd_f64(float64_t a)8405 uint64_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 
test_vcges_f32(float32_t a,float32_t b)8411 uint32_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 
test_vcged_f64(float64_t a,float64_t b)8417 uint64_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 
test_vcgezs_f32(float32_t a)8423 uint32_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 
test_vcgezd_f64(float64_t a)8429 uint64_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 
test_vcgts_f32(float32_t a,float32_t b)8435 uint32_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 
test_vcgtd_f64(float64_t a,float64_t b)8441 uint64_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 
test_vcgtzs_f32(float32_t a)8447 uint32_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 
test_vcgtzd_f64(float64_t a)8453 uint64_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 
test_vcles_f32(float32_t a,float32_t b)8459 uint32_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 
test_vcled_f64(float64_t a,float64_t b)8465 uint64_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 
test_vclezs_f32(float32_t a)8471 uint32_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 
test_vclezd_f64(float64_t a)8477 uint64_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 
test_vclts_f32(float32_t a,float32_t b)8483 uint32_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 
test_vcltd_f64(float64_t a,float64_t b)8489 uint64_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 
test_vcltzs_f32(float32_t a)8495 uint32_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 
test_vcltzd_f64(float64_t a)8501 uint64_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 
test_vcages_f32(float32_t a,float32_t b)8507 uint32_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 
test_vcaged_f64(float64_t a,float64_t b)8513 uint64_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 
test_vcagts_f32(float32_t a,float32_t b)8519 uint32_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 
test_vcagtd_f64(float64_t a,float64_t b)8525 uint64_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 
test_vcales_f32(float32_t a,float32_t b)8531 uint32_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 
test_vcaled_f64(float64_t a,float64_t b)8537 uint64_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 
test_vcalts_f32(float32_t a,float32_t b)8543 uint32_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 
test_vcaltd_f64(float64_t a,float64_t b)8549 uint64_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 
test_vshrd_n_s64(int64_t a)8555 int64_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 
test_vshr_n_s64(int64x1_t a)8561 int64x1_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 
test_vshrd_n_u64(uint64_t a)8567 uint64_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 
test_vshrd_n_u64_2()8574 uint64_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 
test_vshr_n_u64(uint64x1_t a)8582 uint64x1_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 
test_vrshrd_n_s64(int64_t a)8588 int64_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 
test_vrshr_n_s64(int64x1_t a)8594 int64x1_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 
test_vrshrd_n_u64(uint64_t a)8600 uint64_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 
test_vrshr_n_u64(uint64x1_t a)8606 uint64x1_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 
test_vsrad_n_s64(int64_t a,int64_t b)8612 int64_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 
test_vsra_n_s64(int64x1_t a,int64x1_t b)8618 int64x1_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 
test_vsrad_n_u64(uint64_t a,uint64_t b)8624 uint64_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 
test_vsrad_n_u64_2(uint64_t a,uint64_t b)8630 uint64_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 
test_vsra_n_u64(uint64x1_t a,uint64x1_t b)8637 uint64x1_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 
test_vrsrad_n_s64(int64_t a,int64_t b)8643 int64_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 
test_vrsra_n_s64(int64x1_t a,int64x1_t b)8649 int64x1_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 
test_vrsrad_n_u64(uint64_t a,uint64_t b)8655 uint64_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 
test_vrsra_n_u64(uint64x1_t a,uint64x1_t b)8661 uint64x1_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 
test_vshld_n_s64(int64_t a)8667 int64_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 }
test_vshl_n_s64(int64x1_t a)8672 int64x1_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 
test_vshld_n_u64(uint64_t a)8678 uint64_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 
test_vshl_n_u64(uint64x1_t a)8684 uint64x1_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 
test_vqshlb_n_s8(int8_t a)8690 int8_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 
test_vqshlh_n_s16(int16_t a)8696 int16_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 
test_vqshls_n_s32(int32_t a)8702 int32_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 
test_vqshld_n_s64(int64_t a)8708 int64_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 
test_vqshl_n_s8(int8x8_t a)8714 int8x8_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 
test_vqshlq_n_s8(int8x16_t a)8720 int8x16_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 
test_vqshl_n_s16(int16x4_t a)8726 int16x4_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 
test_vqshlq_n_s16(int16x8_t a)8732 int16x8_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 
test_vqshl_n_s32(int32x2_t a)8738 int32x2_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 
test_vqshlq_n_s32(int32x4_t a)8744 int32x4_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 
test_vqshlq_n_s64(int64x2_t a)8750 int64x2_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 
test_vqshl_n_u8(uint8x8_t a)8756 uint8x8_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 
test_vqshlq_n_u8(uint8x16_t a)8762 uint8x16_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 
test_vqshl_n_u16(uint16x4_t a)8768 uint16x4_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 
test_vqshlq_n_u16(uint16x8_t a)8774 uint16x8_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 
test_vqshl_n_u32(uint32x2_t a)8780 uint32x2_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 
test_vqshlq_n_u32(uint32x4_t a)8786 uint32x4_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 
test_vqshlq_n_u64(uint64x2_t a)8792 uint64x2_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 
test_vqshl_n_s64(int64x1_t a)8798 int64x1_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 
test_vqshlb_n_u8(uint8_t a)8804 uint8_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 
test_vqshlh_n_u16(uint16_t a)8810 uint16_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 
test_vqshls_n_u32(uint32_t a)8816 uint32_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 
test_vqshld_n_u64(uint64_t a)8822 uint64_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 
test_vqshl_n_u64(uint64x1_t a)8828 uint64x1_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 
test_vqshlub_n_s8(int8_t a)8834 int8_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 
test_vqshluh_n_s16(int16_t a)8840 int16_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 
test_vqshlus_n_s32(int32_t a)8846 int32_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 
test_vqshlud_n_s64(int64_t a)8852 int64_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 
test_vqshlu_n_s64(int64x1_t a)8858 uint64x1_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 
test_vsrid_n_s64(int64_t a,int64_t b)8864 int64_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 
test_vsri_n_s64(int64x1_t a,int64x1_t b)8870 int64x1_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 
test_vsrid_n_u64(uint64_t a,uint64_t b)8876 uint64_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 
test_vsri_n_u64(uint64x1_t a,uint64x1_t b)8882 uint64x1_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 
test_vslid_n_s64(int64_t a,int64_t b)8888 int64_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 
test_vsli_n_s64(int64x1_t a,int64x1_t b)8894 int64x1_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 
test_vslid_n_u64(uint64_t a,uint64_t b)8900 uint64_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 
test_vsli_n_u64(uint64x1_t a,uint64x1_t b)8906 uint64x1_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 
test_vqshrnh_n_s16(int16_t a)8912 int8_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 
test_vqshrns_n_s32(int32_t a)8918 int16_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 
test_vqshrnd_n_s64(int64_t a)8924 int32_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 
test_vqshrnh_n_u16(uint16_t a)8930 uint8_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 
test_vqshrns_n_u32(uint32_t a)8936 uint16_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 
test_vqshrnd_n_u64(uint64_t a)8942 uint32_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 
test_vqrshrnh_n_s16(int16_t a)8948 int8_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 
test_vqrshrns_n_s32(int32_t a)8954 int16_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 
test_vqrshrnd_n_s64(int64_t a)8960 int32_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 
test_vqrshrnh_n_u16(uint16_t a)8966 uint8_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 
test_vqrshrns_n_u32(uint32_t a)8972 uint16_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 
test_vqrshrnd_n_u64(uint64_t a)8978 uint32_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 
test_vqshrunh_n_s16(int16_t a)8984 int8_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 
test_vqshruns_n_s32(int32_t a)8990 int16_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 
test_vqshrund_n_s64(int64_t a)8996 int32_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 
test_vqrshrunh_n_s16(int16_t a)9002 int8_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 
test_vqrshruns_n_s32(int32_t a)9008 int16_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 
test_vqrshrund_n_s64(int64_t a)9014 int32_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 
test_vcvts_n_f32_s32(int32_t a)9020 float32_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 
test_vcvtd_n_f64_s64(int64_t a)9026 float64_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 
test_vcvts_n_f32_u32(uint32_t a)9032 float32_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 
test_vcvtd_n_f64_u64(uint64_t a)9038 float64_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 
test_vcvts_n_s32_f32(float32_t a)9044 int32_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 
test_vcvtd_n_s64_f64(float64_t a)9050 int64_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 
test_vcvts_n_u32_f32(float32_t a)9056 uint32_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 
test_vcvtd_n_u64_f64(float64_t a)9062 uint64_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
test_vreinterpret_s8_s16(int16x4_t a)9070 int8x8_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
test_vreinterpret_s8_s32(int32x2_t a)9076 int8x8_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
test_vreinterpret_s8_s64(int64x1_t a)9082 int8x8_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
test_vreinterpret_s8_u8(uint8x8_t a)9088 int8x8_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
test_vreinterpret_s8_u16(uint16x4_t a)9094 int8x8_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
test_vreinterpret_s8_u32(uint32x2_t a)9100 int8x8_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
test_vreinterpret_s8_u64(uint64x1_t a)9106 int8x8_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
test_vreinterpret_s8_f16(float16x4_t a)9112 int8x8_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
test_vreinterpret_s8_f32(float32x2_t a)9118 int8x8_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
test_vreinterpret_s8_f64(float64x1_t a)9124 int8x8_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
test_vreinterpret_s8_p8(poly8x8_t a)9130 int8x8_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
test_vreinterpret_s8_p16(poly16x4_t a)9136 int8x8_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
test_vreinterpret_s8_p64(poly64x1_t a)9142 int8x8_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
test_vreinterpret_s16_s8(int8x8_t a)9148 int16x4_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
test_vreinterpret_s16_s32(int32x2_t a)9154 int16x4_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
test_vreinterpret_s16_s64(int64x1_t a)9160 int16x4_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
test_vreinterpret_s16_u8(uint8x8_t a)9166 int16x4_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
test_vreinterpret_s16_u16(uint16x4_t a)9172 int16x4_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
test_vreinterpret_s16_u32(uint32x2_t a)9178 int16x4_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
test_vreinterpret_s16_u64(uint64x1_t a)9184 int16x4_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
test_vreinterpret_s16_f16(float16x4_t a)9190 int16x4_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
test_vreinterpret_s16_f32(float32x2_t a)9196 int16x4_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
test_vreinterpret_s16_f64(float64x1_t a)9202 int16x4_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
test_vreinterpret_s16_p8(poly8x8_t a)9208 int16x4_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
test_vreinterpret_s16_p16(poly16x4_t a)9214 int16x4_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
test_vreinterpret_s16_p64(poly64x1_t a)9220 int16x4_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
test_vreinterpret_s32_s8(int8x8_t a)9226 int32x2_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
test_vreinterpret_s32_s16(int16x4_t a)9232 int32x2_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
test_vreinterpret_s32_s64(int64x1_t a)9238 int32x2_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
test_vreinterpret_s32_u8(uint8x8_t a)9244 int32x2_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
test_vreinterpret_s32_u16(uint16x4_t a)9250 int32x2_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
test_vreinterpret_s32_u32(uint32x2_t a)9256 int32x2_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
test_vreinterpret_s32_u64(uint64x1_t a)9262 int32x2_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
test_vreinterpret_s32_f16(float16x4_t a)9268 int32x2_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
test_vreinterpret_s32_f32(float32x2_t a)9274 int32x2_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
test_vreinterpret_s32_f64(float64x1_t a)9280 int32x2_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
test_vreinterpret_s32_p8(poly8x8_t a)9286 int32x2_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
test_vreinterpret_s32_p16(poly16x4_t a)9292 int32x2_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
test_vreinterpret_s32_p64(poly64x1_t a)9298 int32x2_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
test_vreinterpret_s64_s8(int8x8_t a)9304 int64x1_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
test_vreinterpret_s64_s16(int16x4_t a)9310 int64x1_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
test_vreinterpret_s64_s32(int32x2_t a)9316 int64x1_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
test_vreinterpret_s64_u8(uint8x8_t a)9322 int64x1_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
test_vreinterpret_s64_u16(uint16x4_t a)9328 int64x1_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
test_vreinterpret_s64_u32(uint32x2_t a)9334 int64x1_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
test_vreinterpret_s64_u64(uint64x1_t a)9340 int64x1_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
test_vreinterpret_s64_f16(float16x4_t a)9346 int64x1_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
test_vreinterpret_s64_f32(float32x2_t a)9352 int64x1_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
test_vreinterpret_s64_f64(float64x1_t a)9358 int64x1_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
test_vreinterpret_s64_p8(poly8x8_t a)9364 int64x1_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
test_vreinterpret_s64_p16(poly16x4_t a)9370 int64x1_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
test_vreinterpret_s64_p64(poly64x1_t a)9376 int64x1_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
test_vreinterpret_u8_s8(int8x8_t a)9382 uint8x8_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
test_vreinterpret_u8_s16(int16x4_t a)9388 uint8x8_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
test_vreinterpret_u8_s32(int32x2_t a)9394 uint8x8_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
test_vreinterpret_u8_s64(int64x1_t a)9400 uint8x8_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
test_vreinterpret_u8_u16(uint16x4_t a)9406 uint8x8_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
test_vreinterpret_u8_u32(uint32x2_t a)9412 uint8x8_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
test_vreinterpret_u8_u64(uint64x1_t a)9418 uint8x8_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
test_vreinterpret_u8_f16(float16x4_t a)9424 uint8x8_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
test_vreinterpret_u8_f32(float32x2_t a)9430 uint8x8_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
test_vreinterpret_u8_f64(float64x1_t a)9436 uint8x8_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
test_vreinterpret_u8_p8(poly8x8_t a)9442 uint8x8_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
test_vreinterpret_u8_p16(poly16x4_t a)9448 uint8x8_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
test_vreinterpret_u8_p64(poly64x1_t a)9454 uint8x8_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
test_vreinterpret_u16_s8(int8x8_t a)9460 uint16x4_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
test_vreinterpret_u16_s16(int16x4_t a)9466 uint16x4_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
test_vreinterpret_u16_s32(int32x2_t a)9472 uint16x4_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
test_vreinterpret_u16_s64(int64x1_t a)9478 uint16x4_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
test_vreinterpret_u16_u8(uint8x8_t a)9484 uint16x4_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
test_vreinterpret_u16_u32(uint32x2_t a)9490 uint16x4_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
test_vreinterpret_u16_u64(uint64x1_t a)9496 uint16x4_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
test_vreinterpret_u16_f16(float16x4_t a)9502 uint16x4_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
test_vreinterpret_u16_f32(float32x2_t a)9508 uint16x4_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
test_vreinterpret_u16_f64(float64x1_t a)9514 uint16x4_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
test_vreinterpret_u16_p8(poly8x8_t a)9520 uint16x4_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
test_vreinterpret_u16_p16(poly16x4_t a)9526 uint16x4_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
test_vreinterpret_u16_p64(poly64x1_t a)9532 uint16x4_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
test_vreinterpret_u32_s8(int8x8_t a)9538 uint32x2_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
test_vreinterpret_u32_s16(int16x4_t a)9544 uint32x2_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
test_vreinterpret_u32_s32(int32x2_t a)9550 uint32x2_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
test_vreinterpret_u32_s64(int64x1_t a)9556 uint32x2_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
test_vreinterpret_u32_u8(uint8x8_t a)9562 uint32x2_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
test_vreinterpret_u32_u16(uint16x4_t a)9568 uint32x2_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
test_vreinterpret_u32_u64(uint64x1_t a)9574 uint32x2_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
test_vreinterpret_u32_f16(float16x4_t a)9580 uint32x2_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
test_vreinterpret_u32_f32(float32x2_t a)9586 uint32x2_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
test_vreinterpret_u32_f64(float64x1_t a)9592 uint32x2_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
test_vreinterpret_u32_p8(poly8x8_t a)9598 uint32x2_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
test_vreinterpret_u32_p16(poly16x4_t a)9604 uint32x2_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
test_vreinterpret_u32_p64(poly64x1_t a)9610 uint32x2_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
test_vreinterpret_u64_s8(int8x8_t a)9616 uint64x1_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
test_vreinterpret_u64_s16(int16x4_t a)9622 uint64x1_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
test_vreinterpret_u64_s32(int32x2_t a)9628 uint64x1_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
test_vreinterpret_u64_s64(int64x1_t a)9634 uint64x1_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
test_vreinterpret_u64_u8(uint8x8_t a)9640 uint64x1_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
test_vreinterpret_u64_u16(uint16x4_t a)9646 uint64x1_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
test_vreinterpret_u64_u32(uint32x2_t a)9652 uint64x1_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
test_vreinterpret_u64_f16(float16x4_t a)9658 uint64x1_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
test_vreinterpret_u64_f32(float32x2_t a)9664 uint64x1_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
test_vreinterpret_u64_f64(float64x1_t a)9670 uint64x1_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
test_vreinterpret_u64_p8(poly8x8_t a)9676 uint64x1_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
test_vreinterpret_u64_p16(poly16x4_t a)9682 uint64x1_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
test_vreinterpret_u64_p64(poly64x1_t a)9688 uint64x1_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
test_vreinterpret_f16_s8(int8x8_t a)9694 float16x4_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
test_vreinterpret_f16_s16(int16x4_t a)9700 float16x4_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
test_vreinterpret_f16_s32(int32x2_t a)9706 float16x4_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
test_vreinterpret_f16_s64(int64x1_t a)9712 float16x4_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
test_vreinterpret_f16_u8(uint8x8_t a)9718 float16x4_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
test_vreinterpret_f16_u16(uint16x4_t a)9724 float16x4_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
test_vreinterpret_f16_u32(uint32x2_t a)9730 float16x4_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
test_vreinterpret_f16_u64(uint64x1_t a)9736 float16x4_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
test_vreinterpret_f16_f32(float32x2_t a)9742 float16x4_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
test_vreinterpret_f16_f64(float64x1_t a)9748 float16x4_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
test_vreinterpret_f16_p8(poly8x8_t a)9754 float16x4_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
test_vreinterpret_f16_p16(poly16x4_t a)9760 float16x4_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
test_vreinterpret_f16_p64(poly64x1_t a)9766 float16x4_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
test_vreinterpret_f32_s8(int8x8_t a)9772 float32x2_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
test_vreinterpret_f32_s16(int16x4_t a)9778 float32x2_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
test_vreinterpret_f32_s32(int32x2_t a)9784 float32x2_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
test_vreinterpret_f32_s64(int64x1_t a)9790 float32x2_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
test_vreinterpret_f32_u8(uint8x8_t a)9796 float32x2_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
test_vreinterpret_f32_u16(uint16x4_t a)9802 float32x2_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
test_vreinterpret_f32_u32(uint32x2_t a)9808 float32x2_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
test_vreinterpret_f32_u64(uint64x1_t a)9814 float32x2_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
test_vreinterpret_f32_f16(float16x4_t a)9820 float32x2_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
test_vreinterpret_f32_f64(float64x1_t a)9826 float32x2_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
test_vreinterpret_f32_p8(poly8x8_t a)9832 float32x2_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
test_vreinterpret_f32_p16(poly16x4_t a)9838 float32x2_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
test_vreinterpret_f32_p64(poly64x1_t a)9844 float32x2_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
test_vreinterpret_f64_s8(int8x8_t a)9850 float64x1_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
test_vreinterpret_f64_s16(int16x4_t a)9856 float64x1_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
test_vreinterpret_f64_s32(int32x2_t a)9862 float64x1_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
test_vreinterpret_f64_s64(int64x1_t a)9868 float64x1_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
test_vreinterpret_f64_u8(uint8x8_t a)9874 float64x1_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
test_vreinterpret_f64_u16(uint16x4_t a)9880 float64x1_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
test_vreinterpret_f64_u32(uint32x2_t a)9886 float64x1_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
test_vreinterpret_f64_u64(uint64x1_t a)9892 float64x1_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
test_vreinterpret_f64_f16(float16x4_t a)9898 float64x1_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
test_vreinterpret_f64_f32(float32x2_t a)9904 float64x1_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
test_vreinterpret_f64_p8(poly8x8_t a)9910 float64x1_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
test_vreinterpret_f64_p16(poly16x4_t a)9916 float64x1_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
test_vreinterpret_f64_p64(poly64x1_t a)9922 float64x1_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
test_vreinterpret_p8_s8(int8x8_t a)9928 poly8x8_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
test_vreinterpret_p8_s16(int16x4_t a)9934 poly8x8_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
test_vreinterpret_p8_s32(int32x2_t a)9940 poly8x8_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
test_vreinterpret_p8_s64(int64x1_t a)9946 poly8x8_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
test_vreinterpret_p8_u8(uint8x8_t a)9952 poly8x8_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
test_vreinterpret_p8_u16(uint16x4_t a)9958 poly8x8_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
test_vreinterpret_p8_u32(uint32x2_t a)9964 poly8x8_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
test_vreinterpret_p8_u64(uint64x1_t a)9970 poly8x8_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
test_vreinterpret_p8_f16(float16x4_t a)9976 poly8x8_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
test_vreinterpret_p8_f32(float32x2_t a)9982 poly8x8_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
test_vreinterpret_p8_f64(float64x1_t a)9988 poly8x8_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
test_vreinterpret_p8_p16(poly16x4_t a)9994 poly8x8_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
test_vreinterpret_p8_p64(poly64x1_t a)10000 poly8x8_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
test_vreinterpret_p16_s8(int8x8_t a)10006 poly16x4_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
test_vreinterpret_p16_s16(int16x4_t a)10012 poly16x4_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
test_vreinterpret_p16_s32(int32x2_t a)10018 poly16x4_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
test_vreinterpret_p16_s64(int64x1_t a)10024 poly16x4_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
test_vreinterpret_p16_u8(uint8x8_t a)10030 poly16x4_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
test_vreinterpret_p16_u16(uint16x4_t a)10036 poly16x4_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
test_vreinterpret_p16_u32(uint32x2_t a)10042 poly16x4_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
test_vreinterpret_p16_u64(uint64x1_t a)10048 poly16x4_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
test_vreinterpret_p16_f16(float16x4_t a)10054 poly16x4_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
test_vreinterpret_p16_f32(float32x2_t a)10060 poly16x4_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
test_vreinterpret_p16_f64(float64x1_t a)10066 poly16x4_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
test_vreinterpret_p16_p8(poly8x8_t a)10072 poly16x4_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
test_vreinterpret_p16_p64(poly64x1_t a)10078 poly16x4_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
test_vreinterpret_p64_s8(int8x8_t a)10084 poly64x1_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
test_vreinterpret_p64_s16(int16x4_t a)10090 poly64x1_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
test_vreinterpret_p64_s32(int32x2_t a)10096 poly64x1_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
test_vreinterpret_p64_s64(int64x1_t a)10102 poly64x1_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
test_vreinterpret_p64_u8(uint8x8_t a)10108 poly64x1_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
test_vreinterpret_p64_u16(uint16x4_t a)10114 poly64x1_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
test_vreinterpret_p64_u32(uint32x2_t a)10120 poly64x1_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
test_vreinterpret_p64_u64(uint64x1_t a)10126 poly64x1_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
test_vreinterpret_p64_f16(float16x4_t a)10132 poly64x1_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
test_vreinterpret_p64_f32(float32x2_t a)10138 poly64x1_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
test_vreinterpret_p64_f64(float64x1_t a)10144 poly64x1_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
test_vreinterpret_p64_p8(poly8x8_t a)10150 poly64x1_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
test_vreinterpret_p64_p16(poly16x4_t a)10156 poly64x1_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
test_vreinterpretq_s8_s16(int16x8_t a)10162 int8x16_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
test_vreinterpretq_s8_s32(int32x4_t a)10168 int8x16_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
test_vreinterpretq_s8_s64(int64x2_t a)10174 int8x16_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
test_vreinterpretq_s8_u8(uint8x16_t a)10180 int8x16_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
test_vreinterpretq_s8_u16(uint16x8_t a)10186 int8x16_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
test_vreinterpretq_s8_u32(uint32x4_t a)10192 int8x16_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
test_vreinterpretq_s8_u64(uint64x2_t a)10198 int8x16_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
test_vreinterpretq_s8_f16(float16x8_t a)10204 int8x16_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
test_vreinterpretq_s8_f32(float32x4_t a)10210 int8x16_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
test_vreinterpretq_s8_f64(float64x2_t a)10216 int8x16_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
test_vreinterpretq_s8_p8(poly8x16_t a)10222 int8x16_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
test_vreinterpretq_s8_p16(poly16x8_t a)10228 int8x16_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
test_vreinterpretq_s8_p64(poly64x2_t a)10234 int8x16_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
test_vreinterpretq_s16_s8(int8x16_t a)10240 int16x8_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
test_vreinterpretq_s16_s32(int32x4_t a)10246 int16x8_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
test_vreinterpretq_s16_s64(int64x2_t a)10252 int16x8_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
test_vreinterpretq_s16_u8(uint8x16_t a)10258 int16x8_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
test_vreinterpretq_s16_u16(uint16x8_t a)10264 int16x8_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
test_vreinterpretq_s16_u32(uint32x4_t a)10270 int16x8_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
test_vreinterpretq_s16_u64(uint64x2_t a)10276 int16x8_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
test_vreinterpretq_s16_f16(float16x8_t a)10282 int16x8_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
test_vreinterpretq_s16_f32(float32x4_t a)10288 int16x8_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
test_vreinterpretq_s16_f64(float64x2_t a)10294 int16x8_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
test_vreinterpretq_s16_p8(poly8x16_t a)10300 int16x8_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
test_vreinterpretq_s16_p16(poly16x8_t a)10306 int16x8_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
test_vreinterpretq_s16_p64(poly64x2_t a)10312 int16x8_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
test_vreinterpretq_s32_s8(int8x16_t a)10318 int32x4_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
test_vreinterpretq_s32_s16(int16x8_t a)10324 int32x4_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
test_vreinterpretq_s32_s64(int64x2_t a)10330 int32x4_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
test_vreinterpretq_s32_u8(uint8x16_t a)10336 int32x4_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
test_vreinterpretq_s32_u16(uint16x8_t a)10342 int32x4_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
test_vreinterpretq_s32_u32(uint32x4_t a)10348 int32x4_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
test_vreinterpretq_s32_u64(uint64x2_t a)10354 int32x4_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
test_vreinterpretq_s32_f16(float16x8_t a)10360 int32x4_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
test_vreinterpretq_s32_f32(float32x4_t a)10366 int32x4_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
test_vreinterpretq_s32_f64(float64x2_t a)10372 int32x4_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
test_vreinterpretq_s32_p8(poly8x16_t a)10378 int32x4_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
test_vreinterpretq_s32_p16(poly16x8_t a)10384 int32x4_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
test_vreinterpretq_s32_p64(poly64x2_t a)10390 int32x4_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
test_vreinterpretq_s64_s8(int8x16_t a)10396 int64x2_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
test_vreinterpretq_s64_s16(int16x8_t a)10402 int64x2_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
test_vreinterpretq_s64_s32(int32x4_t a)10408 int64x2_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
test_vreinterpretq_s64_u8(uint8x16_t a)10414 int64x2_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
test_vreinterpretq_s64_u16(uint16x8_t a)10420 int64x2_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
test_vreinterpretq_s64_u32(uint32x4_t a)10426 int64x2_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
test_vreinterpretq_s64_u64(uint64x2_t a)10432 int64x2_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
test_vreinterpretq_s64_f16(float16x8_t a)10438 int64x2_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
test_vreinterpretq_s64_f32(float32x4_t a)10444 int64x2_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
test_vreinterpretq_s64_f64(float64x2_t a)10450 int64x2_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
test_vreinterpretq_s64_p8(poly8x16_t a)10456 int64x2_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
test_vreinterpretq_s64_p16(poly16x8_t a)10462 int64x2_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
test_vreinterpretq_s64_p64(poly64x2_t a)10468 int64x2_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
test_vreinterpretq_u8_s8(int8x16_t a)10474 uint8x16_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
test_vreinterpretq_u8_s16(int16x8_t a)10480 uint8x16_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
test_vreinterpretq_u8_s32(int32x4_t a)10486 uint8x16_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
test_vreinterpretq_u8_s64(int64x2_t a)10492 uint8x16_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
test_vreinterpretq_u8_u16(uint16x8_t a)10498 uint8x16_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
test_vreinterpretq_u8_u32(uint32x4_t a)10504 uint8x16_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
test_vreinterpretq_u8_u64(uint64x2_t a)10510 uint8x16_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
test_vreinterpretq_u8_f16(float16x8_t a)10516 uint8x16_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
test_vreinterpretq_u8_f32(float32x4_t a)10522 uint8x16_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
test_vreinterpretq_u8_f64(float64x2_t a)10528 uint8x16_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
test_vreinterpretq_u8_p8(poly8x16_t a)10534 uint8x16_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
test_vreinterpretq_u8_p16(poly16x8_t a)10540 uint8x16_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
test_vreinterpretq_u8_p64(poly64x2_t a)10546 uint8x16_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
test_vreinterpretq_u16_s8(int8x16_t a)10552 uint16x8_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
test_vreinterpretq_u16_s16(int16x8_t a)10558 uint16x8_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
test_vreinterpretq_u16_s32(int32x4_t a)10564 uint16x8_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
test_vreinterpretq_u16_s64(int64x2_t a)10570 uint16x8_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
test_vreinterpretq_u16_u8(uint8x16_t a)10576 uint16x8_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
test_vreinterpretq_u16_u32(uint32x4_t a)10582 uint16x8_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
test_vreinterpretq_u16_u64(uint64x2_t a)10588 uint16x8_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
test_vreinterpretq_u16_f16(float16x8_t a)10594 uint16x8_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
test_vreinterpretq_u16_f32(float32x4_t a)10600 uint16x8_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
test_vreinterpretq_u16_f64(float64x2_t a)10606 uint16x8_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
test_vreinterpretq_u16_p8(poly8x16_t a)10612 uint16x8_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
test_vreinterpretq_u16_p16(poly16x8_t a)10618 uint16x8_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
test_vreinterpretq_u16_p64(poly64x2_t a)10624 uint16x8_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
test_vreinterpretq_u32_s8(int8x16_t a)10630 uint32x4_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
test_vreinterpretq_u32_s16(int16x8_t a)10636 uint32x4_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
test_vreinterpretq_u32_s32(int32x4_t a)10642 uint32x4_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
test_vreinterpretq_u32_s64(int64x2_t a)10648 uint32x4_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
test_vreinterpretq_u32_u8(uint8x16_t a)10654 uint32x4_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
test_vreinterpretq_u32_u16(uint16x8_t a)10660 uint32x4_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
test_vreinterpretq_u32_u64(uint64x2_t a)10666 uint32x4_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
test_vreinterpretq_u32_f16(float16x8_t a)10672 uint32x4_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
test_vreinterpretq_u32_f32(float32x4_t a)10678 uint32x4_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
test_vreinterpretq_u32_f64(float64x2_t a)10684 uint32x4_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
test_vreinterpretq_u32_p8(poly8x16_t a)10690 uint32x4_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
test_vreinterpretq_u32_p16(poly16x8_t a)10696 uint32x4_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
test_vreinterpretq_u32_p64(poly64x2_t a)10702 uint32x4_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
test_vreinterpretq_u64_s8(int8x16_t a)10708 uint64x2_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
test_vreinterpretq_u64_s16(int16x8_t a)10714 uint64x2_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
test_vreinterpretq_u64_s32(int32x4_t a)10720 uint64x2_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
test_vreinterpretq_u64_s64(int64x2_t a)10726 uint64x2_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
test_vreinterpretq_u64_u8(uint8x16_t a)10732 uint64x2_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
test_vreinterpretq_u64_u16(uint16x8_t a)10738 uint64x2_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
test_vreinterpretq_u64_u32(uint32x4_t a)10744 uint64x2_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
test_vreinterpretq_u64_f16(float16x8_t a)10750 uint64x2_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
test_vreinterpretq_u64_f32(float32x4_t a)10756 uint64x2_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
test_vreinterpretq_u64_f64(float64x2_t a)10762 uint64x2_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
test_vreinterpretq_u64_p8(poly8x16_t a)10768 uint64x2_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
test_vreinterpretq_u64_p16(poly16x8_t a)10774 uint64x2_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
test_vreinterpretq_u64_p64(poly64x2_t a)10780 uint64x2_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
test_vreinterpretq_f16_s8(int8x16_t a)10786 float16x8_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
test_vreinterpretq_f16_s16(int16x8_t a)10792 float16x8_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
test_vreinterpretq_f16_s32(int32x4_t a)10798 float16x8_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
test_vreinterpretq_f16_s64(int64x2_t a)10804 float16x8_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
test_vreinterpretq_f16_u8(uint8x16_t a)10810 float16x8_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
test_vreinterpretq_f16_u16(uint16x8_t a)10816 float16x8_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
test_vreinterpretq_f16_u32(uint32x4_t a)10822 float16x8_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
test_vreinterpretq_f16_u64(uint64x2_t a)10828 float16x8_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
test_vreinterpretq_f16_f32(float32x4_t a)10834 float16x8_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
test_vreinterpretq_f16_f64(float64x2_t a)10840 float16x8_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
test_vreinterpretq_f16_p8(poly8x16_t a)10846 float16x8_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
test_vreinterpretq_f16_p16(poly16x8_t a)10852 float16x8_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
test_vreinterpretq_f16_p64(poly64x2_t a)10858 float16x8_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
test_vreinterpretq_f32_s8(int8x16_t a)10864 float32x4_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
test_vreinterpretq_f32_s16(int16x8_t a)10870 float32x4_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
test_vreinterpretq_f32_s32(int32x4_t a)10876 float32x4_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
test_vreinterpretq_f32_s64(int64x2_t a)10882 float32x4_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
test_vreinterpretq_f32_u8(uint8x16_t a)10888 float32x4_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
test_vreinterpretq_f32_u16(uint16x8_t a)10894 float32x4_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
test_vreinterpretq_f32_u32(uint32x4_t a)10900 float32x4_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
test_vreinterpretq_f32_u64(uint64x2_t a)10906 float32x4_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
test_vreinterpretq_f32_f16(float16x8_t a)10912 float32x4_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
test_vreinterpretq_f32_f64(float64x2_t a)10918 float32x4_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
test_vreinterpretq_f32_p8(poly8x16_t a)10924 float32x4_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
test_vreinterpretq_f32_p16(poly16x8_t a)10930 float32x4_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
test_vreinterpretq_f32_p64(poly64x2_t a)10936 float32x4_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
test_vreinterpretq_f64_s8(int8x16_t a)10942 float64x2_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
test_vreinterpretq_f64_s16(int16x8_t a)10948 float64x2_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
test_vreinterpretq_f64_s32(int32x4_t a)10954 float64x2_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
test_vreinterpretq_f64_s64(int64x2_t a)10960 float64x2_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
test_vreinterpretq_f64_u8(uint8x16_t a)10966 float64x2_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
test_vreinterpretq_f64_u16(uint16x8_t a)10972 float64x2_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
test_vreinterpretq_f64_u32(uint32x4_t a)10978 float64x2_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
test_vreinterpretq_f64_u64(uint64x2_t a)10984 float64x2_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
test_vreinterpretq_f64_f16(float16x8_t a)10990 float64x2_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
test_vreinterpretq_f64_f32(float32x4_t a)10996 float64x2_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
test_vreinterpretq_f64_p8(poly8x16_t a)11002 float64x2_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
test_vreinterpretq_f64_p16(poly16x8_t a)11008 float64x2_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
test_vreinterpretq_f64_p64(poly64x2_t a)11014 float64x2_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
test_vreinterpretq_p8_s8(int8x16_t a)11020 poly8x16_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
test_vreinterpretq_p8_s16(int16x8_t a)11026 poly8x16_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
test_vreinterpretq_p8_s32(int32x4_t a)11032 poly8x16_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
test_vreinterpretq_p8_s64(int64x2_t a)11038 poly8x16_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
test_vreinterpretq_p8_u8(uint8x16_t a)11044 poly8x16_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
test_vreinterpretq_p8_u16(uint16x8_t a)11050 poly8x16_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
test_vreinterpretq_p8_u32(uint32x4_t a)11056 poly8x16_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
test_vreinterpretq_p8_u64(uint64x2_t a)11062 poly8x16_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
test_vreinterpretq_p8_f16(float16x8_t a)11068 poly8x16_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
test_vreinterpretq_p8_f32(float32x4_t a)11074 poly8x16_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
test_vreinterpretq_p8_f64(float64x2_t a)11080 poly8x16_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
test_vreinterpretq_p8_p16(poly16x8_t a)11086 poly8x16_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
test_vreinterpretq_p8_p64(poly64x2_t a)11092 poly8x16_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
test_vreinterpretq_p16_s8(int8x16_t a)11098 poly16x8_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
test_vreinterpretq_p16_s16(int16x8_t a)11104 poly16x8_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
test_vreinterpretq_p16_s32(int32x4_t a)11110 poly16x8_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
test_vreinterpretq_p16_s64(int64x2_t a)11116 poly16x8_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
test_vreinterpretq_p16_u8(uint8x16_t a)11122 poly16x8_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
test_vreinterpretq_p16_u16(uint16x8_t a)11128 poly16x8_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
test_vreinterpretq_p16_u32(uint32x4_t a)11134 poly16x8_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
test_vreinterpretq_p16_u64(uint64x2_t a)11140 poly16x8_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
test_vreinterpretq_p16_f16(float16x8_t a)11146 poly16x8_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
test_vreinterpretq_p16_f32(float32x4_t a)11152 poly16x8_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
test_vreinterpretq_p16_f64(float64x2_t a)11158 poly16x8_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
test_vreinterpretq_p16_p8(poly8x16_t a)11164 poly16x8_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
test_vreinterpretq_p16_p64(poly64x2_t a)11170 poly16x8_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
test_vreinterpretq_p64_s8(int8x16_t a)11176 poly64x2_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
test_vreinterpretq_p64_s16(int16x8_t a)11182 poly64x2_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
test_vreinterpretq_p64_s32(int32x4_t a)11188 poly64x2_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
test_vreinterpretq_p64_s64(int64x2_t a)11194 poly64x2_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
test_vreinterpretq_p64_u8(uint8x16_t a)11200 poly64x2_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
test_vreinterpretq_p64_u16(uint16x8_t a)11206 poly64x2_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
test_vreinterpretq_p64_u32(uint32x4_t a)11212 poly64x2_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
test_vreinterpretq_p64_u64(uint64x2_t a)11218 poly64x2_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
test_vreinterpretq_p64_f16(float16x8_t a)11224 poly64x2_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
test_vreinterpretq_p64_f32(float32x4_t a)11230 poly64x2_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
test_vreinterpretq_p64_f64(float64x2_t a)11236 poly64x2_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
test_vreinterpretq_p64_p8(poly8x16_t a)11242 poly64x2_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
test_vreinterpretq_p64_p16(poly16x8_t a)11248 poly64x2_t test_vreinterpretq_p64_p16(poly16x8_t a) {
11249   return vreinterpretq_p64_p16(a);
11250 }
11251 
test_vabds_f32(float32_t a,float32_t b)11252 float32_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 
test_vabdd_f64(float64_t a,float64_t b)11258 float64_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 
test_vuqadd_s64(int64x1_t a,uint64x1_t b)11264 int64x1_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 
test_vsqadd_u64(uint64x1_t a,int64x1_t b)11270 uint64x1_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 
test_vsqadd_u8(uint8x8_t a,int8x8_t b)11276 uint8x8_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 
test_vsqaddq_u8(uint8x16_t a,int8x16_t b)11282 uint8x16_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 
test_vsqadd_u16(uint16x4_t a,int16x4_t b)11288 uint16x4_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 
test_vsqaddq_u16(uint16x8_t a,int16x8_t b)11294 uint16x8_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 
test_vsqadd_u32(uint32x2_t a,int32x2_t b)11300 uint32x2_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 
test_vsqaddq_u32(uint32x4_t a,int32x4_t b)11306 uint32x4_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 
test_vsqaddq_u64(uint64x2_t a,int64x2_t b)11312 uint64x2_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 
test_vabs_s64(int64x1_t a)11318 int64x1_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 
test_vqabs_s64(int64x1_t a)11324 int64x1_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 
test_vqneg_s64(int64x1_t a)11330 int64x1_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 
test_vneg_s64(int64x1_t a)11336 int64x1_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 
test_vaddv_f32(float32x2_t a)11342 float32_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 
test_vaddvq_f32(float32x4_t a)11348 float32_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 
test_vaddvq_f64(float64x2_t a)11355 float64_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 
test_vmaxv_f32(float32x2_t a)11361 float32_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 
test_vmaxvq_f64(float64x2_t a)11367 float64_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 
test_vminv_f32(float32x2_t a)11373 float32_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 
test_vminvq_f64(float64x2_t a)11379 float64_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 
test_vmaxnmvq_f64(float64x2_t a)11385 float64_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 
test_vmaxnmv_f32(float32x2_t a)11391 float32_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 
test_vminnmvq_f64(float64x2_t a)11397 float64_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 
test_vminnmv_f32(float32x2_t a)11403 float32_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 
test_vpaddq_s64(int64x2_t a,int64x2_t b)11409 int64x2_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 
test_vpaddq_u64(uint64x2_t a,uint64x2_t b)11415 uint64x2_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 
test_vpaddd_u64(uint64x2_t a)11421 uint64_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 
test_vaddvq_s64(int64x2_t a)11427 int64_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 
test_vaddvq_u64(uint64x2_t a)11433 uint64_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 
test_vadd_f64(float64x1_t a,float64x1_t b)11439 float64x1_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 
test_vmul_f64(float64x1_t a,float64x1_t b)11445 float64x1_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 
test_vdiv_f64(float64x1_t a,float64x1_t b)11451 float64x1_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 
test_vmla_f64(float64x1_t a,float64x1_t b,float64x1_t c)11457 float64x1_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 
test_vmls_f64(float64x1_t a,float64x1_t b,float64x1_t c)11463 float64x1_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 
test_vfma_f64(float64x1_t a,float64x1_t b,float64x1_t c)11469 float64x1_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 
test_vfms_f64(float64x1_t a,float64x1_t b,float64x1_t c)11475 float64x1_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 
test_vsub_f64(float64x1_t a,float64x1_t b)11481 float64x1_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 
test_vabd_f64(float64x1_t a,float64x1_t b)11487 float64x1_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 
test_vmax_f64(float64x1_t a,float64x1_t b)11493 float64x1_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 
test_vmin_f64(float64x1_t a,float64x1_t b)11499 float64x1_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 
test_vmaxnm_f64(float64x1_t a,float64x1_t b)11505 float64x1_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 
test_vminnm_f64(float64x1_t a,float64x1_t b)11511 float64x1_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 
test_vabs_f64(float64x1_t a)11517 float64x1_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 
test_vneg_f64(float64x1_t a)11523 float64x1_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 
test_vcvt_s64_f64(float64x1_t a)11529 int64x1_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 
test_vcvt_u64_f64(float64x1_t a)11535 uint64x1_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 
test_vcvtn_s64_f64(float64x1_t a)11541 int64x1_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 
test_vcvtn_u64_f64(float64x1_t a)11547 uint64x1_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 
test_vcvtp_s64_f64(float64x1_t a)11553 int64x1_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 
test_vcvtp_u64_f64(float64x1_t a)11559 uint64x1_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 
test_vcvtm_s64_f64(float64x1_t a)11565 int64x1_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 
test_vcvtm_u64_f64(float64x1_t a)11571 uint64x1_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 
test_vcvta_s64_f64(float64x1_t a)11577 int64x1_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 
test_vcvta_u64_f64(float64x1_t a)11583 uint64x1_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 
test_vcvt_f64_s64(int64x1_t a)11589 float64x1_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 
test_vcvt_f64_u64(uint64x1_t a)11595 float64x1_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 
test_vcvt_n_s64_f64(float64x1_t a)11601 int64x1_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 
test_vcvt_n_u64_f64(float64x1_t a)11607 uint64x1_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 
test_vcvt_n_f64_s64(int64x1_t a)11613 float64x1_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 
test_vcvt_n_f64_u64(uint64x1_t a)11619 float64x1_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 
test_vrndn_f64(float64x1_t a)11625 float64x1_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 
test_vrnda_f64(float64x1_t a)11631 float64x1_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 
test_vrndp_f64(float64x1_t a)11637 float64x1_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 
test_vrndm_f64(float64x1_t a)11643 float64x1_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 
test_vrndx_f64(float64x1_t a)11649 float64x1_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 
test_vrnd_f64(float64x1_t a)11655 float64x1_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 
test_vrndi_f64(float64x1_t a)11661 float64x1_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 
test_vrsqrte_f64(float64x1_t a)11667 float64x1_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 
test_vrecpe_f64(float64x1_t a)11673 float64x1_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 
test_vsqrt_f64(float64x1_t a)11679 float64x1_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 
test_vrecps_f64(float64x1_t a,float64x1_t b)11685 float64x1_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 
test_vrsqrts_f64(float64x1_t a,float64x1_t b)11691 float64x1_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 
test_vminv_s32(int32x2_t a)11697 int32_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 
test_vminv_u32(uint32x2_t a)11703 uint32_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 
test_vmaxv_s32(int32x2_t a)11709 int32_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 
test_vmaxv_u32(uint32x2_t a)11715 uint32_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 
test_vaddv_s32(int32x2_t a)11721 int32_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 
test_vaddv_u32(uint32x2_t a)11727 uint32_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 
test_vaddlv_s32(int32x2_t a)11733 int64_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 
test_vaddlv_u32(uint32x2_t a)11739 uint64_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