blob: 6008ba5e55c8bf89caf84cd5f9c765e3a326f320 [file] [log] [blame]
Stephen Hines6bcf27b2014-05-29 04:14:42 -07001// RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-feature +neon -ffreestanding -Os -S -o - %s | FileCheck %s
Stephen Hinesc568f1e2014-07-21 00:47:37 -07002// REQUIRES: aarch64-registered-target
Stephen Hines651f13c2014-04-23 16:59:28 -07003
4#include <arm_neon.h>
5
6int16x8_t test_vaddw_high_s8(int16x8_t lhs, int8x16_t rhs) {
7 // CHECK: saddw2.8h
8 return vaddw_high_s8(lhs, rhs);
9}
10
11int32x4_t test_vaddw_high_s16(int32x4_t lhs, int16x8_t rhs) {
12 // CHECK: saddw2.4s
13 return vaddw_high_s16(lhs, rhs);
14}
15
16int64x2_t test_vaddw_high_s32(int64x2_t lhs, int32x4_t rhs) {
17 // CHECK: saddw2.2d
18 return vaddw_high_s32(lhs, rhs);
19}
20
21uint16x8_t test_vaddw_high_u8(uint16x8_t lhs, uint8x16_t rhs) {
22 // CHECK: uaddw2.8h
23 return vaddw_high_u8(lhs, rhs);
24}
25
26uint32x4_t test_vaddw_high_u16(uint32x4_t lhs, uint16x8_t rhs) {
27 // CHECK: uaddw2.4s
28 return vaddw_high_u16(lhs, rhs);
29}
30
31uint64x2_t test_vaddw_high_u32(uint64x2_t lhs, uint32x4_t rhs) {
32 // CHECK: uaddw2.2d
33 return vaddw_high_u32(lhs, rhs);
34}
35
36int16x8_t test_vsubw_high_s8(int16x8_t lhs, int8x16_t rhs) {
37 // CHECK: ssubw2.8h
38 return vsubw_high_s8(lhs, rhs);
39}
40
41int32x4_t test_vsubw_high_s16(int32x4_t lhs, int16x8_t rhs) {
42 // CHECK: ssubw2.4s
43 return vsubw_high_s16(lhs, rhs);
44}
45
46int64x2_t test_vsubw_high_s32(int64x2_t lhs, int32x4_t rhs) {
47 // CHECK: ssubw2.2d
48 return vsubw_high_s32(lhs, rhs);
49}
50
51uint16x8_t test_vsubw_high_u8(uint16x8_t lhs, uint8x16_t rhs) {
52 // CHECK: usubw2.8h
53 return vsubw_high_u8(lhs, rhs);
54}
55
56uint32x4_t test_vsubw_high_u16(uint32x4_t lhs, uint16x8_t rhs) {
57 // CHECK: usubw2.4s
58 return vsubw_high_u16(lhs, rhs);
59}
60
61uint64x2_t test_vsubw_high_u32(uint64x2_t lhs, uint32x4_t rhs) {
62 // CHECK: usubw2.2d
63 return vsubw_high_u32(lhs, rhs);
64}
65
66int16x8_t test_vabdl_high_s8(int8x16_t lhs, int8x16_t rhs) {
67 // CHECK: sabdl2.8h
68 return vabdl_high_s8(lhs, rhs);
69}
70
71int32x4_t test_vabdl_high_s16(int16x8_t lhs, int16x8_t rhs) {
72 // CHECK: sabdl2.4s
73 return vabdl_high_s16(lhs, rhs);
74}
75
76int64x2_t test_vabdl_high_s32(int32x4_t lhs, int32x4_t rhs) {
77 // CHECK: sabdl2.2d
78 return vabdl_high_s32(lhs, rhs);
79}
80
81uint16x8_t test_vabdl_high_u8(uint8x16_t lhs, uint8x16_t rhs) {
82 // CHECK: uabdl2.8h
83 return vabdl_high_u8(lhs, rhs);
84}
85
86uint32x4_t test_vabdl_high_u16(uint16x8_t lhs, uint16x8_t rhs) {
87 // CHECK: uabdl2.4s
88 return vabdl_high_u16(lhs, rhs);
89}
90
91uint64x2_t test_vabdl_high_u32(uint32x4_t lhs, uint32x4_t rhs) {
92 // CHECK: uabdl2.2d
93 return vabdl_high_u32(lhs, rhs);
94}
95
96int16x8_t test_vabal_high_s8(int16x8_t accum, int8x16_t lhs, int8x16_t rhs) {
97 // CHECK: sabal2.8h
98 return vabal_high_s8(accum, lhs, rhs);
99}
100
101int32x4_t test_vabal_high_s16(int32x4_t accum, int16x8_t lhs, int16x8_t rhs) {
102 // CHECK: sabal2.4s
103 return vabal_high_s16(accum, lhs, rhs);
104}
105
106int64x2_t test_vabal_high_s32(int64x2_t accum, int32x4_t lhs, int32x4_t rhs) {
107 // CHECK: sabal2.2d
108 return vabal_high_s32(accum, lhs, rhs);
109}
110
111uint16x8_t test_vabal_high_u8(uint16x8_t accum, uint8x16_t lhs, uint8x16_t rhs) {
112 // CHECK: uabal2.8h
113 return vabal_high_u8(accum, lhs, rhs);
114}
115
116uint32x4_t test_vabal_high_u16(uint32x4_t accum, uint16x8_t lhs, uint16x8_t rhs) {
117 // CHECK: uabal2.4s
118 return vabal_high_u16(accum, lhs, rhs);
119}
120
121uint64x2_t test_vabal_high_u32(uint64x2_t accum, uint32x4_t lhs, uint32x4_t rhs) {
122 // CHECK: uabal2.2d
123 return vabal_high_u32(accum, lhs, rhs);
124}
125
126int32x4_t test_vqdmlal_high_s16(int32x4_t accum, int16x8_t lhs, int16x8_t rhs) {
127 // CHECK: sqdmlal2.4s
128 return vqdmlal_high_s16(accum, lhs, rhs);
129}
130
131int64x2_t test_vqdmlal_high_s32(int64x2_t accum, int32x4_t lhs, int32x4_t rhs) {
132 // CHECK: sqdmlal2.2d
133 return vqdmlal_high_s32(accum, lhs, rhs);
134}
135
136int32x4_t test_vqdmlsl_high_s16(int32x4_t accum, int16x8_t lhs, int16x8_t rhs) {
137 // CHECK: sqdmlsl2.4s
138 return vqdmlsl_high_s16(accum, lhs, rhs);
139}
140
141int64x2_t test_vqdmlsl_high_s32(int64x2_t accum, int32x4_t lhs, int32x4_t rhs) {
142 // CHECK: sqdmlsl2.2d
143 return vqdmlsl_high_s32(accum, lhs, rhs);
144}
145
146int32x4_t test_vqdmull_high_s16(int16x8_t lhs, int16x8_t rhs) {
147 // CHECK: sqdmull2.4s
148 return vqdmull_high_s16(lhs, rhs);
149}
150
151int64x2_t test_vqdmull_high_s32(int32x4_t lhs, int32x4_t rhs) {
152 // CHECK: sqdmull2.2d
153 return vqdmull_high_s32(lhs, rhs);
154}
155
156int16x8_t test_vshll_high_n_s8(int8x16_t in) {
157 // CHECK: sshll2.8h
158 return vshll_high_n_s8(in, 7);
159}
160
161int32x4_t test_vshll_high_n_s16(int16x8_t in) {
162 // CHECK: sshll2.4s
163 return vshll_high_n_s16(in, 15);
164}
165
166int64x2_t test_vshll_high_n_s32(int32x4_t in) {
167 // CHECK: sshll2.2d
168 return vshll_high_n_s32(in, 31);
169}
170
171int16x8_t test_vshll_high_n_u8(int8x16_t in) {
172 // CHECK: ushll2.8h
173 return vshll_high_n_u8(in, 7);
174}
175
176int32x4_t test_vshll_high_n_u16(int16x8_t in) {
177 // CHECK: ushll2.4s
178 return vshll_high_n_u16(in, 15);
179}
180
181int64x2_t test_vshll_high_n_u32(int32x4_t in) {
182 // CHECK: ushll2.2d
183 return vshll_high_n_u32(in, 31);
184}
185
186int16x8_t test_vshll_high_n_s8_max(int8x16_t in) {
187 // CHECK: shll2.8h
188 return vshll_high_n_s8(in, 8);
189}
190
191int32x4_t test_vshll_high_n_s16_max(int16x8_t in) {
192 // CHECK: shll2.4s
193 return vshll_high_n_s16(in, 16);
194}
195
196int64x2_t test_vshll_high_n_s32_max(int32x4_t in) {
197 // CHECK: shll2.2d
198 return vshll_high_n_s32(in, 32);
199}
200
201int16x8_t test_vshll_high_n_u8_max(int8x16_t in) {
202 // CHECK: shll2.8h
203 return vshll_high_n_u8(in, 8);
204}
205
206int32x4_t test_vshll_high_n_u16_max(int16x8_t in) {
207 // CHECK: shll2.4s
208 return vshll_high_n_u16(in, 16);
209}
210
211int64x2_t test_vshll_high_n_u32_max(int32x4_t in) {
212 // CHECK: shll2.2d
213 return vshll_high_n_u32(in, 32);
214}
215
216int16x8_t test_vsubl_high_s8(int8x16_t lhs, int8x16_t rhs) {
217 // CHECK: ssubl2.8h
218 return vsubl_high_s8(lhs, rhs);
219}
220
221int32x4_t test_vsubl_high_s16(int16x8_t lhs, int16x8_t rhs) {
222 // CHECK: ssubl2.4s
223 return vsubl_high_s16(lhs, rhs);
224}
225
226int64x2_t test_vsubl_high_s32(int32x4_t lhs, int32x4_t rhs) {
227 // CHECK: ssubl2.2d
228 return vsubl_high_s32(lhs, rhs);
229}
230
231uint16x8_t test_vsubl_high_u8(uint8x16_t lhs, uint8x16_t rhs) {
232 // CHECK: usubl2.8h
233 return vsubl_high_u8(lhs, rhs);
234}
235
236uint32x4_t test_vsubl_high_u16(uint16x8_t lhs, uint16x8_t rhs) {
237 // CHECK: usubl2.4s
238 return vsubl_high_u16(lhs, rhs);
239}
240
241uint64x2_t test_vsubl_high_u32(uint32x4_t lhs, uint32x4_t rhs) {
242 // CHECK: usubl2.2d
243 return vsubl_high_u32(lhs, rhs);
244}
245
246int8x16_t test_vrshrn_high_n_s16(int8x8_t lowpart, int16x8_t input) {
247 // CHECK: rshrn2.16b
248 return vrshrn_high_n_s16(lowpart, input, 2);
249}
250
251int16x8_t test_vrshrn_high_n_s32(int16x4_t lowpart, int32x4_t input) {
252 // CHECK: rshrn2.8h
253 return vrshrn_high_n_s32(lowpart, input, 2);
254}
255
256int32x4_t test_vrshrn_high_n_s64(int32x2_t lowpart, int64x2_t input) {
257 // CHECK: shrn2.4s
258 return vrshrn_high_n_s64(lowpart, input, 2);
259}
260
261uint8x16_t test_vrshrn_high_n_u16(uint8x8_t lowpart, uint16x8_t input) {
262 // CHECK: rshrn2.16b
263 return vrshrn_high_n_u16(lowpart, input, 2);
264}
265
266uint16x8_t test_vrshrn_high_n_u32(uint16x4_t lowpart, uint32x4_t input) {
267 // CHECK: rshrn2.8h
268 return vrshrn_high_n_u32(lowpart, input, 2);
269}
270
271uint32x4_t test_vrshrn_high_n_u64(uint32x2_t lowpart, uint64x2_t input) {
272 // CHECK: rshrn2.4s
273 return vrshrn_high_n_u64(lowpart, input, 2);
274}
275
276int8x16_t test_vshrn_high_n_s16(int8x8_t lowpart, int16x8_t input) {
277 // CHECK: shrn2.16b
278 return vshrn_high_n_s16(lowpart, input, 2);
279}
280
281int16x8_t test_vshrn_high_n_s32(int16x4_t lowpart, int32x4_t input) {
282 // CHECK: shrn2.8h
283 return vshrn_high_n_s32(lowpart, input, 2);
284}
285
286int32x4_t test_vshrn_high_n_s64(int32x2_t lowpart, int64x2_t input) {
287 // CHECK: shrn2.4s
288 return vshrn_high_n_s64(lowpart, input, 2);
289}
290
291uint8x16_t test_vshrn_high_n_u16(uint8x8_t lowpart, uint16x8_t input) {
292 // CHECK: shrn2.16b
293 return vshrn_high_n_u16(lowpart, input, 2);
294}
295
296uint16x8_t test_vshrn_high_n_u32(uint16x4_t lowpart, uint32x4_t input) {
297 // CHECK: shrn2.8h
298 return vshrn_high_n_u32(lowpart, input, 2);
299}
300
301uint32x4_t test_vshrn_high_n_u64(uint32x2_t lowpart, uint64x2_t input) {
302 // CHECK: shrn2.4s
303 return vshrn_high_n_u64(lowpart, input, 2);
304}
305
306uint8x16_t test_vqshrun_high_n_s16(uint8x8_t lowpart, int16x8_t input) {
307 // CHECK: sqshrun2.16b
308 return vqshrun_high_n_s16(lowpart, input, 2);
309}
310
311uint16x8_t test_vqshrun_high_n_s32(uint16x4_t lowpart, int32x4_t input) {
312 // CHECK: sqshrun2.8h
313 return vqshrun_high_n_s32(lowpart, input, 2);
314}
315
316uint32x4_t test_vqshrun_high_n_s64(uint32x2_t lowpart, int64x2_t input) {
317 // CHECK: sqshrun2.4s
318 return vqshrun_high_n_s64(lowpart, input, 2);
319}
320
321uint8x16_t test_vqrshrun_high_n_s16(uint8x8_t lowpart, int16x8_t input) {
322 // CHECK: sqrshrun2.16b
323 return vqrshrun_high_n_s16(lowpart, input, 2);
324}
325
326uint16x8_t test_vqrshrun_high_n_s32(uint16x4_t lowpart, int32x4_t input) {
327 // CHECK: sqrshrun2.8h
328 return vqrshrun_high_n_s32(lowpart, input, 2);
329}
330
331uint32x4_t test_vqrshrun_high_n_s64(uint32x2_t lowpart, int64x2_t input) {
332 // CHECK: sqrshrun2.4s
333 return vqrshrun_high_n_s64(lowpart, input, 2);
334}
335
336int8x16_t test_vqshrn_high_n_s16(int8x8_t lowpart, int16x8_t input) {
337 // CHECK: sqshrn2.16b
338 return vqshrn_high_n_s16(lowpart, input, 2);
339}
340
341int16x8_t test_vqshrn_high_n_s32(int16x4_t lowpart, int32x4_t input) {
342 // CHECK: sqshrn2.8h
343 return vqshrn_high_n_s32(lowpart, input, 2);
344}
345
346int32x4_t test_vqshrn_high_n_s64(int32x2_t lowpart, int64x2_t input) {
347 // CHECK: sqshrn2.4s
348 return vqshrn_high_n_s64(lowpart, input, 2);
349}
350
351uint8x16_t test_vqshrn_high_n_u16(uint8x8_t lowpart, uint16x8_t input) {
352 // CHECK: uqshrn2.16b
353 return vqshrn_high_n_u16(lowpart, input, 2);
354}
355
356uint16x8_t test_vqshrn_high_n_u32(uint16x4_t lowpart, uint32x4_t input) {
357 // CHECK: uqshrn2.8h
358 return vqshrn_high_n_u32(lowpart, input, 2);
359}
360
361uint32x4_t test_vqshrn_high_n_u64(uint32x2_t lowpart, uint64x2_t input) {
362 // CHECK: uqshrn2.4s
363 return vqshrn_high_n_u64(lowpart, input, 2);
364}
365
366int8x16_t test_vqrshrn_high_n_s16(int8x8_t lowpart, int16x8_t input) {
367 // CHECK: sqrshrn2.16b
368 return vqrshrn_high_n_s16(lowpart, input, 2);
369}
370
371int16x8_t test_vqrshrn_high_n_s32(int16x4_t lowpart, int32x4_t input) {
372 // CHECK: sqrshrn2.8h
373 return vqrshrn_high_n_s32(lowpart, input, 2);
374}
375
376int32x4_t test_vqrshrn_high_n_s64(int32x2_t lowpart, int64x2_t input) {
377 // CHECK: sqrshrn2.4s
378 return vqrshrn_high_n_s64(lowpart, input, 2);
379}
380
381uint8x16_t test_vqrshrn_high_n_u16(uint8x8_t lowpart, uint16x8_t input) {
382 // CHECK: uqrshrn2.16b
383 return vqrshrn_high_n_u16(lowpart, input, 2);
384}
385
386uint16x8_t test_vqrshrn_high_n_u32(uint16x4_t lowpart, uint32x4_t input) {
387 // CHECK: uqrshrn2.8h
388 return vqrshrn_high_n_u32(lowpart, input, 2);
389}
390
391uint32x4_t test_vqrshrn_high_n_u64(uint32x2_t lowpart, uint64x2_t input) {
392 // CHECK: uqrshrn2.4s
393 return vqrshrn_high_n_u64(lowpart, input, 2);
394}
395
396int8x16_t test_vaddhn_high_s16(int8x8_t lowpart, int16x8_t lhs, int16x8_t rhs) {
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -0700397 // CHECK: addhn2.16b v0, {{v1, v2|v2, v1}}
Stephen Hines651f13c2014-04-23 16:59:28 -0700398 return vaddhn_high_s16(lowpart, lhs, rhs);
399}
400
401int16x8_t test_vaddhn_high_s32(int16x4_t lowpart, int32x4_t lhs, int32x4_t rhs) {
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -0700402 // CHECK: addhn2.8h v0, {{v1, v2|v2, v1}}
Stephen Hines651f13c2014-04-23 16:59:28 -0700403 return vaddhn_high_s32(lowpart, lhs, rhs);
404}
405
406int32x4_t test_vaddhn_high_s64(int32x2_t lowpart, int64x2_t lhs, int64x2_t rhs) {
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -0700407 // CHECK: addhn2.4s v0, {{v1, v2|v2, v1}}
Stephen Hines651f13c2014-04-23 16:59:28 -0700408 return vaddhn_high_s64(lowpart, lhs, rhs);
409}
410
411uint8x16_t test_vaddhn_high_u16(uint8x8_t lowpart, uint16x8_t lhs, uint16x8_t rhs) {
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -0700412 // CHECK: addhn2.16b v0, {{v1, v2|v2, v1}}
Stephen Hines651f13c2014-04-23 16:59:28 -0700413 return vaddhn_high_s16(lowpart, lhs, rhs);
414}
415
416uint16x8_t test_vaddhn_high_u32(uint16x4_t lowpart, uint32x4_t lhs, uint32x4_t rhs) {
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -0700417 // CHECK: addhn2.8h v0, {{v1, v2|v2, v1}}
Stephen Hines651f13c2014-04-23 16:59:28 -0700418 return vaddhn_high_s32(lowpart, lhs, rhs);
419}
420
421uint32x4_t test_vaddhn_high_u64(uint32x2_t lowpart, uint64x2_t lhs, uint64x2_t rhs) {
Pirama Arumuga Nainar3ea9e332015-04-08 08:57:32 -0700422 // CHECK: addhn2.4s v0, {{v1, v2|v2, v1}}
Stephen Hines651f13c2014-04-23 16:59:28 -0700423 return vaddhn_high_s64(lowpart, lhs, rhs);
424}
425
426int8x16_t test_vraddhn_high_s16(int8x8_t lowpart, int16x8_t lhs, int16x8_t rhs) {
427 // CHECK: raddhn2.16b v0, v1, v2
428 return vraddhn_high_s16(lowpart, lhs, rhs);
429}
430
431int16x8_t test_vraddhn_high_s32(int16x4_t lowpart, int32x4_t lhs, int32x4_t rhs) {
432 // CHECK: raddhn2.8h v0, v1, v2
433 return vraddhn_high_s32(lowpart, lhs, rhs);
434}
435
436int32x4_t test_vraddhn_high_s64(int32x2_t lowpart, int64x2_t lhs, int64x2_t rhs) {
437 // CHECK: raddhn2.4s v0, v1, v2
438 return vraddhn_high_s64(lowpart, lhs, rhs);
439}
440
441uint8x16_t test_vraddhn_high_u16(uint8x8_t lowpart, uint16x8_t lhs, uint16x8_t rhs) {
442 // CHECK: raddhn2.16b v0, v1, v2
443 return vraddhn_high_s16(lowpart, lhs, rhs);
444}
445
446uint16x8_t test_vraddhn_high_u32(uint16x4_t lowpart, uint32x4_t lhs, uint32x4_t rhs) {
447 // CHECK: raddhn2.8h v0, v1, v2
448 return vraddhn_high_s32(lowpart, lhs, rhs);
449}
450
451uint32x4_t test_vraddhn_high_u64(uint32x2_t lowpart, uint64x2_t lhs, uint64x2_t rhs) {
452 // CHECK: raddhn2.4s v0, v1, v2
453 return vraddhn_high_s64(lowpart, lhs, rhs);
454}
455
456int8x16_t test_vmovn_high_s16(int8x8_t lowpart, int16x8_t wide) {
457 // CHECK: xtn2.16b v0, v1
458 return vmovn_high_s16(lowpart, wide);
459}
460
461int16x8_t test_vmovn_high_s32(int16x4_t lowpart, int32x4_t wide) {
462 // CHECK: xtn2.8h v0, v1
463 return vmovn_high_s32(lowpart, wide);
464}
465
466int32x4_t test_vmovn_high_s64(int32x2_t lowpart, int64x2_t wide) {
467 // CHECK: xtn2.4s v0, v1
468 return vmovn_high_s64(lowpart, wide);
469}
470
471uint8x16_t test_vmovn_high_u16(uint8x8_t lowpart, uint16x8_t wide) {
472 // CHECK: xtn2.16b v0, v1
473 return vmovn_high_u16(lowpart, wide);
474}
475
476uint16x8_t test_vmovn_high_u32(uint16x4_t lowpart, uint32x4_t wide) {
477 // CHECK: xtn2.8h v0, v1
478 return vmovn_high_u32(lowpart, wide);
479}
480
481uint32x4_t test_vmovn_high_u64(uint32x2_t lowpart, uint64x2_t wide) {
482 // CHECK: xtn2.4s v0, v1
483 return vmovn_high_u64(lowpart, wide);
484}
485
486int8x16_t test_vqmovn_high_s16(int8x8_t lowpart, int16x8_t wide) {
487 // CHECK: sqxtn2.16b v0, v1
488 return vqmovn_high_s16(lowpart, wide);
489}
490
491int16x8_t test_vqmovn_high_s32(int16x4_t lowpart, int32x4_t wide) {
492 // CHECK: sqxtn2.8h v0, v1
493 return vqmovn_high_s32(lowpart, wide);
494}
495
496int32x4_t test_vqmovn_high_s64(int32x2_t lowpart, int64x2_t wide) {
497 // CHECK: sqxtn2.4s v0, v1
498 return vqmovn_high_s64(lowpart, wide);
499}
500
501uint8x16_t test_vqmovn_high_u16(uint8x8_t lowpart, int16x8_t wide) {
502 // CHECK: uqxtn2.16b v0, v1
503 return vqmovn_high_u16(lowpart, wide);
504}
505
506uint16x8_t test_vqmovn_high_u32(uint16x4_t lowpart, int32x4_t wide) {
507 // CHECK: uqxtn2.8h v0, v1
508 return vqmovn_high_u32(lowpart, wide);
509}
510
511uint32x4_t test_vqmovn_high_u64(uint32x2_t lowpart, int64x2_t wide) {
512 // CHECK: uqxtn2.4s v0, v1
513 return vqmovn_high_u64(lowpart, wide);
514}
515
516uint8x16_t test_vqmovun_high_s16(uint8x8_t lowpart, int16x8_t wide) {
517 // CHECK: sqxtun2.16b v0, v1
518 return vqmovun_high_s16(lowpart, wide);
519}
520
521uint16x8_t test_vqmovun_high_s32(uint16x4_t lowpart, int32x4_t wide) {
522 // CHECK: sqxtun2.8h v0, v1
523 return vqmovun_high_s32(lowpart, wide);
524}
525
526uint32x4_t test_vqmovun_high_s64(uint32x2_t lowpart, int64x2_t wide) {
527 // CHECK: sqxtun2.4s v0, v1
528 return vqmovun_high_s64(lowpart, wide);
529}
530
531float32x4_t test_vcvtx_high_f32_f64(float32x2_t lowpart, float64x2_t wide) {
532 // CHECK: fcvtxn2 v0.4s, v1.2d
533 return vcvtx_high_f32_f64(lowpart, wide);
534}
535
536float64x2_t test_vcvt_f64_f32(float32x2_t x) {
537 // CHECK: fcvtl v0.2d, v0.2s
538 return vcvt_f64_f32(x);
539}
540
541float64x2_t test_vcvt_high_f64_f32(float32x4_t x) {
542 // CHECK: fcvtl2 v0.2d, v0.4s
543 return vcvt_high_f64_f32(x);
544}
545
546float32x2_t test_vcvt_f32_f64(float64x2_t v) {
547 // CHECK: fcvtn v0.2s, v0.2d
548 return vcvt_f32_f64(v);
549}
550
551float32x4_t test_vcvt_high_f32_f64(float32x2_t x, float64x2_t v) {
552 // CHECK: fcvtn2 v0.4s, v1.2d
553 return vcvt_high_f32_f64(x, v);
554}
555
556float32x2_t test_vcvtx_f32_f64(float64x2_t v) {
557 // CHECK: fcvtxn v0.2s, v0.2d
558 return vcvtx_f32_f64(v);
559}