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