blob: edc17b72917df1d94ed79f1bfb81504039450007 [file] [log] [blame]
Bruno Cardoso Lopes65b74e12011-07-21 01:55:47 +00001; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -mattr=+avx | FileCheck %s
2
Bruno Cardoso Lopesdbd4fe22011-07-21 02:24:08 +00003; FIXME: use avx versions for punpcklbw, punpckhbw and punpckhwd
Bruno Cardoso Lopes65b74e12011-07-21 01:55:47 +00004
5; CHECK: vextractf128 $0
6; CHECK-NEXT: punpcklbw
7; CHECK-NEXT: punpckhbw
Bruno Cardoso Lopes65b74e12011-07-21 01:55:47 +00008; CHECK-NEXT: vinsertf128 $1
9; CHECK-NEXT: vpermilps $85
10define <32 x i8> @funcA(<32 x i8> %a) nounwind uwtable readnone ssp {
11entry:
12 %shuffle = shufflevector <32 x i8> %a, <32 x i8> undef, <32 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>
13 ret <32 x i8> %shuffle
14}
15
Bruno Cardoso Lopesdbd4fe22011-07-21 02:24:08 +000016; CHECK: vextractf128 $0
17; CHECK-NEXT: punpckhwd
Bruno Cardoso Lopesdbd4fe22011-07-21 02:24:08 +000018; CHECK-NEXT: vinsertf128 $1
19; CHECK-NEXT: vpermilps $85
20define <16 x i16> @funcB(<16 x i16> %a) nounwind uwtable readnone ssp {
21entry:
22 %shuffle = shufflevector <16 x i16> %a, <16 x i16> undef, <16 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>
23 ret <16 x i16> %shuffle
24}
25
Bruno Cardoso Lopes6a32adc2011-07-25 23:05:25 +000026; CHECK: vmovd
27; CHECK-NEXT: movlhps
28; CHECK-NEXT: vinsertf128 $1
29define <4 x i64> @funcC(i64 %q) nounwind uwtable readnone ssp {
30entry:
31 %vecinit.i = insertelement <4 x i64> undef, i64 %q, i32 0
32 %vecinit2.i = insertelement <4 x i64> %vecinit.i, i64 %q, i32 1
33 %vecinit4.i = insertelement <4 x i64> %vecinit2.i, i64 %q, i32 2
34 %vecinit6.i = insertelement <4 x i64> %vecinit4.i, i64 %q, i32 3
35 ret <4 x i64> %vecinit6.i
36}
37
38; CHECK: vshufpd
39; CHECK-NEXT: vinsertf128 $1
40define <4 x double> @funcD(double %q) nounwind uwtable readnone ssp {
41entry:
42 %vecinit.i = insertelement <4 x double> undef, double %q, i32 0
43 %vecinit2.i = insertelement <4 x double> %vecinit.i, double %q, i32 1
44 %vecinit4.i = insertelement <4 x double> %vecinit2.i, double %q, i32 2
45 %vecinit6.i = insertelement <4 x double> %vecinit4.i, double %q, i32 3
46 ret <4 x double> %vecinit6.i
47}