1// RUN: %clang_cc1 -triple arm64-apple-ios7.0 -target-feature +neon -ffreestanding -Os -S -o - %s | FileCheck %s
2// REQUIRES: aarch64-registered-target
3
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) {
397  // CHECK: addhn2.16b v0, v1, v2
398  return vaddhn_high_s16(lowpart, lhs, rhs);
399}
400
401int16x8_t test_vaddhn_high_s32(int16x4_t lowpart, int32x4_t lhs, int32x4_t rhs) {
402  // CHECK: addhn2.8h v0, v1, v2
403  return vaddhn_high_s32(lowpart, lhs, rhs);
404}
405
406int32x4_t test_vaddhn_high_s64(int32x2_t lowpart, int64x2_t lhs, int64x2_t rhs) {
407  // CHECK: addhn2.4s v0, v1, v2
408  return vaddhn_high_s64(lowpart, lhs, rhs);
409}
410
411uint8x16_t test_vaddhn_high_u16(uint8x8_t lowpart, uint16x8_t lhs, uint16x8_t rhs) {
412  // CHECK: addhn2.16b v0, v1, v2
413  return vaddhn_high_s16(lowpart, lhs, rhs);
414}
415
416uint16x8_t test_vaddhn_high_u32(uint16x4_t lowpart, uint32x4_t lhs, uint32x4_t rhs) {
417  // CHECK: addhn2.8h v0, v1, v2
418  return vaddhn_high_s32(lowpart, lhs, rhs);
419}
420
421uint32x4_t test_vaddhn_high_u64(uint32x2_t lowpart, uint64x2_t lhs, uint64x2_t rhs) {
422  // CHECK: addhn2.4s v0, v1, v2
423  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}
560