llvm.org GIT mirror llvm / 28fcc58
[X86] Add additional RUN lines to prepare for D56156. NFC git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350180 91177308-0d34-0410-b5e6-96231b3b80d8 Craig Topper 9 months ago
1 changed file(s) with 126 addition(s) and 63 deletion(s). Raw diff Collapse all Expand all
0 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
1 ; RUN: llc -mtriple=x86_64-unknown-unknown -mcpu=generic < %s | FileCheck %s
1 ; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+sse2 < %s | FileCheck %s --check-prefixes=CHECK,SSE2
2 ; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=+sse4.1 < %s | FileCheck %s --check-prefixes=CHECK,SSE41
23
34 define i32 @test_eq_1(<4 x i32> %A, <4 x i32> %B) {
4 ; CHECK-LABEL: test_eq_1:
5 ; CHECK: # %bb.0:
6 ; CHECK-NEXT: pcmpgtd %xmm0, %xmm1
7 ; CHECK-NEXT: pcmpeqd %xmm0, %xmm0
8 ; CHECK-NEXT: pxor %xmm1, %xmm0
9 ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
10 ; CHECK-NEXT: movd %xmm0, %eax
11 ; CHECK-NEXT: retq
5 ; SSE2-LABEL: test_eq_1:
6 ; SSE2: # %bb.0:
7 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
8 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm0
9 ; SSE2-NEXT: pxor %xmm1, %xmm0
10 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
11 ; SSE2-NEXT: movd %xmm0, %eax
12 ; SSE2-NEXT: retq
13 ;
14 ; SSE41-LABEL: test_eq_1:
15 ; SSE41: # %bb.0:
16 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm1
17 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
18 ; SSE41-NEXT: pxor %xmm1, %xmm0
19 ; SSE41-NEXT: pextrd $1, %xmm0, %eax
20 ; SSE41-NEXT: retq
1221 %cmp = icmp slt <4 x i32> %A, %B
1322 %sext = sext <4 x i1> %cmp to <4 x i32>
1423 %cmp1 = icmp eq <4 x i32> %sext, zeroinitializer
1827 }
1928
2029 define i32 @test_ne_1(<4 x i32> %A, <4 x i32> %B) {
21 ; CHECK-LABEL: test_ne_1:
22 ; CHECK: # %bb.0:
23 ; CHECK-NEXT: pcmpgtd %xmm0, %xmm1
24 ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
25 ; CHECK-NEXT: movd %xmm0, %eax
26 ; CHECK-NEXT: retq
30 ; SSE2-LABEL: test_ne_1:
31 ; SSE2: # %bb.0:
32 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
33 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
34 ; SSE2-NEXT: movd %xmm0, %eax
35 ; SSE2-NEXT: retq
36 ;
37 ; SSE41-LABEL: test_ne_1:
38 ; SSE41: # %bb.0:
39 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm1
40 ; SSE41-NEXT: pextrd $1, %xmm1, %eax
41 ; SSE41-NEXT: retq
2742 %cmp = icmp slt <4 x i32> %A, %B
2843 %sext = sext <4 x i1> %cmp to <4 x i32>
2944 %cmp1 = icmp ne <4 x i32> %sext, zeroinitializer
4661 }
4762
4863 define i32 @test_ge_1(<4 x i32> %A, <4 x i32> %B) {
49 ; CHECK-LABEL: test_ge_1:
50 ; CHECK: # %bb.0:
51 ; CHECK-NEXT: pcmpgtd %xmm0, %xmm1
52 ; CHECK-NEXT: pcmpeqd %xmm0, %xmm0
53 ; CHECK-NEXT: pxor %xmm1, %xmm0
54 ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
55 ; CHECK-NEXT: movd %xmm0, %eax
56 ; CHECK-NEXT: retq
64 ; SSE2-LABEL: test_ge_1:
65 ; SSE2: # %bb.0:
66 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
67 ; SSE2-NEXT: pcmpeqd %xmm0, %xmm0
68 ; SSE2-NEXT: pxor %xmm1, %xmm0
69 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
70 ; SSE2-NEXT: movd %xmm0, %eax
71 ; SSE2-NEXT: retq
72 ;
73 ; SSE41-LABEL: test_ge_1:
74 ; SSE41: # %bb.0:
75 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm1
76 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
77 ; SSE41-NEXT: pxor %xmm1, %xmm0
78 ; SSE41-NEXT: pextrd $1, %xmm0, %eax
79 ; SSE41-NEXT: retq
5780 %cmp = icmp slt <4 x i32> %A, %B
5881 %sext = sext <4 x i1> %cmp to <4 x i32>
5982 %cmp1 = icmp sge <4 x i32> %sext, zeroinitializer
6386 }
6487
6588 define i32 @test_lt_1(<4 x i32> %A, <4 x i32> %B) {
66 ; CHECK-LABEL: test_lt_1:
67 ; CHECK: # %bb.0:
68 ; CHECK-NEXT: pcmpgtd %xmm0, %xmm1
69 ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
70 ; CHECK-NEXT: movd %xmm0, %eax
71 ; CHECK-NEXT: retq
89 ; SSE2-LABEL: test_lt_1:
90 ; SSE2: # %bb.0:
91 ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
92 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
93 ; SSE2-NEXT: movd %xmm0, %eax
94 ; SSE2-NEXT: retq
95 ;
96 ; SSE41-LABEL: test_lt_1:
97 ; SSE41: # %bb.0:
98 ; SSE41-NEXT: pcmpgtd %xmm0, %xmm1
99 ; SSE41-NEXT: pextrd $1, %xmm1, %eax
100 ; SSE41-NEXT: retq
72101 %cmp = icmp slt <4 x i32> %A, %B
73102 %sext = sext <4 x i1> %cmp to <4 x i32>
74103 %cmp1 = icmp slt <4 x i32> %sext, zeroinitializer
91120 }
92121
93122 define i32 @test_eq_2(<4 x i32> %A, <4 x i32> %B) {
94 ; CHECK-LABEL: test_eq_2:
95 ; CHECK: # %bb.0:
96 ; CHECK-NEXT: pcmpgtd %xmm1, %xmm0
97 ; CHECK-NEXT: pcmpeqd %xmm1, %xmm1
98 ; CHECK-NEXT: pxor %xmm0, %xmm1
99 ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
100 ; CHECK-NEXT: movd %xmm0, %eax
101 ; CHECK-NEXT: retq
123 ; SSE2-LABEL: test_eq_2:
124 ; SSE2: # %bb.0:
125 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm0
126 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm1
127 ; SSE2-NEXT: pxor %xmm0, %xmm1
128 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
129 ; SSE2-NEXT: movd %xmm0, %eax
130 ; SSE2-NEXT: retq
131 ;
132 ; SSE41-LABEL: test_eq_2:
133 ; SSE41: # %bb.0:
134 ; SSE41-NEXT: pcmpgtd %xmm1, %xmm0
135 ; SSE41-NEXT: pcmpeqd %xmm1, %xmm1
136 ; SSE41-NEXT: pxor %xmm0, %xmm1
137 ; SSE41-NEXT: pextrd $1, %xmm1, %eax
138 ; SSE41-NEXT: retq
102139 %cmp = icmp slt <4 x i32> %B, %A
103140 %sext = sext <4 x i1> %cmp to <4 x i32>
104141 %cmp1 = icmp eq <4 x i32> %sext, zeroinitializer
108145 }
109146
110147 define i32 @test_ne_2(<4 x i32> %A, <4 x i32> %B) {
111 ; CHECK-LABEL: test_ne_2:
112 ; CHECK: # %bb.0:
113 ; CHECK-NEXT: pcmpgtd %xmm1, %xmm0
114 ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
115 ; CHECK-NEXT: movd %xmm0, %eax
116 ; CHECK-NEXT: retq
148 ; SSE2-LABEL: test_ne_2:
149 ; SSE2: # %bb.0:
150 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm0
151 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
152 ; SSE2-NEXT: movd %xmm0, %eax
153 ; SSE2-NEXT: retq
154 ;
155 ; SSE41-LABEL: test_ne_2:
156 ; SSE41: # %bb.0:
157 ; SSE41-NEXT: pcmpgtd %xmm1, %xmm0
158 ; SSE41-NEXT: pextrd $1, %xmm0, %eax
159 ; SSE41-NEXT: retq
117160 %cmp = icmp slt <4 x i32> %B, %A
118161 %sext = sext <4 x i1> %cmp to <4 x i32>
119162 %cmp1 = icmp ne <4 x i32> %sext, zeroinitializer
123166 }
124167
125168 define i32 @test_le_2(<4 x i32> %A, <4 x i32> %B) {
126 ; CHECK-LABEL: test_le_2:
127 ; CHECK: # %bb.0:
128 ; CHECK-NEXT: pcmpgtd %xmm1, %xmm0
129 ; CHECK-NEXT: pcmpeqd %xmm1, %xmm1
130 ; CHECK-NEXT: pxor %xmm0, %xmm1
131 ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
132 ; CHECK-NEXT: movd %xmm0, %eax
133 ; CHECK-NEXT: retq
169 ; SSE2-LABEL: test_le_2:
170 ; SSE2: # %bb.0:
171 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm0
172 ; SSE2-NEXT: pcmpeqd %xmm1, %xmm1
173 ; SSE2-NEXT: pxor %xmm0, %xmm1
174 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,2,3]
175 ; SSE2-NEXT: movd %xmm0, %eax
176 ; SSE2-NEXT: retq
177 ;
178 ; SSE41-LABEL: test_le_2:
179 ; SSE41: # %bb.0:
180 ; SSE41-NEXT: pcmpgtd %xmm1, %xmm0
181 ; SSE41-NEXT: pcmpeqd %xmm1, %xmm1
182 ; SSE41-NEXT: pxor %xmm0, %xmm1
183 ; SSE41-NEXT: pextrd $1, %xmm1, %eax
184 ; SSE41-NEXT: retq
134185 %cmp = icmp slt <4 x i32> %B, %A
135186 %sext = sext <4 x i1> %cmp to <4 x i32>
136187 %cmp1 = icmp sle <4 x i32> zeroinitializer, %sext
153204 }
154205
155206 define i32 @test_lt_2(<4 x i32> %A, <4 x i32> %B) {
156 ; CHECK-LABEL: test_lt_2:
157 ; CHECK: # %bb.0:
158 ; CHECK-NEXT: pcmpgtd %xmm1, %xmm0
159 ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
160 ; CHECK-NEXT: movd %xmm0, %eax
161 ; CHECK-NEXT: retq
207 ; SSE2-LABEL: test_lt_2:
208 ; SSE2: # %bb.0:
209 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm0
210 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
211 ; SSE2-NEXT: movd %xmm0, %eax
212 ; SSE2-NEXT: retq
213 ;
214 ; SSE41-LABEL: test_lt_2:
215 ; SSE41: # %bb.0:
216 ; SSE41-NEXT: pcmpgtd %xmm1, %xmm0
217 ; SSE41-NEXT: pextrd $1, %xmm0, %eax
218 ; SSE41-NEXT: retq
162219 %cmp = icmp slt <4 x i32> %B, %A
163220 %sext = sext <4 x i1> %cmp to <4 x i32>
164221 %cmp1 = icmp slt <4 x i32> zeroinitializer, %sext
168225 }
169226
170227 define i32 @test_gt_2(<4 x i32> %A, <4 x i32> %B) {
171 ; CHECK-LABEL: test_gt_2:
172 ; CHECK: # %bb.0:
173 ; CHECK-NEXT: pcmpgtd %xmm1, %xmm0
174 ; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
175 ; CHECK-NEXT: movd %xmm0, %eax
176 ; CHECK-NEXT: retq
228 ; SSE2-LABEL: test_gt_2:
229 ; SSE2: # %bb.0:
230 ; SSE2-NEXT: pcmpgtd %xmm1, %xmm0
231 ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,2,3]
232 ; SSE2-NEXT: movd %xmm0, %eax
233 ; SSE2-NEXT: retq
234 ;
235 ; SSE41-LABEL: test_gt_2:
236 ; SSE41: # %bb.0:
237 ; SSE41-NEXT: pcmpgtd %xmm1, %xmm0
238 ; SSE41-NEXT: pextrd $1, %xmm0, %eax
239 ; SSE41-NEXT: retq
177240 %cmp = icmp slt <4 x i32> %B, %A
178241 %sext = sext <4 x i1> %cmp to <4 x i32>
179242 %cmp1 = icmp sgt <4 x i32> zeroinitializer, %sext