1 // REQUIRES: aarch64-registered-target
2 // RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-feature +neon  \
3 // RUN:   -S -O1 -o - -ffreestanding %s | FileCheck %s
4 
5 // We're explicitly using arm_neon.h here: some types probably don't match
6 // the ACLE definitions, but we want to check current codegen.
7 #include <arm_neon.h>
8 
test_vrsqrtss_f32(float a,float b)9 float test_vrsqrtss_f32(float a, float b) {
10 // CHECK: test_vrsqrtss_f32
11   return vrsqrtss_f32(a, b);
12 // CHECK: frsqrts {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
13 }
14 
test_vrsqrtsd_f64(double a,double b)15 double test_vrsqrtsd_f64(double a, double b) {
16 // CHECK: test_vrsqrtsd_f64
17   return vrsqrtsd_f64(a, b);
18 // CHECK: frsqrts {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
19 }
20 
test_vrshl_s64(int64x1_t a,int64x1_t b)21 int64x1_t test_vrshl_s64(int64x1_t a, int64x1_t b) {
22 // CHECK: test_vrshl_s64
23   return vrshl_s64(a, b);
24 // CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
25 }
26 
test_vrshl_u64(uint64x1_t a,int64x1_t b)27 uint64x1_t test_vrshl_u64(uint64x1_t a, int64x1_t b) {
28 // CHECK: test_vrshl_u64
29   return vrshl_u64(a, b);
30 // CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
31 }
32 
33 // CHECK: test_vrshld_s64
test_vrshld_s64(int64_t a,int64_t b)34 int64_t test_vrshld_s64(int64_t a, int64_t b) {
35   return vrshld_s64(a, b);
36 // CHECK: srshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
37 }
38 
39 // CHECK: test_vrshld_u64
test_vrshld_u64(uint64_t a,uint64_t b)40 uint64_t test_vrshld_u64(uint64_t a, uint64_t b) {
41   return vrshld_u64(a, b);
42 // CHECK: urshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
43 }
44 
45 // CHECK: test_vqrshlb_s8
test_vqrshlb_s8(int8_t a,int8_t b)46 int8_t test_vqrshlb_s8(int8_t a, int8_t b) {
47   return vqrshlb_s8(a, b);
48 // CHECK: sqrshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
49 }
50 
51 // CHECK: test_vqrshlh_s16
test_vqrshlh_s16(int16_t a,int16_t b)52 int16_t test_vqrshlh_s16(int16_t a, int16_t b) {
53   return vqrshlh_s16(a, b);
54 // CHECK: sqrshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
55 }
56 
57 // CHECK: test_vqrshls_s32
test_vqrshls_s32(int32_t a,int32_t b)58 int32_t test_vqrshls_s32(int32_t a, int32_t b) {
59   return vqrshls_s32(a, b);
60 // CHECK: sqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
61 }
62 
63 // CHECK: test_vqrshld_s64
test_vqrshld_s64(int64_t a,int64_t b)64 int64_t test_vqrshld_s64(int64_t a, int64_t b) {
65   return vqrshld_s64(a, b);
66 // CHECK: sqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
67 }
68 
69 // CHECK: test_vqrshlb_u8
test_vqrshlb_u8(uint8_t a,uint8_t b)70 uint8_t test_vqrshlb_u8(uint8_t a, uint8_t b) {
71   return vqrshlb_u8(a, b);
72 // CHECK: uqrshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
73 }
74 
75 // CHECK: test_vqrshlh_u16
test_vqrshlh_u16(uint16_t a,uint16_t b)76 uint16_t test_vqrshlh_u16(uint16_t a, uint16_t b) {
77   return vqrshlh_u16(a, b);
78 // CHECK: uqrshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
79 }
80 
81 // CHECK: test_vqrshls_u32
test_vqrshls_u32(uint32_t a,uint32_t b)82 uint32_t test_vqrshls_u32(uint32_t a, uint32_t b) {
83   return vqrshls_u32(a, b);
84 // CHECK: uqrshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
85 }
86 
87 // CHECK: test_vqrshld_u64
test_vqrshld_u64(uint64_t a,uint64_t b)88 uint64_t test_vqrshld_u64(uint64_t a, uint64_t b) {
89   return vqrshld_u64(a, b);
90 // CHECK: uqrshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
91 }
92 
93 // CHECK: test_vqshlb_s8
test_vqshlb_s8(int8_t a,int8_t b)94 int8_t test_vqshlb_s8(int8_t a, int8_t b) {
95   return vqshlb_s8(a, b);
96 // CHECK: sqshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
97 }
98 
99 // CHECK: test_vqshlh_s16
test_vqshlh_s16(int16_t a,int16_t b)100 int16_t test_vqshlh_s16(int16_t a, int16_t b) {
101   return vqshlh_s16(a, b);
102 // CHECK: sqshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
103 }
104 
105 // CHECK: test_vqshls_s32
test_vqshls_s32(int32_t a,int32_t b)106 int32_t test_vqshls_s32(int32_t a, int32_t b) {
107   return vqshls_s32(a, b);
108 // CHECK: sqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
109 }
110 
111 // CHECK: test_vqshld_s64
test_vqshld_s64(int64_t a,int64_t b)112 int64_t test_vqshld_s64(int64_t a, int64_t b) {
113   return vqshld_s64(a, b);
114 // CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
115 }
116 
117 // CHECK: test_vqshld_s64_i
test_vqshld_s64_i(int64_t a)118 int64_t test_vqshld_s64_i(int64_t a) {
119   return vqshld_s64(a, 36);
120 // CHECK: sqshl {{d[0-9]+}}, {{d[0-9]+}}, #36
121 }
122 
123 // CHECK: test_vqshlb_u8
test_vqshlb_u8(uint8_t a,uint8_t b)124 uint8_t test_vqshlb_u8(uint8_t a, uint8_t b) {
125   return vqshlb_u8(a, b);
126 // CHECK: uqshl.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
127 }
128 
129 // CHECK: test_vqshlh_u16
test_vqshlh_u16(uint16_t a,uint16_t b)130 uint16_t test_vqshlh_u16(uint16_t a, uint16_t b) {
131   return vqshlh_u16(a, b);
132 // CHECK: uqshl.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
133 }
134 
135 // CHECK: test_vqshls_u32
test_vqshls_u32(uint32_t a,uint32_t b)136 uint32_t test_vqshls_u32(uint32_t a, uint32_t b) {
137   return vqshls_u32(a, b);
138 // CHECK: uqshl {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
139 }
140 
141 // CHECK: test_vqshld_u64
test_vqshld_u64(uint64_t a,uint64_t b)142 uint64_t test_vqshld_u64(uint64_t a, uint64_t b) {
143   return vqshld_u64(a, b);
144 // CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
145 }
146 
147 // CHECK: test_vqshld_u64_i
test_vqshld_u64_i(uint64_t a)148 uint64_t test_vqshld_u64_i(uint64_t a) {
149   return vqshld_u64(a, 36);
150 // CHECK: uqshl {{d[0-9]+}}, {{d[0-9]+}}, #36
151 }
152 
153 // CHECK: test_vshld_u64
test_vshld_u64(uint64_t a,uint64_t b)154 uint64_t test_vshld_u64(uint64_t a, uint64_t b) {
155   return vshld_u64(a, b);
156 // CHECK: ushl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
157 }
158 
159 // CHECK: test_vshld_s64
test_vshld_s64(int64_t a,int64_t b)160 int64_t test_vshld_s64(int64_t a, int64_t b) {
161   return vshld_s64(a, b);
162 // CHECK: sshl {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
163 }
164 
165 // CHECK: test_vqdmullh_s16
test_vqdmullh_s16(int16_t a,int16_t b)166 int32_t test_vqdmullh_s16(int16_t a, int16_t b) {
167   return vqdmullh_s16(a, b);
168 // CHECK: sqdmull.4s {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
169 }
170 
171 // CHECK: test_vqdmulls_s32
test_vqdmulls_s32(int32_t a,int32_t b)172 int64_t test_vqdmulls_s32(int32_t a, int32_t b) {
173   return vqdmulls_s32(a, b);
174 // CHECK: sqdmull {{d[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
175 }
176 
177 // CHECK: test_vqaddb_s8
test_vqaddb_s8(int8_t a,int8_t b)178 int8_t test_vqaddb_s8(int8_t a, int8_t b) {
179   return vqaddb_s8(a, b);
180 // CHECK: sqadd.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
181 }
182 
183 // CHECK: test_vqaddh_s16
test_vqaddh_s16(int16_t a,int16_t b)184 int16_t test_vqaddh_s16(int16_t a, int16_t b) {
185   return vqaddh_s16(a, b);
186 // CHECK: sqadd.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
187 }
188 
189 // CHECK: test_vqadds_s32
test_vqadds_s32(int32_t a,int32_t b)190 int32_t test_vqadds_s32(int32_t a, int32_t b) {
191   return vqadds_s32(a, b);
192 // CHECK: sqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
193 }
194 
195 // CHECK: test_vqaddd_s64
test_vqaddd_s64(int64_t a,int64_t b)196 int64_t test_vqaddd_s64(int64_t a, int64_t b) {
197   return vqaddd_s64(a, b);
198 // CHECK: sqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
199 }
200 
201 // CHECK: test_vqaddb_u8
test_vqaddb_u8(uint8_t a,uint8_t b)202 uint8_t test_vqaddb_u8(uint8_t a, uint8_t b) {
203   return vqaddb_u8(a, b);
204 // CHECK: uqadd.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
205 }
206 
207 // CHECK: test_vqaddh_u16
test_vqaddh_u16(uint16_t a,uint16_t b)208 uint16_t test_vqaddh_u16(uint16_t a, uint16_t b) {
209   return vqaddh_u16(a, b);
210 // CHECK: uqadd.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
211 }
212 
213 // CHECK: test_vqadds_u32
test_vqadds_u32(uint32_t a,uint32_t b)214 uint32_t test_vqadds_u32(uint32_t a, uint32_t b) {
215   return vqadds_u32(a, b);
216 // CHECK: uqadd {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
217 }
218 
219 // CHECK: test_vqaddd_u64
test_vqaddd_u64(uint64_t a,uint64_t b)220 uint64_t test_vqaddd_u64(uint64_t a, uint64_t b) {
221   return vqaddd_u64(a, b);
222 // CHECK: uqadd {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
223 }
224 
225 // CHECK: test_vqsubb_s8
test_vqsubb_s8(int8_t a,int8_t b)226 int8_t test_vqsubb_s8(int8_t a, int8_t b) {
227   return vqsubb_s8(a, b);
228 // CHECK: sqsub.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
229 }
230 
231 // CHECK: test_vqsubh_s16
test_vqsubh_s16(int16_t a,int16_t b)232 int16_t test_vqsubh_s16(int16_t a, int16_t b) {
233   return vqsubh_s16(a, b);
234 // CHECK: sqsub.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
235 }
236 
237 // CHECK: test_vqsubs_s32
test_vqsubs_s32(int32_t a,int32_t b)238 int32_t test_vqsubs_s32(int32_t a, int32_t b) {
239   return vqsubs_s32(a, b);
240 // CHECK: sqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
241 }
242 
243 // CHECK: test_vqsubd_s64
test_vqsubd_s64(int64_t a,int64_t b)244 int64_t test_vqsubd_s64(int64_t a, int64_t b) {
245   return vqsubd_s64(a, b);
246 // CHECK: sqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
247 }
248 
249 // CHECK: test_vqsubb_u8
test_vqsubb_u8(uint8_t a,uint8_t b)250 uint8_t test_vqsubb_u8(uint8_t a, uint8_t b) {
251   return vqsubb_u8(a, b);
252 // CHECK: uqsub.8b {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
253 }
254 
255 // CHECK: test_vqsubh_u16
test_vqsubh_u16(uint16_t a,uint16_t b)256 uint16_t test_vqsubh_u16(uint16_t a, uint16_t b) {
257   return vqsubh_u16(a, b);
258 // CHECK: uqsub.4h {{v[0-9]+}}, {{v[0-9]+}}, {{v[0-9]+}}
259 }
260 
261 // CHECK: test_vqsubs_u32
test_vqsubs_u32(uint32_t a,uint32_t b)262 uint32_t test_vqsubs_u32(uint32_t a, uint32_t b) {
263   return vqsubs_u32(a, b);
264 // CHECK: uqsub {{s[0-9]+}}, {{s[0-9]+}}, {{s[0-9]+}}
265 }
266 
267 // CHECK: test_vqsubd_u64
test_vqsubd_u64(uint64_t a,uint64_t b)268 uint64_t test_vqsubd_u64(uint64_t a, uint64_t b) {
269   return vqsubd_u64(a, b);
270 // CHECK: uqsub {{d[0-9]+}}, {{d[0-9]+}}, {{d[0-9]+}}
271 }
272 
273 // CHECK: test_vqmovnh_s16
test_vqmovnh_s16(int16_t a)274 int8_t test_vqmovnh_s16(int16_t a) {
275   return vqmovnh_s16(a);
276 // CHECK: sqxtn.8b {{v[0-9]+}}, {{v[0-9]+}}
277 }
278 
279 // CHECK: test_vqmovnh_u16
test_vqmovnh_u16(uint16_t a)280 uint8_t test_vqmovnh_u16(uint16_t a) {
281   return vqmovnh_u16(a);
282 // CHECK: uqxtn.8b {{v[0-9]+}}, {{v[0-9]+}}
283 }
284 
285 // CHECK: test_vqmovns_s32
test_vqmovns_s32(int32_t a)286 int16_t test_vqmovns_s32(int32_t a) {
287   return vqmovns_s32(a);
288 // CHECK: sqxtn.4h {{v[0-9]+}}, {{v[0-9]+}}
289 }
290 
291 // CHECK: test_vqmovns_u32
test_vqmovns_u32(uint32_t a)292 uint16_t test_vqmovns_u32(uint32_t a) {
293   return vqmovns_u32(a);
294 // CHECK: uqxtn.4h {{v[0-9]+}}, {{v[0-9]+}}
295 }
296 
297 // CHECK: test_vqmovnd_s64
test_vqmovnd_s64(int64_t a)298 int32_t test_vqmovnd_s64(int64_t a) {
299   return vqmovnd_s64(a);
300 // CHECK: sqxtn {{s[0-9]+}}, {{d[0-9]+}}
301 }
302 
303 // CHECK: test_vqmovnd_u64
test_vqmovnd_u64(uint64_t a)304 uint32_t test_vqmovnd_u64(uint64_t a) {
305   return vqmovnd_u64(a);
306 // CHECK: uqxtn {{s[0-9]+}}, {{d[0-9]+}}
307 }
308 
309 // CHECK: test_vqmovunh_s16
test_vqmovunh_s16(int16_t a)310 int8_t test_vqmovunh_s16(int16_t a) {
311   return vqmovunh_s16(a);
312 // CHECK: sqxtun.8b {{v[0-9]+}}, {{v[0-9]+}}
313 }
314 
315 // CHECK: test_vqmovuns_s32
test_vqmovuns_s32(int32_t a)316 int16_t test_vqmovuns_s32(int32_t a) {
317   return vqmovuns_s32(a);
318 // CHECK: sqxtun.4h {{v[0-9]+}}, {{v[0-9]+}}
319 }
320 
321 // CHECK: test_vqmovund_s64
test_vqmovund_s64(int64_t a)322 int32_t test_vqmovund_s64(int64_t a) {
323   return vqmovund_s64(a);
324 // CHECK: sqxtun {{s[0-9]+}}, {{d[0-9]+}}
325 }
326 
327 // CHECK: test_vqabsb_s8
test_vqabsb_s8(int8_t a)328 int8_t test_vqabsb_s8(int8_t a) {
329   return vqabsb_s8(a);
330 // CHECK: sqabs.8b {{v[0-9]+}}, {{v[0-9]+}}
331 }
332 
333 // CHECK: test_vqabsh_s16
test_vqabsh_s16(int16_t a)334 int16_t test_vqabsh_s16(int16_t a) {
335   return vqabsh_s16(a);
336 // CHECK: sqabs.4h {{v[0-9]+}}, {{v[0-9]+}}
337 }
338 
339 // CHECK: test_vqabss_s32
test_vqabss_s32(int32_t a)340 int32_t test_vqabss_s32(int32_t a) {
341   return vqabss_s32(a);
342 // CHECK: sqabs {{s[0-9]+}}, {{s[0-9]+}}
343 }
344 
345 // CHECK: test_vqabsd_s64
test_vqabsd_s64(int64_t a)346 int64_t test_vqabsd_s64(int64_t a) {
347   return vqabsd_s64(a);
348 // CHECK: sqabs {{d[0-9]+}}, {{d[0-9]+}}
349 }
350 
351 // CHECK: test_vqnegb_s8
test_vqnegb_s8(int8_t a)352 int8_t test_vqnegb_s8(int8_t a) {
353   return vqnegb_s8(a);
354 // CHECK: sqneg.8b {{v[0-9]+}}, {{v[0-9]+}}
355 }
356 
357 // CHECK: test_vqnegh_s16
test_vqnegh_s16(int16_t a)358 int16_t test_vqnegh_s16(int16_t a) {
359   return vqnegh_s16(a);
360 // CHECK: sqneg.4h {{v[0-9]+}}, {{v[0-9]+}}
361 }
362 
363 // CHECK: test_vqnegs_s32
test_vqnegs_s32(int32_t a)364 int32_t test_vqnegs_s32(int32_t a) {
365   return vqnegs_s32(a);
366 // CHECK: sqneg {{s[0-9]+}}, {{s[0-9]+}}
367 }
368 
369 // CHECK: test_vqnegd_s64
test_vqnegd_s64(int64_t a)370 int64_t test_vqnegd_s64(int64_t a) {
371   return vqnegd_s64(a);
372 // CHECK: sqneg {{d[0-9]+}}, {{d[0-9]+}}
373 }
374 
375 // CHECK: test_vcvts_n_f32_s32
test_vcvts_n_f32_s32(int32_t a)376 float32_t test_vcvts_n_f32_s32(int32_t a) {
377   return vcvts_n_f32_s32(a, 3);
378 // CHECK: scvtf {{s[0-9]+}}, {{s[0-9]+}}, #3
379 }
380 
381 // CHECK: test_vcvts_n_f32_u32
test_vcvts_n_f32_u32(uint32_t a)382 float32_t test_vcvts_n_f32_u32(uint32_t a) {
383   return vcvts_n_f32_u32(a, 3);
384 // CHECK: ucvtf {{s[0-9]+}}, {{s[0-9]+}}, #3
385 }
386 
387 // CHECK: test_vcvtd_n_f64_s64
test_vcvtd_n_f64_s64(int64_t a)388 float64_t test_vcvtd_n_f64_s64(int64_t a) {
389   return vcvtd_n_f64_s64(a, 3);
390 // CHECK: scvtf {{d[0-9]+}}, {{d[0-9]+}}, #3
391 }
392 
393 // CHECK: test_vcvtd_n_f64_u64
test_vcvtd_n_f64_u64(uint64_t a)394 float64_t test_vcvtd_n_f64_u64(uint64_t a) {
395   return vcvtd_n_f64_u64(a, 3);
396 // CHECK: ucvtf {{d[0-9]+}}, {{d[0-9]+}}, #3
397 }
398 
399 // CHECK: test_vcvts_n_s32_f32
test_vcvts_n_s32_f32(float32_t a)400 int32_t test_vcvts_n_s32_f32(float32_t a) {
401   return vcvts_n_s32_f32(a, 3);
402 // CHECK: fcvtzs {{s[0-9]+}}, {{s[0-9]+}}, #3
403 }
404 
405 // CHECK: test_vcvts_n_u32_f32
test_vcvts_n_u32_f32(float32_t a)406 uint32_t test_vcvts_n_u32_f32(float32_t a) {
407   return vcvts_n_u32_f32(a, 3);
408 // CHECK: fcvtzu {{s[0-9]+}}, {{s[0-9]+}}, #3
409 }
410 
411 // CHECK: test_vcvtd_n_s64_f64
test_vcvtd_n_s64_f64(float64_t a)412 int64_t test_vcvtd_n_s64_f64(float64_t a) {
413   return vcvtd_n_s64_f64(a, 3);
414 // CHECK: fcvtzs {{d[0-9]+}}, {{d[0-9]+}}, #3
415 }
416 
417 // CHECK: test_vcvtd_n_u64_f64
test_vcvtd_n_u64_f64(float64_t a)418 uint64_t test_vcvtd_n_u64_f64(float64_t a) {
419   return vcvtd_n_u64_f64(a, 3);
420 // CHECK: fcvtzu {{d[0-9]+}}, {{d[0-9]+}}, #3
421 }
422 
423 // CHECK: test_vcvtas_s32_f32
test_vcvtas_s32_f32(float32_t a)424 int32_t test_vcvtas_s32_f32(float32_t a) {
425   return vcvtas_s32_f32(a);
426 // CHECK: fcvtas {{w[0-9]+}}, {{s[0-9]+}}
427 }
428 
429 // CHECK: test_vcvtas_u32_f32
test_vcvtas_u32_f32(float32_t a)430 uint32_t test_vcvtas_u32_f32(float32_t a) {
431   return vcvtas_u32_f32(a);
432 // CHECK: fcvtau {{w[0-9]+}}, {{s[0-9]+}}
433 }
434 
435 // CHECK: test_vcvtad_s64_f64
test_vcvtad_s64_f64(float64_t a)436 int64_t test_vcvtad_s64_f64(float64_t a) {
437   return vcvtad_s64_f64(a);
438 // CHECK: fcvtas {{x[0-9]+}}, {{d[0-9]+}}
439 }
440 
441 // CHECK: test_vcvtad_u64_f64
test_vcvtad_u64_f64(float64_t a)442 uint64_t test_vcvtad_u64_f64(float64_t a) {
443   return vcvtad_u64_f64(a);
444 // CHECK: fcvtau {{x[0-9]+}}, {{d[0-9]+}}
445 }
446 
447 // CHECK: test_vcvtms_s32_f32
test_vcvtms_s32_f32(float32_t a)448 int32_t test_vcvtms_s32_f32(float32_t a) {
449   return vcvtms_s32_f32(a);
450 // CHECK: fcvtms {{w[0-9]+}}, {{s[0-9]+}}
451 }
452 
453 // CHECK: test_vcvtms_u32_f32
test_vcvtms_u32_f32(float32_t a)454 uint32_t test_vcvtms_u32_f32(float32_t a) {
455   return vcvtms_u32_f32(a);
456 // CHECK: fcvtmu {{w[0-9]+}}, {{s[0-9]+}}
457 }
458 
459 // CHECK: test_vcvtmd_s64_f64
test_vcvtmd_s64_f64(float64_t a)460 int64_t test_vcvtmd_s64_f64(float64_t a) {
461   return vcvtmd_s64_f64(a);
462 // CHECK: fcvtms {{x[0-9]+}}, {{d[0-9]+}}
463 }
464 
465 // CHECK: test_vcvtmd_u64_f64
test_vcvtmd_u64_f64(float64_t a)466 uint64_t test_vcvtmd_u64_f64(float64_t a) {
467   return vcvtmd_u64_f64(a);
468 // CHECK: fcvtmu {{x[0-9]+}}, {{d[0-9]+}}
469 }
470 
471 // CHECK: test_vcvtns_s32_f32
test_vcvtns_s32_f32(float32_t a)472 int32_t test_vcvtns_s32_f32(float32_t a) {
473   return vcvtns_s32_f32(a);
474 // CHECK: fcvtns {{w[0-9]+}}, {{s[0-9]+}}
475 }
476 
477 // CHECK: test_vcvtns_u32_f32
test_vcvtns_u32_f32(float32_t a)478 uint32_t test_vcvtns_u32_f32(float32_t a) {
479   return vcvtns_u32_f32(a);
480 // CHECK: fcvtnu {{w[0-9]+}}, {{s[0-9]+}}
481 }
482 
483 // CHECK: test_vcvtnd_s64_f64
test_vcvtnd_s64_f64(float64_t a)484 int64_t test_vcvtnd_s64_f64(float64_t a) {
485   return vcvtnd_s64_f64(a);
486 // CHECK: fcvtns {{x[0-9]+}}, {{d[0-9]+}}
487 }
488 
489 // CHECK: test_vcvtnd_u64_f64
test_vcvtnd_u64_f64(float64_t a)490 uint64_t test_vcvtnd_u64_f64(float64_t a) {
491   return vcvtnd_u64_f64(a);
492 // CHECK: fcvtnu {{x[0-9]+}}, {{d[0-9]+}}
493 }
494 
495 // CHECK: test_vcvtps_s32_f32
test_vcvtps_s32_f32(float32_t a)496 int32_t test_vcvtps_s32_f32(float32_t a) {
497   return vcvtps_s32_f32(a);
498 // CHECK: fcvtps {{w[0-9]+}}, {{s[0-9]+}}
499 }
500 
501 // CHECK: test_vcvtps_u32_f32
test_vcvtps_u32_f32(float32_t a)502 uint32_t test_vcvtps_u32_f32(float32_t a) {
503   return vcvtps_u32_f32(a);
504 // CHECK: fcvtpu {{w[0-9]+}}, {{s[0-9]+}}
505 }
506 
507 // CHECK: test_vcvtpd_s64_f64
test_vcvtpd_s64_f64(float64_t a)508 int64_t test_vcvtpd_s64_f64(float64_t a) {
509   return vcvtpd_s64_f64(a);
510 // CHECK: fcvtps {{x[0-9]+}}, {{d[0-9]+}}
511 }
512 
513 // CHECK: test_vcvtpd_u64_f64
test_vcvtpd_u64_f64(float64_t a)514 uint64_t test_vcvtpd_u64_f64(float64_t a) {
515   return vcvtpd_u64_f64(a);
516 // CHECK: fcvtpu {{x[0-9]+}}, {{d[0-9]+}}
517 }
518 
519 // CHECK: test_vcvtxd_f32_f64
test_vcvtxd_f32_f64(float64_t a)520 float32_t test_vcvtxd_f32_f64(float64_t a) {
521   return vcvtxd_f32_f64(a);
522 // CHECK: fcvtxn {{s[0-9]+}}, {{d[0-9]+}}
523 }
524 
525 // CHECK: test_vabds_f32
test_vabds_f32(float32_t a,float32_t b)526 float32_t test_vabds_f32(float32_t a, float32_t b) {
527   return vabds_f32(a, b);
528   // CHECK: fabd {{s[0-9]+}}, {{s[0-9]+}}
529 }
530 
531 // CHECK: test_vabdd_f64
test_vabdd_f64(float64_t a,float64_t b)532 float64_t test_vabdd_f64(float64_t a, float64_t b) {
533   return vabdd_f64(a, b);
534   // CHECK: fabd {{d[0-9]+}}, {{d[0-9]+}}
535 }
536 
537 // CHECK: test_vmulxs_f32
test_vmulxs_f32(float32_t a,float32_t b)538 float32_t test_vmulxs_f32(float32_t a, float32_t b) {
539   return vmulxs_f32(a, b);
540   // CHECK: fmulx {{s[0-9]+}}, {{s[0-9]+}}
541 }
542 
543 // CHECK: test_vmulxd_f64
test_vmulxd_f64(float64_t a,float64_t b)544 float64_t test_vmulxd_f64(float64_t a, float64_t b) {
545   return vmulxd_f64(a, b);
546   // CHECK: fmulx {{d[0-9]+}}, {{d[0-9]+}}
547 }
548