1 ; RUN: llc < %s -mtriple=i386-apple-darwin10 -mcpu=corei7-avx -mattr=+avx | FileCheck %s
2 ; RUN: llc < %s -mtriple=i386-apple-darwin10 -mcpu=corei7-avx -mattr=+avx -x86-experimental-vector-widening-legalization | FileCheck %s --check-prefix=CHECK-WIDE
8 ;CHECK-WIDE-LABEL: foo1_8:
9 ;CHECK-WIDE: vpmovzxbd %xmm0, %xmm1
10 ;CHECK-WIDE-NEXT: vpslld $24, %xmm1, %xmm1
11 ;CHECK-WIDE-NEXT: vpsrad $24, %xmm1, %xmm1
12 ;CHECK-WIDE-NEXT: vpshufb {{.*}}, %xmm0, %xmm0
13 ;CHECK-WIDE-NEXT: vpslld $24, %xmm0, %xmm0
14 ;CHECK-WIDE-NEXT: vpsrad $24, %xmm0, %xmm0
15 ;CHECK-WIDE-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
16 ;CHECK-WIDE-NEXT: vcvtdq2ps %ymm0, %ymm0
18 define <8 x float> @foo1_8(<8 x i8> %src) {
19 %res = sitofp <8 x i8> %src to <8 x float>
27 ;CHECK-WIDE-LABEL: foo1_4:
28 ;CHECK-WIDE: vpmovzxbd %xmm0, %xmm0
29 ;CHECK-WIDE-NEXT: vpslld $24, %xmm0, %xmm0
30 ;CHECK-WIDE-NEXT: vpsrad $24, %xmm0, %xmm0
31 ;CHECK-WIDE-NEXT: vcvtdq2ps %xmm0, %xmm0
33 define <4 x float> @foo1_4(<4 x i8> %src) {
34 %res = sitofp <4 x i8> %src to <4 x float>
42 ;CHECK-WIDE-LABEL: foo2_8:
43 ;CHECK-WIDE: vcvtdq2ps %ymm{{.*}}, %ymm{{.*}}
45 define <8 x float> @foo2_8(<8 x i8> %src) {
46 %res = uitofp <8 x i8> %src to <8 x float>
54 ;CHECK-WIDE-LABEL: foo2_4:
55 ;CHECK-WIDE: vcvtdq2ps %xmm{{.*}}, %xmm{{.*}}
57 define <4 x float> @foo2_4(<4 x i8> %src) {
58 %res = uitofp <4 x i8> %src to <4 x float>
65 define <8 x i8> @foo3_8(<8 x float> %src) {
66 %res = fptosi <8 x float> %src to <8 x i8>
72 define <4 x i8> @foo3_4(<4 x float> %src) {
73 %res = fptosi <4 x float> %src to <4 x i8>