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