1 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx -fast-isel -fast-isel-abort=1 -asm-verbose=0 | FileCheck %s
3 ; Bitcasts between 256-bit vector types are no-ops since no instruction is
4 ; needed for the conversion.
6 define <4 x i64> @v8i32_to_v4i64(<8 x i32> %a) {
7 ;CHECK-LABEL: v8i32_to_v4i64:
8 ;CHECK-NEXT: .cfi_startproc
10 %1 = bitcast <8 x i32> %a to <4 x i64>
14 define <4 x i64> @v16i16_to_v4i64(<16 x i16> %a) {
15 ;CHECK-LABEL: v16i16_to_v4i64:
16 ;CHECK-NEXT: .cfi_startproc
18 %1 = bitcast <16 x i16> %a to <4 x i64>
22 define <4 x i64> @v32i8_to_v4i64(<32 x i8> %a) {
23 ;CHECK-LABEL: v32i8_to_v4i64:
24 ;CHECK-NEXT: .cfi_startproc
26 %1 = bitcast <32 x i8> %a to <4 x i64>
30 define <4 x i64> @v4f64_to_v4i64(<4 x double> %a) {
31 ;CHECK-LABEL: v4f64_to_v4i64:
32 ;CHECK-NEXT: .cfi_startproc
34 %1 = bitcast <4 x double> %a to <4 x i64>
38 define <4 x i64> @v8f32_to_v4i64(<8 x float> %a) {
39 ;CHECK-LABEL: v8f32_to_v4i64:
40 ;CHECK-NEXT: .cfi_startproc
42 %1 = bitcast <8 x float> %a to <4 x i64>
46 define <8 x i32> @v4i64_to_v8i32(<4 x i64> %a) {
47 ;CHECK-LABEL: v4i64_to_v8i32:
48 ;CHECK-NEXT: .cfi_startproc
50 %1 = bitcast <4 x i64> %a to <8 x i32>
54 define <8 x i32> @v16i16_to_v8i32(<16 x i16> %a) {
55 ;CHECK-LABEL: v16i16_to_v8i32:
56 ;CHECK-NEXT: .cfi_startproc
58 %1 = bitcast <16 x i16> %a to <8 x i32>
62 define <8 x i32> @v32i8_to_v8i32(<32 x i8> %a) {
63 ;CHECK-LABEL: v32i8_to_v8i32:
64 ;CHECK-NEXT: .cfi_startproc
66 %1 = bitcast <32 x i8> %a to <8 x i32>
70 define <8 x i32> @v4f64_to_v8i32(<4 x double> %a) {
71 ;CHECK-LABEL: v4f64_to_v8i32:
72 ;CHECK-NEXT: .cfi_startproc
74 %1 = bitcast <4 x double> %a to <8 x i32>
78 define <8 x i32> @v8f32_to_v8i32(<8 x float> %a) {
79 ;CHECK-LABEL: v8f32_to_v8i32:
80 ;CHECK-NEXT: .cfi_startproc
82 %1 = bitcast <8 x float> %a to <8 x i32>
86 define <16 x i16> @v4i64_to_v16i16(<4 x i64> %a) {
87 ;CHECK-LABEL: v4i64_to_v16i16:
88 ;CHECK-NEXT: .cfi_startproc
90 %1 = bitcast <4 x i64> %a to <16 x i16>
94 define <16 x i16> @v8i32_to_v16i16(<8 x i32> %a) {
95 ;CHECK-LABEL: v8i32_to_v16i16:
96 ;CHECK-NEXT: .cfi_startproc
98 %1 = bitcast <8 x i32> %a to <16 x i16>
102 define <16 x i16> @v32i8_to_v16i16(<32 x i8> %a) {
103 ;CHECK-LABEL: v32i8_to_v16i16:
104 ;CHECK-NEXT: .cfi_startproc
106 %1 = bitcast <32 x i8> %a to <16 x i16>
110 define <16 x i16> @v4f64_to_v16i16(<4 x double> %a) {
111 ;CHECK-LABEL: v4f64_to_v16i16:
112 ;CHECK-NEXT: .cfi_startproc
114 %1 = bitcast <4 x double> %a to <16 x i16>
118 define <16 x i16> @v8f32_to_v16i16(<8 x float> %a) {
119 ;CHECK-LABEL: v8f32_to_v16i16:
120 ;CHECK-NEXT: .cfi_startproc
122 %1 = bitcast <8 x float> %a to <16 x i16>
126 define <32 x i8> @v16i16_to_v32i8(<16 x i16> %a) {
127 ;CHECK-LABEL: v16i16_to_v32i8:
128 ;CHECK-NEXT: .cfi_startproc
130 %1 = bitcast <16 x i16> %a to <32 x i8>
134 define <32 x i8> @v4i64_to_v32i8(<4 x i64> %a) {
135 ;CHECK-LABEL: v4i64_to_v32i8:
136 ;CHECK-NEXT: .cfi_startproc
138 %1 = bitcast <4 x i64> %a to <32 x i8>
142 define <32 x i8> @v8i32_to_v32i8(<8 x i32> %a) {
143 ;CHECK-LABEL: v8i32_to_v32i8:
144 ;CHECK-NEXT: .cfi_startproc
146 %1 = bitcast <8 x i32> %a to <32 x i8>
150 define <32 x i8> @v4f64_to_v32i8(<4 x double> %a) {
151 ;CHECK-LABEL: v4f64_to_v32i8:
152 ;CHECK-NEXT: .cfi_startproc
154 %1 = bitcast <4 x double> %a to <32 x i8>
158 define <32 x i8> @v8f32_to_v32i8(<8 x float> %a) {
159 ;CHECK-LABEL: v8f32_to_v32i8:
160 ;CHECK-NEXT: .cfi_startproc
162 %1 = bitcast <8 x float> %a to <32 x i8>
166 define <8 x float> @v32i8_to_v8f32(<32 x i8> %a) {
167 ;CHECK-LABEL: v32i8_to_v8f32:
168 ;CHECK-NEXT: .cfi_startproc
170 %1 = bitcast <32 x i8> %a to <8 x float>
174 define <8 x float> @v16i16_to_v8f32(<16 x i16> %a) {
175 ;CHECK-LABEL: v16i16_to_v8f32:
176 ;CHECK-NEXT: .cfi_startproc
178 %1 = bitcast <16 x i16> %a to <8 x float>
182 define <8 x float> @v4i64_to_v8f32(<4 x i64> %a) {
183 ;CHECK-LABEL: v4i64_to_v8f32:
184 ;CHECK-NEXT: .cfi_startproc
186 %1 = bitcast <4 x i64> %a to <8 x float>
190 define <8 x float> @v8i32_to_v8f32(<8 x i32> %a) {
191 ;CHECK-LABEL: v8i32_to_v8f32:
192 ;CHECK-NEXT: .cfi_startproc
194 %1 = bitcast <8 x i32> %a to <8 x float>
198 define <8 x float> @v4f64_to_v8f32(<4 x double> %a) {
199 ;CHECK-LABEL: v4f64_to_v8f32:
200 ;CHECK-NEXT: .cfi_startproc
202 %1 = bitcast <4 x double> %a to <8 x float>
206 define <4 x double> @v8f32_to_v4f64(<8 x float> %a) {
207 ;CHECK-LABEL: v8f32_to_v4f64:
208 ;CHECK-NEXT: .cfi_startproc
210 %1 = bitcast <8 x float> %a to <4 x double>
214 define <4 x double> @v32i8_to_v4f64(<32 x i8> %a) {
215 ;CHECK-LABEL: v32i8_to_v4f64:
216 ;CHECK-NEXT: .cfi_startproc
218 %1 = bitcast <32 x i8> %a to <4 x double>
222 define <4 x double> @v16i16_to_v4f64(<16 x i16> %a) {
223 ;CHECK-LABEL: v16i16_to_v4f64:
224 ;CHECK-NEXT: .cfi_startproc
226 %1 = bitcast <16 x i16> %a to <4 x double>
230 define <4 x double> @v4i64_to_v4f64(<4 x i64> %a) {
231 ;CHECK-LABEL: v4i64_to_v4f64:
232 ;CHECK-NEXT: .cfi_startproc
234 %1 = bitcast <4 x i64> %a to <4 x double>
238 define <4 x double> @v8i32_to_v4f64(<8 x i32> %a) {
239 ;CHECK-LABEL: v8i32_to_v4f64:
240 ;CHECK-NEXT: .cfi_startproc
242 %1 = bitcast <8 x i32> %a to <4 x double>