OSDN Git Service

Update aosp/master LLVM for rebase to r239765
[android-x86/external-llvm.git] / test / CodeGen / X86 / pr15267.ll
1 ; RUN: llc < %s -mtriple=x86_64-pc-linux -mcpu=corei7-avx | FileCheck %s
2
3 define <4 x i3> @test1(<4 x i3>* %in) nounwind {
4   %ret = load <4 x i3>, <4 x i3>* %in, align 1
5   ret <4 x i3> %ret
6 }
7 ; CHECK-LABEL: test1
8 ; CHECK: movzwl
9 ; CHECK: shrl $3
10 ; CHECK: andl $7
11 ; CHECK: andl $7
12 ; CHECK: vmovd
13 ; CHECK: pinsrd $1
14 ; CHECK: shrl $6
15 ; CHECK: andl $7
16 ; CHECK: pinsrd $2
17 ; CHECK: shrl $9
18 ; CHECK: andl $7
19 ; CHECK: pinsrd $3
20 ; CHECK: ret
21
22 define <4 x i1> @test2(<4 x i1>* %in) nounwind {
23   %ret = load <4 x i1>, <4 x i1>* %in, align 1
24   ret <4 x i1> %ret
25 }
26
27 ; CHECK-LABEL: test2
28 ; CHECK: movzbl
29 ; CHECK: shrl
30 ; CHECK: andl $1
31 ; CHECK: andl $1
32 ; CHECK: vmovd
33 ; CHECK: pinsrd $1
34 ; CHECK: shrl $2
35 ; CHECK: andl $1
36 ; CHECK: pinsrd $2
37 ; CHECK: shrl $3
38 ; CHECK: andl $1
39 ; CHECK: pinsrd $3
40 ; CHECK: ret
41
42 define <4 x i64> @test3(<4 x i1>* %in) nounwind {
43   %wide.load35 = load <4 x i1>, <4 x i1>* %in, align 1
44   %sext = sext <4 x i1> %wide.load35 to <4 x i64>
45   ret <4 x i64> %sext
46 }
47
48 ; CHECK-LABEL: test3
49 ; CHECK: movzbl
50 ; CHECK: movq
51 ; CHECK: shlq
52 ; CHECK: sarq
53 ; CHECK: movq
54 ; CHECK: shlq
55 ; CHECK: sarq
56 ; CHECK: vmovd
57 ; CHECK: vpinsrd
58 ; CHECK: movq
59 ; CHECK: shlq
60 ; CHECK: sarq
61 ; CHECK: vpinsrd
62 ; CHECK: shlq
63 ; CHECK: sarq
64 ; CHECK: vpinsrd
65 ; CHECK: vpmovsxdq
66 ; CHECK: vmovd
67 ; CHECK: vpinsrd
68 ; CHECK: vpmovsxdq
69 ; CHECK: vinsertf128
70 ; CHECK: ret
71
72 define <16 x i4> @test4(<16 x i4>* %in) nounwind {
73   %ret = load <16 x i4>, <16 x i4>* %in, align 1
74   ret <16 x i4> %ret
75 }
76
77 ; CHECK-LABEL: test4
78 ; CHECK: movl
79 ; CHECK-NEXT: shrl
80 ; CHECK-NEXT: andl
81 ; CHECK-NEXT: movl
82 ; CHECK-NEXT: andl
83 ; CHECK-NEXT: vmovd
84 ; CHECK-NEXT: vpinsrb
85 ; CHECK-NEXT: movl
86 ; CHECK-NEXT: shrl
87 ; CHECK-NEXT: andl
88 ; CHECK-NEXT: vpinsrb
89 ; CHECK-NEXT: movl
90 ; CHECK-NEXT: shrl
91 ; CHECK-NEXT: andl
92 ; CHECK-NEXT: vpinsrb
93 ; CHECK-NEXT: movl
94 ; CHECK-NEXT: shrl
95 ; CHECK-NEXT: andl
96 ; CHECK-NEXT: vpinsrb
97 ; CHECK-NEXT: movl
98 ; CHECK-NEXT: shrl
99 ; CHECK-NEXT: andl
100 ; CHECK-NEXT: vpinsrb
101 ; CHECK-NEXT: movl
102 ; CHECK-NEXT: shrl
103 ; CHECK-NEXT: andl
104 ; CHECK-NEXT: vpinsrb
105 ; CHECK-NEXT: movl
106 ; CHECK-NEXT: shrl
107 ; CHECK-NEXT: vpinsrb
108 ; CHECK-NEXT: movq
109 ; CHECK-NEXT: shrq
110 ; CHECK-NEXT: andl
111 ; CHECK-NEXT: vpinsrb
112 ; CHECK-NEXT: movq
113 ; CHECK-NEXT: shrq
114 ; CHECK-NEXT: andl
115 ; CHECK-NEXT: vpinsrb
116 ; CHECK-NEXT: movq
117 ; CHECK-NEXT: shrq
118 ; CHECK-NEXT: andl
119 ; CHECK-NEXT: vpinsrb
120 ; CHECK-NEXT: movq
121 ; CHECK-NEXT: shrq
122 ; CHECK-NEXT: andl
123 ; CHECK-NEXT: vpinsrb
124 ; CHECK-NEXT: movq
125 ; CHECK-NEXT: shrq
126 ; CHECK-NEXT: andl
127 ; CHECK-NEXT: vpinsrb
128 ; CHECK-NEXT: movq
129 ; CHECK-NEXT: shrq
130 ; CHECK-NEXT: andl
131 ; CHECK-NEXT: vpinsrb
132 ; CHECK-NEXT: movq
133 ; CHECK-NEXT: shrq
134 ; CHECK-NEXT: andl
135 ; CHECK-NEXT: vpinsrb
136 ; CHECK-NEXT: shrq
137 ; CHECK-NEXT: vpinsrb
138 ; CHECK-NEXT: retq