1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=thumbv8.1m.main-arm-none-eabi -mattr=+mve,+fullfp16 -verify-machineinstrs %s -o - | FileCheck %s
3 ; RUN: llc -mtriple=thumbv8.1m.main-arm-none-eabi -mattr=+mve.fp -verify-machineinstrs %s -o - | FileCheck %s
5 define arm_aapcs_vfpcc <2 x i64> @bitcast_i64_i64(<2 x i64> %src) {
6 ; CHECK-LABEL: bitcast_i64_i64:
7 ; CHECK: @ %bb.0: @ %entry
10 %r = bitcast <2 x i64> %src to <2 x i64>
14 define arm_aapcs_vfpcc <2 x i64> @bitcast_i64_i32(<4 x i32> %src) {
15 ; CHECK-LABEL: bitcast_i64_i32:
16 ; CHECK: @ %bb.0: @ %entry
19 %r = bitcast <4 x i32> %src to <2 x i64>
23 define arm_aapcs_vfpcc <2 x i64> @bitcast_i64_i16(<8 x i16> %src) {
24 ; CHECK-LABEL: bitcast_i64_i16:
25 ; CHECK: @ %bb.0: @ %entry
28 %r = bitcast <8 x i16> %src to <2 x i64>
32 define arm_aapcs_vfpcc <2 x i64> @bitcast_i64_i8(<16 x i8> %src) {
33 ; CHECK-LABEL: bitcast_i64_i8:
34 ; CHECK: @ %bb.0: @ %entry
37 %r = bitcast <16 x i8> %src to <2 x i64>
41 define arm_aapcs_vfpcc <2 x i64> @bitcast_i64_f64(<2 x double> %src) {
42 ; CHECK-LABEL: bitcast_i64_f64:
43 ; CHECK: @ %bb.0: @ %entry
46 %r = bitcast <2 x double> %src to <2 x i64>
50 define arm_aapcs_vfpcc <2 x i64> @bitcast_i64_f32(<4 x float> %src) {
51 ; CHECK-LABEL: bitcast_i64_f32:
52 ; CHECK: @ %bb.0: @ %entry
55 %r = bitcast <4 x float> %src to <2 x i64>
59 define arm_aapcs_vfpcc <2 x i64> @bitcast_i64_f16(<8 x half> %src) {
60 ; CHECK-LABEL: bitcast_i64_f16:
61 ; CHECK: @ %bb.0: @ %entry
64 %r = bitcast <8 x half> %src to <2 x i64>
69 define arm_aapcs_vfpcc <4 x i32> @bitcast_i32_i64(<2 x i64> %src) {
70 ; CHECK-LABEL: bitcast_i32_i64:
71 ; CHECK: @ %bb.0: @ %entry
74 %r = bitcast <2 x i64> %src to <4 x i32>
78 define arm_aapcs_vfpcc <4 x i32> @bitcast_i32_i32(<4 x i32> %src) {
79 ; CHECK-LABEL: bitcast_i32_i32:
80 ; CHECK: @ %bb.0: @ %entry
83 %r = bitcast <4 x i32> %src to <4 x i32>
87 define arm_aapcs_vfpcc <4 x i32> @bitcast_i32_i16(<8 x i16> %src) {
88 ; CHECK-LABEL: bitcast_i32_i16:
89 ; CHECK: @ %bb.0: @ %entry
92 %r = bitcast <8 x i16> %src to <4 x i32>
96 define arm_aapcs_vfpcc <4 x i32> @bitcast_i32_i8(<16 x i8> %src) {
97 ; CHECK-LABEL: bitcast_i32_i8:
98 ; CHECK: @ %bb.0: @ %entry
101 %r = bitcast <16 x i8> %src to <4 x i32>
105 define arm_aapcs_vfpcc <4 x i32> @bitcast_i32_f64(<2 x double> %src) {
106 ; CHECK-LABEL: bitcast_i32_f64:
107 ; CHECK: @ %bb.0: @ %entry
110 %r = bitcast <2 x double> %src to <4 x i32>
114 define arm_aapcs_vfpcc <4 x i32> @bitcast_i32_f32(<4 x float> %src) {
115 ; CHECK-LABEL: bitcast_i32_f32:
116 ; CHECK: @ %bb.0: @ %entry
119 %r = bitcast <4 x float> %src to <4 x i32>
123 define arm_aapcs_vfpcc <4 x i32> @bitcast_i32_f16(<8 x half> %src) {
124 ; CHECK-LABEL: bitcast_i32_f16:
125 ; CHECK: @ %bb.0: @ %entry
128 %r = bitcast <8 x half> %src to <4 x i32>
133 define arm_aapcs_vfpcc <8 x i16> @bitcast_i16_i64(<2 x i64> %src) {
134 ; CHECK-LABEL: bitcast_i16_i64:
135 ; CHECK: @ %bb.0: @ %entry
138 %r = bitcast <2 x i64> %src to <8 x i16>
142 define arm_aapcs_vfpcc <8 x i16> @bitcast_i16_i32(<4 x i32> %src) {
143 ; CHECK-LABEL: bitcast_i16_i32:
144 ; CHECK: @ %bb.0: @ %entry
147 %r = bitcast <4 x i32> %src to <8 x i16>
151 define arm_aapcs_vfpcc <8 x i16> @bitcast_i16_i16(<8 x i16> %src) {
152 ; CHECK-LABEL: bitcast_i16_i16:
153 ; CHECK: @ %bb.0: @ %entry
156 %r = bitcast <8 x i16> %src to <8 x i16>
160 define arm_aapcs_vfpcc <8 x i16> @bitcast_i16_i8(<16 x i8> %src) {
161 ; CHECK-LABEL: bitcast_i16_i8:
162 ; CHECK: @ %bb.0: @ %entry
165 %r = bitcast <16 x i8> %src to <8 x i16>
169 define arm_aapcs_vfpcc <8 x i16> @bitcast_i16_f64(<2 x double> %src) {
170 ; CHECK-LABEL: bitcast_i16_f64:
171 ; CHECK: @ %bb.0: @ %entry
174 %r = bitcast <2 x double> %src to <8 x i16>
178 define arm_aapcs_vfpcc <8 x i16> @bitcast_i16_f32(<4 x float> %src) {
179 ; CHECK-LABEL: bitcast_i16_f32:
180 ; CHECK: @ %bb.0: @ %entry
183 %r = bitcast <4 x float> %src to <8 x i16>
187 define arm_aapcs_vfpcc <8 x i16> @bitcast_i16_f16(<8 x half> %src) {
188 ; CHECK-LABEL: bitcast_i16_f16:
189 ; CHECK: @ %bb.0: @ %entry
192 %r = bitcast <8 x half> %src to <8 x i16>
197 define arm_aapcs_vfpcc <16 x i8> @bitcast_i8_i64(<2 x i64> %src) {
198 ; CHECK-LABEL: bitcast_i8_i64:
199 ; CHECK: @ %bb.0: @ %entry
202 %r = bitcast <2 x i64> %src to <16 x i8>
206 define arm_aapcs_vfpcc <16 x i8> @bitcast_i8_i32(<4 x i32> %src) {
207 ; CHECK-LABEL: bitcast_i8_i32:
208 ; CHECK: @ %bb.0: @ %entry
211 %r = bitcast <4 x i32> %src to <16 x i8>
215 define arm_aapcs_vfpcc <16 x i8> @bitcast_i8_i16(<8 x i16> %src) {
216 ; CHECK-LABEL: bitcast_i8_i16:
217 ; CHECK: @ %bb.0: @ %entry
220 %r = bitcast <8 x i16> %src to <16 x i8>
224 define arm_aapcs_vfpcc <16 x i8> @bitcast_i8_i8(<16 x i8> %src) {
225 ; CHECK-LABEL: bitcast_i8_i8:
226 ; CHECK: @ %bb.0: @ %entry
229 %r = bitcast <16 x i8> %src to <16 x i8>
233 define arm_aapcs_vfpcc <16 x i8> @bitcast_i8_f64(<2 x double> %src) {
234 ; CHECK-LABEL: bitcast_i8_f64:
235 ; CHECK: @ %bb.0: @ %entry
238 %r = bitcast <2 x double> %src to <16 x i8>
242 define arm_aapcs_vfpcc <16 x i8> @bitcast_i8_f32(<4 x float> %src) {
243 ; CHECK-LABEL: bitcast_i8_f32:
244 ; CHECK: @ %bb.0: @ %entry
247 %r = bitcast <4 x float> %src to <16 x i8>
251 define arm_aapcs_vfpcc <16 x i8> @bitcast_i8_f16(<8 x half> %src) {
252 ; CHECK-LABEL: bitcast_i8_f16:
253 ; CHECK: @ %bb.0: @ %entry
256 %r = bitcast <8 x half> %src to <16 x i8>
261 define arm_aapcs_vfpcc <2 x double> @bitcast_f64_i64(<2 x i64> %src) {
262 ; CHECK-LABEL: bitcast_f64_i64:
263 ; CHECK: @ %bb.0: @ %entry
266 %r = bitcast <2 x i64> %src to <2 x double>
270 define arm_aapcs_vfpcc <2 x double> @bitcast_f64_i32(<4 x i32> %src) {
271 ; CHECK-LABEL: bitcast_f64_i32:
272 ; CHECK: @ %bb.0: @ %entry
275 %r = bitcast <4 x i32> %src to <2 x double>
279 define arm_aapcs_vfpcc <2 x double> @bitcast_f64_i16(<8 x i16> %src) {
280 ; CHECK-LABEL: bitcast_f64_i16:
281 ; CHECK: @ %bb.0: @ %entry
284 %r = bitcast <8 x i16> %src to <2 x double>
288 define arm_aapcs_vfpcc <2 x double> @bitcast_f64_i8(<16 x i8> %src) {
289 ; CHECK-LABEL: bitcast_f64_i8:
290 ; CHECK: @ %bb.0: @ %entry
293 %r = bitcast <16 x i8> %src to <2 x double>
297 define arm_aapcs_vfpcc <2 x double> @bitcast_f64_f64(<2 x double> %src) {
298 ; CHECK-LABEL: bitcast_f64_f64:
299 ; CHECK: @ %bb.0: @ %entry
302 %r = bitcast <2 x double> %src to <2 x double>
306 define arm_aapcs_vfpcc <2 x double> @bitcast_f64_f32(<4 x float> %src) {
307 ; CHECK-LABEL: bitcast_f64_f32:
308 ; CHECK: @ %bb.0: @ %entry
311 %r = bitcast <4 x float> %src to <2 x double>
315 define arm_aapcs_vfpcc <2 x double> @bitcast_f64_f16(<8 x half> %src) {
316 ; CHECK-LABEL: bitcast_f64_f16:
317 ; CHECK: @ %bb.0: @ %entry
320 %r = bitcast <8 x half> %src to <2 x double>
325 define arm_aapcs_vfpcc <4 x float> @bitcast_f32_i64(<2 x i64> %src) {
326 ; CHECK-LABEL: bitcast_f32_i64:
327 ; CHECK: @ %bb.0: @ %entry
330 %r = bitcast <2 x i64> %src to <4 x float>
334 define arm_aapcs_vfpcc <4 x float> @bitcast_f32_i32(<4 x i32> %src) {
335 ; CHECK-LABEL: bitcast_f32_i32:
336 ; CHECK: @ %bb.0: @ %entry
339 %r = bitcast <4 x i32> %src to <4 x float>
343 define arm_aapcs_vfpcc <4 x float> @bitcast_f32_i16(<8 x i16> %src) {
344 ; CHECK-LABEL: bitcast_f32_i16:
345 ; CHECK: @ %bb.0: @ %entry
348 %r = bitcast <8 x i16> %src to <4 x float>
352 define arm_aapcs_vfpcc <4 x float> @bitcast_f32_i8(<16 x i8> %src) {
353 ; CHECK-LABEL: bitcast_f32_i8:
354 ; CHECK: @ %bb.0: @ %entry
357 %r = bitcast <16 x i8> %src to <4 x float>
361 define arm_aapcs_vfpcc <4 x float> @bitcast_f32_f64(<2 x double> %src) {
362 ; CHECK-LABEL: bitcast_f32_f64:
363 ; CHECK: @ %bb.0: @ %entry
366 %r = bitcast <2 x double> %src to <4 x float>
370 define arm_aapcs_vfpcc <4 x float> @bitcast_f32_f32(<4 x float> %src) {
371 ; CHECK-LABEL: bitcast_f32_f32:
372 ; CHECK: @ %bb.0: @ %entry
375 %r = bitcast <4 x float> %src to <4 x float>
379 define arm_aapcs_vfpcc <4 x float> @bitcast_f32_f16(<8 x half> %src) {
380 ; CHECK-LABEL: bitcast_f32_f16:
381 ; CHECK: @ %bb.0: @ %entry
384 %r = bitcast <8 x half> %src to <4 x float>
389 define arm_aapcs_vfpcc <8 x half> @bitcast_f16_i64(<2 x i64> %src) {
390 ; CHECK-LABEL: bitcast_f16_i64:
391 ; CHECK: @ %bb.0: @ %entry
394 %r = bitcast <2 x i64> %src to <8 x half>
398 define arm_aapcs_vfpcc <8 x half> @bitcast_f16_i32(<4 x i32> %src) {
399 ; CHECK-LABEL: bitcast_f16_i32:
400 ; CHECK: @ %bb.0: @ %entry
403 %r = bitcast <4 x i32> %src to <8 x half>
407 define arm_aapcs_vfpcc <8 x half> @bitcast_f16_i16(<8 x i16> %src) {
408 ; CHECK-LABEL: bitcast_f16_i16:
409 ; CHECK: @ %bb.0: @ %entry
412 %r = bitcast <8 x i16> %src to <8 x half>
416 define arm_aapcs_vfpcc <8 x half> @bitcast_f16_i8(<16 x i8> %src) {
417 ; CHECK-LABEL: bitcast_f16_i8:
418 ; CHECK: @ %bb.0: @ %entry
421 %r = bitcast <16 x i8> %src to <8 x half>
425 define arm_aapcs_vfpcc <8 x half> @bitcast_f16_f64(<2 x double> %src) {
426 ; CHECK-LABEL: bitcast_f16_f64:
427 ; CHECK: @ %bb.0: @ %entry
430 %r = bitcast <2 x double> %src to <8 x half>
434 define arm_aapcs_vfpcc <8 x half> @bitcast_f16_f32(<4 x float> %src) {
435 ; CHECK-LABEL: bitcast_f16_f32:
436 ; CHECK: @ %bb.0: @ %entry
439 %r = bitcast <4 x float> %src to <8 x half>
443 define arm_aapcs_vfpcc <8 x half> @bitcast_f16_f16(<8 x half> %src) {
444 ; CHECK-LABEL: bitcast_f16_f16:
445 ; CHECK: @ %bb.0: @ %entry
448 %r = bitcast <8 x half> %src to <8 x half>