1 ; RUN: llc < %s -mtriple=aarch64-none-eabi | FileCheck %s
3 define <4 x i16> @v4f16_to_v4i16(float, <4 x half> %a) #0 {
4 ; CHECK-LABEL: v4f16_to_v4i16:
5 ; CHECK: mov v0.16b, v1.16b
7 %1 = bitcast <4 x half> %a to <4 x i16>
11 define <2 x i32> @v4f16_to_v2i32(float, <4 x half> %a) #0 {
12 ; CHECK-LABEL: v4f16_to_v2i32:
13 ; CHECK: mov v0.16b, v1.16b
15 %1 = bitcast <4 x half> %a to <2 x i32>
19 define <1 x i64> @v4f16_to_v1i64(float, <4 x half> %a) #0 {
20 ; CHECK-LABEL: v4f16_to_v1i64:
21 ; CHECK: mov v0.16b, v1.16b
23 %1 = bitcast <4 x half> %a to <1 x i64>
27 define i64 @v4f16_to_i64(float, <4 x half> %a) #0 {
28 ; CHECK-LABEL: v4f16_to_i64:
31 %1 = bitcast <4 x half> %a to i64
35 define <2 x float> @v4f16_to_v2float(float, <4 x half> %a) #0 {
36 ; CHECK-LABEL: v4f16_to_v2float:
37 ; CHECK: mov v0.16b, v1.16b
39 %1 = bitcast <4 x half> %a to <2 x float>
43 define <1 x double> @v4f16_to_v1double(float, <4 x half> %a) #0 {
44 ; CHECK-LABEL: v4f16_to_v1double:
45 ; CHECK: mov v0.16b, v1.16b
47 %1 = bitcast <4 x half> %a to <1 x double>
51 define double @v4f16_to_double(float, <4 x half> %a) #0 {
52 ; CHECK-LABEL: v4f16_to_double:
53 ; CHECK: mov v0.16b, v1.16b
55 %1 = bitcast <4 x half> %a to double
60 define <4 x half> @v4i16_to_v4f16(float, <4 x i16> %a) #0 {
61 ; CHECK-LABEL: v4i16_to_v4f16:
62 ; CHECK: mov v0.16b, v1.16b
64 %1 = bitcast <4 x i16> %a to <4 x half>
68 define <4 x half> @v2i32_to_v4f16(float, <2 x i32> %a) #0 {
69 ; CHECK-LABEL: v2i32_to_v4f16:
70 ; CHECK: mov v0.16b, v1.16b
72 %1 = bitcast <2 x i32> %a to <4 x half>
76 define <4 x half> @v1i64_to_v4f16(float, <1 x i64> %a) #0 {
77 ; CHECK-LABEL: v1i64_to_v4f16:
78 ; CHECK: mov v0.16b, v1.16b
80 %1 = bitcast <1 x i64> %a to <4 x half>
84 define <4 x half> @i64_to_v4f16(float, i64 %a) #0 {
85 ; CHECK-LABEL: i64_to_v4f16:
88 %1 = bitcast i64 %a to <4 x half>
92 define <4 x half> @v2float_to_v4f16(float, <2 x float> %a) #0 {
93 ; CHECK-LABEL: v2float_to_v4f16:
94 ; CHECK: mov v0.16b, v1.16b
96 %1 = bitcast <2 x float> %a to <4 x half>
100 define <4 x half> @v1double_to_v4f16(float, <1 x double> %a) #0 {
101 ; CHECK-LABEL: v1double_to_v4f16:
102 ; CHECK: mov v0.16b, v1.16b
104 %1 = bitcast <1 x double> %a to <4 x half>
108 define <4 x half> @double_to_v4f16(float, double %a) #0 {
109 ; CHECK-LABEL: double_to_v4f16:
110 ; CHECK: mov v0.16b, v1.16b
112 %1 = bitcast double %a to <4 x half>
125 define <8 x i16> @v8f16_to_v8i16(float, <8 x half> %a) #0 {
126 ; CHECK-LABEL: v8f16_to_v8i16:
127 ; CHECK: mov v0.16b, v1.16b
129 %1 = bitcast <8 x half> %a to <8 x i16>
133 define <4 x i32> @v8f16_to_v4i32(float, <8 x half> %a) #0 {
134 ; CHECK-LABEL: v8f16_to_v4i32:
135 ; CHECK: mov v0.16b, v1.16b
137 %1 = bitcast <8 x half> %a to <4 x i32>
141 define <2 x i64> @v8f16_to_v2i64(float, <8 x half> %a) #0 {
142 ; CHECK-LABEL: v8f16_to_v2i64:
143 ; CHECK: mov v0.16b, v1.16b
145 %1 = bitcast <8 x half> %a to <2 x i64>
149 define <4 x float> @v8f16_to_v4float(float, <8 x half> %a) #0 {
150 ; CHECK-LABEL: v8f16_to_v4float:
151 ; CHECK: mov v0.16b, v1.16b
153 %1 = bitcast <8 x half> %a to <4 x float>
157 define <2 x double> @v8f16_to_v2double(float, <8 x half> %a) #0 {
158 ; CHECK-LABEL: v8f16_to_v2double:
159 ; CHECK: mov v0.16b, v1.16b
161 %1 = bitcast <8 x half> %a to <2 x double>
165 define <8 x half> @v8i16_to_v8f16(float, <8 x i16> %a) #0 {
166 ; CHECK-LABEL: v8i16_to_v8f16:
167 ; CHECK: mov v0.16b, v1.16b
169 %1 = bitcast <8 x i16> %a to <8 x half>
173 define <8 x half> @v4i32_to_v8f16(float, <4 x i32> %a) #0 {
174 ; CHECK-LABEL: v4i32_to_v8f16:
175 ; CHECK: mov v0.16b, v1.16b
177 %1 = bitcast <4 x i32> %a to <8 x half>
181 define <8 x half> @v2i64_to_v8f16(float, <2 x i64> %a) #0 {
182 ; CHECK-LABEL: v2i64_to_v8f16:
183 ; CHECK: mov v0.16b, v1.16b
185 %1 = bitcast <2 x i64> %a to <8 x half>
189 define <8 x half> @v4float_to_v8f16(float, <4 x float> %a) #0 {
190 ; CHECK-LABEL: v4float_to_v8f16:
191 ; CHECK: mov v0.16b, v1.16b
193 %1 = bitcast <4 x float> %a to <8 x half>
197 define <8 x half> @v2double_to_v8f16(float, <2 x double> %a) #0 {
198 ; CHECK-LABEL: v2double_to_v8f16:
199 ; CHECK: mov v0.16b, v1.16b
201 %1 = bitcast <2 x double> %a to <8 x half>