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