@@ -6,21 +6,13 @@ define <8 x i32> @cmp_eq_bitcast(<8 x i32> %x) {
6
6
; X86-LABEL: cmp_eq_bitcast:
7
7
; X86: # %bb.0:
8
8
; X86-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0
9
- ; X86-NEXT: vextractf128 $1, %ymm0, %xmm1
10
- ; X86-NEXT: vbroadcastss {{.*#+}} xmm2 = [3,3,3,3]
11
- ; X86-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
12
- ; X86-NEXT: vpcmpeqd %xmm2, %xmm0, %xmm0
13
- ; X86-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
9
+ ; X86-NEXT: vcmpeqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0
14
10
; X86-NEXT: retl
15
11
;
16
12
; X64-LABEL: cmp_eq_bitcast:
17
13
; X64: # %bb.0:
18
14
; X64-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
19
- ; X64-NEXT: vextractf128 $1, %ymm0, %xmm1
20
- ; X64-NEXT: vbroadcastss {{.*#+}} xmm2 = [3,3,3,3]
21
- ; X64-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
22
- ; X64-NEXT: vpcmpeqd %xmm2, %xmm0, %xmm0
23
- ; X64-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
15
+ ; X64-NEXT: vcmpeqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
24
16
; X64-NEXT: retq
25
17
%and = and <8 x i32 > %x , <i32 7 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 >
26
18
%cmp = icmp eq <8 x i32 > %and , <i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 >
@@ -29,17 +21,17 @@ define <8 x i32> @cmp_eq_bitcast(<8 x i32> %x) {
29
21
}
30
22
31
23
define <8 x i32 > @cmp_ne_sitofp (<8 x i32 > %x ) {
32
- ; CHECK -LABEL: cmp_ne_sitofp:
33
- ; CHECK : # %bb.0:
34
- ; CHECK -NEXT: vextractf128 $1, %ymm0, %xmm1
35
- ; CHECK -NEXT: vbroadcastss {{.*#+}} xmm2 = [3,3,3,3]
36
- ; CHECK -NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
37
- ; CHECK-NEXT: vpcmpeqd %xmm3, %xmm3, %xmm3
38
- ; CHECK-NEXT: vpxor %xmm3, %xmm1, %xmm1
39
- ; CHECK-NEXT : vpcmpeqd %xmm2, %xmm0, %xmm0
40
- ; CHECK -NEXT: vpxor %xmm3 , %xmm0, %xmm0
41
- ; CHECK -NEXT: vinsertf128 $1, %xmm1 , %ymm0, %ymm0
42
- ; CHECK -NEXT: ret{{[l|q]}}
24
+ ; X86 -LABEL: cmp_ne_sitofp:
25
+ ; X86 : # %bb.0:
26
+ ; X86 -NEXT: vcvtdq2ps %ymm0, %ymm0
27
+ ; X86 -NEXT: vcmpneq_oqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0
28
+ ; X86 -NEXT: retl
29
+ ;
30
+ ; X64-LABEL: cmp_ne_sitofp:
31
+ ; X64 : # %bb.0:
32
+ ; X64 -NEXT: vcvtdq2ps %ymm0 , %ymm0
33
+ ; X64 -NEXT: vcmpneq_oqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip) , %ymm0, %ymm0
34
+ ; X64 -NEXT: retq
43
35
%cmp = icmp ne <8 x i32 > %x , <i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 >
44
36
%sext = sext <8 x i1 > %cmp to <8 x i32 >
45
37
ret <8 x i32 > %sext
@@ -72,14 +64,17 @@ define <8 x i32> @cmp_slt_fail_no_const(<8 x i32> %x, <8 x i32> %y) {
72
64
}
73
65
74
66
define <8 x i32 > @cmp_eq_sitofp (<8 x i32 > %x ) {
75
- ; CHECK-LABEL: cmp_eq_sitofp:
76
- ; CHECK: # %bb.0:
77
- ; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm1
78
- ; CHECK-NEXT: vbroadcastss {{.*#+}} xmm2 = [4294967293,4294967293,4294967293,4294967293]
79
- ; CHECK-NEXT: vpcmpeqd %xmm2, %xmm1, %xmm1
80
- ; CHECK-NEXT: vpcmpeqd %xmm2, %xmm0, %xmm0
81
- ; CHECK-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
82
- ; CHECK-NEXT: ret{{[l|q]}}
67
+ ; X86-LABEL: cmp_eq_sitofp:
68
+ ; X86: # %bb.0:
69
+ ; X86-NEXT: vcvtdq2ps %ymm0, %ymm0
70
+ ; X86-NEXT: vcmpeqps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0
71
+ ; X86-NEXT: retl
72
+ ;
73
+ ; X64-LABEL: cmp_eq_sitofp:
74
+ ; X64: # %bb.0:
75
+ ; X64-NEXT: vcvtdq2ps %ymm0, %ymm0
76
+ ; X64-NEXT: vcmpeqps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
77
+ ; X64-NEXT: retq
83
78
%cmp = icmp eq <8 x i32 > %x , <i32 -3 , i32 -3 , i32 -3 , i32 -3 , i32 -3 , i32 -3 , i32 -3 , i32 -3 >
84
79
%sext = sext <8 x i1 > %cmp to <8 x i32 >
85
80
ret <8 x i32 > %sext
@@ -105,11 +100,7 @@ define <8 x i32> @cmp_sgt_bitcast(<8 x i32> %xx, <8 x i32> %yy) {
105
100
; CHECK-NEXT: vbroadcastss {{.*#+}} ymm2 = [2139095040,2139095040,2139095040,2139095040,2139095040,2139095040,2139095040,2139095040]
106
101
; CHECK-NEXT: vandps %ymm2, %ymm0, %ymm0
107
102
; CHECK-NEXT: vandps %ymm2, %ymm1, %ymm1
108
- ; CHECK-NEXT: vextractf128 $1, %ymm1, %xmm2
109
- ; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm3
110
- ; CHECK-NEXT: vpcmpgtd %xmm2, %xmm3, %xmm2
111
- ; CHECK-NEXT: vpcmpgtd %xmm1, %xmm0, %xmm0
112
- ; CHECK-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
103
+ ; CHECK-NEXT: vcmpltps %ymm0, %ymm1, %ymm0
113
104
; CHECK-NEXT: ret{{[l|q]}}
114
105
%x = and <8 x i32 > %xx , <i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 >
115
106
%y = and <8 x i32 > %yy , <i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 >
@@ -214,21 +205,13 @@ define <8 x i32> @cmp_ule_bitcast(<8 x i32> %xx) {
214
205
; X86-LABEL: cmp_ule_bitcast:
215
206
; X86: # %bb.0:
216
207
; X86-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0
217
- ; X86-NEXT: vextractf128 $1, %ymm0, %xmm1
218
- ; X86-NEXT: vbroadcastss {{.*#+}} xmm2 = [4,4,4,4]
219
- ; X86-NEXT: vpcmpgtd %xmm1, %xmm2, %xmm1
220
- ; X86-NEXT: vpcmpgtd %xmm0, %xmm2, %xmm0
221
- ; X86-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
208
+ ; X86-NEXT: vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0
222
209
; X86-NEXT: retl
223
210
;
224
211
; X64-LABEL: cmp_ule_bitcast:
225
212
; X64: # %bb.0:
226
213
; X64-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
227
- ; X64-NEXT: vextractf128 $1, %ymm0, %xmm1
228
- ; X64-NEXT: vbroadcastss {{.*#+}} xmm2 = [4,4,4,4]
229
- ; X64-NEXT: vpcmpgtd %xmm1, %xmm2, %xmm1
230
- ; X64-NEXT: vpcmpgtd %xmm0, %xmm2, %xmm0
231
- ; X64-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
214
+ ; X64-NEXT: vcmpltps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
232
215
; X64-NEXT: retq
233
216
%x = and <8 x i32 > %xx , <i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 , i32 2139095040 >
234
217
%cmp = icmp ule <8 x i32 > %x , <i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 >
@@ -240,21 +223,17 @@ define <8 x i32> @cmp_ugt_sitofp(<8 x i32> %xx) {
240
223
; X86-LABEL: cmp_ugt_sitofp:
241
224
; X86: # %bb.0:
242
225
; X86-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}, %ymm0, %ymm0
243
- ; X86-NEXT: vextractf128 $1, %ymm0, %xmm1
244
- ; X86-NEXT: vbroadcastss {{.*#+}} xmm2 = [3,3,3,3]
245
- ; X86-NEXT: vpcmpgtd %xmm2, %xmm1, %xmm1
246
- ; X86-NEXT: vpcmpgtd %xmm2, %xmm0, %xmm0
247
- ; X86-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
226
+ ; X86-NEXT: vcvtdq2ps %ymm0, %ymm0
227
+ ; X86-NEXT: vbroadcastss {{.*#+}} ymm1 = [3.0E+0,3.0E+0,3.0E+0,3.0E+0,3.0E+0,3.0E+0,3.0E+0,3.0E+0]
228
+ ; X86-NEXT: vcmpltps %ymm0, %ymm1, %ymm0
248
229
; X86-NEXT: retl
249
230
;
250
231
; X64-LABEL: cmp_ugt_sitofp:
251
232
; X64: # %bb.0:
252
233
; X64-NEXT: vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
253
- ; X64-NEXT: vextractf128 $1, %ymm0, %xmm1
254
- ; X64-NEXT: vbroadcastss {{.*#+}} xmm2 = [3,3,3,3]
255
- ; X64-NEXT: vpcmpgtd %xmm2, %xmm1, %xmm1
256
- ; X64-NEXT: vpcmpgtd %xmm2, %xmm0, %xmm0
257
- ; X64-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
234
+ ; X64-NEXT: vcvtdq2ps %ymm0, %ymm0
235
+ ; X64-NEXT: vbroadcastss {{.*#+}} ymm1 = [3.0E+0,3.0E+0,3.0E+0,3.0E+0,3.0E+0,3.0E+0,3.0E+0,3.0E+0]
236
+ ; X64-NEXT: vcmpltps %ymm0, %ymm1, %ymm0
258
237
; X64-NEXT: retq
259
238
%x = and <8 x i32 > %xx , <i32 2147483647 , i32 2147483647 , i32 2147483647 , i32 2147483647 , i32 2147483647 , i32 2147483647 , i32 2147483647 , i32 2147483647 >
260
239
%cmp = icmp ugt <8 x i32 > %x , <i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 , i32 3 >
0 commit comments