@@ -17,28 +17,27 @@ define <4 x i32> @eq_or_eq_ult_2(<4 x i32> %x) {
17
17
;
18
18
; AVX2-LABEL: eq_or_eq_ult_2:
19
19
; AVX2: # %bb.0:
20
- ; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [4294967291,4294967291,4294967291,4294967291 ]
21
- ; AVX2-NEXT: vpaddd %xmm1, %xmm0, %xmm0
22
- ; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [1,1,1,1 ]
23
- ; AVX2-NEXT: vpminud %xmm1 , %xmm0, %xmm1
24
- ; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
20
+ ; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [6,6,6,6 ]
21
+ ; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm1
22
+ ; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm2 = [5,5,5,5 ]
23
+ ; AVX2-NEXT: vpcmpeqd %xmm2 , %xmm0, %xmm0
24
+ ; AVX2-NEXT: vpor %xmm1, %xmm0, %xmm0
25
25
; AVX2-NEXT: retq
26
26
;
27
27
; SSE41-LABEL: eq_or_eq_ult_2:
28
28
; SSE41: # %bb.0:
29
- ; SSE41-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
30
- ; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [1,1,1,1]
31
- ; SSE41-NEXT: pminud %xmm0 , %xmm1
32
- ; SSE41-NEXT: pcmpeqd %xmm1, %xmm0
29
+ ; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [6,6,6,6]
30
+ ; SSE41-NEXT: pcmpeqd %xmm0, % xmm1
31
+ ; SSE41-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip) , %xmm0
32
+ ; SSE41-NEXT: por %xmm1, %xmm0
33
33
; SSE41-NEXT: retq
34
34
;
35
35
; SSE2-LABEL: eq_or_eq_ult_2:
36
36
; SSE2: # %bb.0:
37
- ; SSE2-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
38
- ; SSE2-NEXT: pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
39
- ; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [2147483650,2147483650,2147483650,2147483650]
40
- ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
41
- ; SSE2-NEXT: movdqa %xmm1, %xmm0
37
+ ; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [6,6,6,6]
38
+ ; SSE2-NEXT: pcmpeqd %xmm0, %xmm1
39
+ ; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
40
+ ; SSE2-NEXT: por %xmm1, %xmm0
42
41
; SSE2-NEXT: retq
43
42
%x_adj = add <4 x i32 > %x , <i32 -5 , i32 -5 , i32 -5 , i32 -5 >
44
43
%cmp = icmp ult <4 x i32 > %x_adj , <i32 2 , i32 2 , i32 2 , i32 2 >
@@ -75,11 +74,10 @@ define <4 x i32> @eq_or_eq_ult_2_only_transform_sse2(<4 x i32> %x) {
75
74
;
76
75
; SSE2-LABEL: eq_or_eq_ult_2_only_transform_sse2:
77
76
; SSE2: # %bb.0:
78
- ; SSE2-NEXT: pcmpeqd %xmm1, %xmm1
79
- ; SSE2-NEXT: paddd %xmm0, %xmm1
80
- ; SSE2-NEXT: pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
81
- ; SSE2-NEXT: movdqa {{.*#+}} xmm0 = [2147483650,2147483650,2147483650,2147483650]
82
- ; SSE2-NEXT: pcmpgtd %xmm1, %xmm0
77
+ ; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [2,2,2,2]
78
+ ; SSE2-NEXT: pcmpeqd %xmm0, %xmm1
79
+ ; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
80
+ ; SSE2-NEXT: por %xmm1, %xmm0
83
81
; SSE2-NEXT: retq
84
82
%x_adj = add <4 x i32 > %x , <i32 -1 , i32 -1 , i32 -1 , i32 -1 >
85
83
%cmp = icmp ult <4 x i32 > %x_adj , <i32 2 , i32 2 , i32 2 , i32 2 >
@@ -210,25 +208,25 @@ define <4 x i32> @eq_or_eq_ugt_m3(<4 x i32> %x) {
210
208
;
211
209
; AVX2-LABEL: eq_or_eq_ugt_m3:
212
210
; AVX2: # %bb.0:
213
- ; AVX2-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
214
- ; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [4294967294,4294967294,4294967294,4294967294]
215
- ; AVX2-NEXT: vpmaxud %xmm1, %xmm0, %xmm1
216
- ; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
211
+ ; AVX2-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
212
+ ; AVX2-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
213
+ ; AVX2-NEXT: vpor %xmm1, %xmm0, %xmm0
217
214
; AVX2-NEXT: retq
218
215
;
219
216
; SSE41-LABEL: eq_or_eq_ugt_m3:
220
217
; SSE41: # %bb.0:
221
- ; SSE41-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
222
- ; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [4294967294,4294967294,4294967294,4294967294]
223
- ; SSE41-NEXT: pmaxud %xmm0 , %xmm1
224
- ; SSE41-NEXT: pcmpeqd %xmm1, %xmm0
218
+ ; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [9,12,9,9]
219
+ ; SSE41-NEXT: pcmpeqd %xmm0, % xmm1
220
+ ; SSE41-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip) , %xmm0
221
+ ; SSE41-NEXT: por %xmm1, %xmm0
225
222
; SSE41-NEXT: retq
226
223
;
227
224
; SSE2-LABEL: eq_or_eq_ugt_m3:
228
225
; SSE2: # %bb.0:
229
- ; SSE2-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
230
- ; SSE2-NEXT: pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
231
- ; SSE2-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
226
+ ; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [9,12,9,9]
227
+ ; SSE2-NEXT: pcmpeqd %xmm0, %xmm1
228
+ ; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
229
+ ; SSE2-NEXT: por %xmm1, %xmm0
232
230
; SSE2-NEXT: retq
233
231
%x_adj = add <4 x i32 > %x , <i32 -11 , i32 -14 , i32 -11 , i32 -11 >
234
232
%cmp = icmp ugt <4 x i32 > %x_adj , <i32 -3 , i32 -3 , i32 -3 , i32 -3 >
@@ -247,27 +245,25 @@ define <4 x i32> @eq_or_eq_ule_1(<4 x i32> %x) {
247
245
;
248
246
; AVX2-LABEL: eq_or_eq_ule_1:
249
247
; AVX2: # %bb.0:
250
- ; AVX2-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
251
- ; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [1,1,1,1]
252
- ; AVX2-NEXT: vpminud %xmm1, %xmm0, %xmm1
253
- ; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
248
+ ; AVX2-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
249
+ ; AVX2-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
250
+ ; AVX2-NEXT: vpor %xmm1, %xmm0, %xmm0
254
251
; AVX2-NEXT: retq
255
252
;
256
253
; SSE41-LABEL: eq_or_eq_ule_1:
257
254
; SSE41: # %bb.0:
258
- ; SSE41-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
259
- ; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [1,1,1,1]
260
- ; SSE41-NEXT: pminud %xmm0 , %xmm1
261
- ; SSE41-NEXT: pcmpeqd %xmm1, %xmm0
255
+ ; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [0,4294967295,4294967294,4294967293]
256
+ ; SSE41-NEXT: pcmpeqd %xmm0, % xmm1
257
+ ; SSE41-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip) , %xmm0
258
+ ; SSE41-NEXT: por %xmm1, %xmm0
262
259
; SSE41-NEXT: retq
263
260
;
264
261
; SSE2-LABEL: eq_or_eq_ule_1:
265
262
; SSE2: # %bb.0:
266
- ; SSE2-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
267
- ; SSE2-NEXT: pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
268
- ; SSE2-NEXT: pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
269
- ; SSE2-NEXT: pcmpeqd %xmm1, %xmm1
270
- ; SSE2-NEXT: pxor %xmm1, %xmm0
263
+ ; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [0,4294967295,4294967294,4294967293]
264
+ ; SSE2-NEXT: pcmpeqd %xmm0, %xmm1
265
+ ; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
266
+ ; SSE2-NEXT: por %xmm1, %xmm0
271
267
; SSE2-NEXT: retq
272
268
%x_adj = add <4 x i32 > %x , <i32 1 , i32 2 , i32 3 , i32 4 >
273
269
%cmp = icmp ule <4 x i32 > %x_adj , <i32 1 , i32 1 , i32 1 , i32 1 >
@@ -286,28 +282,25 @@ define <4 x i32> @eq_or_eq_uge_m2(<4 x i32> %x) {
286
282
;
287
283
; AVX2-LABEL: eq_or_eq_uge_m2:
288
284
; AVX2: # %bb.0:
289
- ; AVX2-NEXT: vpaddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
290
- ; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [4294967294,4294967294,4294967294,4294967294]
291
- ; AVX2-NEXT: vpmaxud %xmm1, %xmm0, %xmm1
292
- ; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
285
+ ; AVX2-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
286
+ ; AVX2-NEXT: vpcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
287
+ ; AVX2-NEXT: vpor %xmm1, %xmm0, %xmm0
293
288
; AVX2-NEXT: retq
294
289
;
295
290
; SSE41-LABEL: eq_or_eq_uge_m2:
296
291
; SSE41: # %bb.0:
297
- ; SSE41-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
298
- ; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [4294967294,4294967294,4294967294,4294967294]
299
- ; SSE41-NEXT: pmaxud %xmm0 , %xmm1
300
- ; SSE41-NEXT: pcmpeqd %xmm1, %xmm0
292
+ ; SSE41-NEXT: pmovsxbd {{.*#+}} xmm1 = [4294967293,4294967292,4294967291,4294967290]
293
+ ; SSE41-NEXT: pcmpeqd %xmm0, % xmm1
294
+ ; SSE41-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip) , %xmm0
295
+ ; SSE41-NEXT: por %xmm1, %xmm0
301
296
; SSE41-NEXT: retq
302
297
;
303
298
; SSE2-LABEL: eq_or_eq_uge_m2:
304
299
; SSE2: # %bb.0:
305
- ; SSE2-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
306
- ; SSE2-NEXT: pxor {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
307
- ; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [2147483646,2147483646,2147483646,2147483646]
308
- ; SSE2-NEXT: pcmpgtd %xmm0, %xmm1
309
- ; SSE2-NEXT: pcmpeqd %xmm0, %xmm0
310
- ; SSE2-NEXT: pxor %xmm1, %xmm0
300
+ ; SSE2-NEXT: movdqa {{.*#+}} xmm1 = [4294967293,4294967292,4294967291,4294967290]
301
+ ; SSE2-NEXT: pcmpeqd %xmm0, %xmm1
302
+ ; SSE2-NEXT: pcmpeqd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
303
+ ; SSE2-NEXT: por %xmm1, %xmm0
311
304
; SSE2-NEXT: retq
312
305
%x_adj = add <4 x i32 > %x , <i32 1 , i32 2 , i32 3 , i32 4 >
313
306
%cmp = icmp uge <4 x i32 > %x_adj , <i32 -2 , i32 -2 , i32 -2 , i32 -2 >
0 commit comments