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