Skip to content

Commit c12de14

Browse files
committed
Revert "[X86] Canonicalize fp zero vectors from bitcasted integer zero vectors"
This reverts commit 169db80. This change is causing many test failures on Windows bots: - https://lab.llvm.org/buildbot/#/builders/235/builds/3616 - https://lab.llvm.org/buildbot/#/builders/233/builds/4883 - https://lab.llvm.org/buildbot/#/builders/216/builds/31174
1 parent fcf5154 commit c12de14

11 files changed

+579
-136
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42930,12 +42930,6 @@ static SDValue combineBitcast(SDNode *N, SelectionDAG &DAG,
4293042930
}
4293142931
}
4293242932

42933-
// Canonicalize fp zero vectors - these sometimes don't fold due to one use
42934-
// limits.
42935-
if (VT.isVector() && TLI.isTypeLegal(VT) && ISD::isBuildVectorAllZeros(N) &&
42936-
(VT.getScalarType() == MVT::f32 || VT.getScalarType() == MVT::f64))
42937-
return getZeroVector(VT.getSimpleVT(), Subtarget, DAG, SDLoc(N0));
42938-
4293942933
// Try to remove a bitcast of constant vXi1 vector. We have to legalize
4294042934
// most of these to scalar anyway.
4294142935
if (Subtarget.hasAVX512() && VT.isScalarInteger() &&

llvm/test/CodeGen/X86/2011-10-19-widen_vselect.ll

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,14 @@ entry:
4949
define void @zero_test() {
5050
; X86-LABEL: zero_test:
5151
; X86: # %bb.0: # %entry
52-
; X86-NEXT: movl $0, (%eax)
52+
; X86-NEXT: xorps %xmm0, %xmm0
53+
; X86-NEXT: movlps %xmm0, (%eax)
5354
; X86-NEXT: retl
5455
;
5556
; X64-LABEL: zero_test:
5657
; X64: # %bb.0: # %entry
57-
; X64-NEXT: movq $0, (%rax)
58+
; X64-NEXT: xorps %xmm0, %xmm0
59+
; X64-NEXT: movlps %xmm0, (%rax)
5860
; X64-NEXT: retq
5961
entry:
6062
%0 = select <2 x i1> undef, <2 x float> undef, <2 x float> zeroinitializer

llvm/test/CodeGen/X86/2012-07-10-extload64.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ define void @store_64(ptr %ptr) {
2929
; X86-LABEL: store_64:
3030
; X86: # %bb.0: # %BB
3131
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
32-
; X86-NEXT: movl $0, 4(%eax)
33-
; X86-NEXT: movl $0, (%eax)
32+
; X86-NEXT: xorps %xmm0, %xmm0
33+
; X86-NEXT: movlps %xmm0, (%eax)
3434
; X86-NEXT: retl
3535
;
3636
; X64-LABEL: store_64:

llvm/test/CodeGen/X86/fold-load-vec.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ define void @sample_test(ptr %source, ptr %dest) nounwind {
1010
; CHECK-NEXT: subq $24, %rsp
1111
; CHECK-NEXT: movq %rdi, {{[0-9]+}}(%rsp)
1212
; CHECK-NEXT: movq %rsi, {{[0-9]+}}(%rsp)
13-
; CHECK-NEXT: movq $0, (%rsp)
1413
; CHECK-NEXT: xorps %xmm0, %xmm0
14+
; CHECK-NEXT: movlps %xmm0, (%rsp)
1515
; CHECK-NEXT: unpcklps {{.*#+}} xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
1616
; CHECK-NEXT: movlps %xmm0, (%rsp)
1717
; CHECK-NEXT: movlps %xmm0, (%rsi)

llvm/test/CodeGen/X86/fold-pcmpeqd-2.ll

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ define void @program_1(ptr %dest, ptr %t0, <4 x float> %p0, <4 x float> %p1, <4
5151
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
5252
; X32-NEXT: mulps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
5353
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
54+
; X32-NEXT: xorps %xmm0, %xmm0
55+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
56+
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
57+
; X32-NEXT: mulps %xmm0, %xmm0
58+
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
5459
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
5560
; X32-NEXT: mulps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
5661
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
@@ -59,10 +64,8 @@ define void @program_1(ptr %dest, ptr %t0, <4 x float> %p0, <4 x float> %p1, <4
5964
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
6065
; X32-NEXT: cmpunordps %xmm0, %xmm0
6166
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
62-
; X32-NEXT: xorps %xmm0, %xmm0
63-
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
6467
; X32-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm0 ## 16-byte Reload
65-
; X32-NEXT: minps %xmm0, %xmm0
68+
; X32-NEXT: minps {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
6669
; X32-NEXT: movaps %xmm0, {{[-0-9]+}}(%e{{[sb]}}p) ## 16-byte Spill
6770
; X32-NEXT: xorps %xmm0, %xmm0
6871
; X32-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
@@ -132,6 +135,11 @@ define void @program_1(ptr %dest, ptr %t0, <4 x float> %p0, <4 x float> %p1, <4
132135
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
133136
; X64-NEXT: mulps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
134137
; X64-NEXT: movaps %xmm0, (%rsp) ## 16-byte Spill
138+
; X64-NEXT: xorps %xmm0, %xmm0
139+
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
140+
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
141+
; X64-NEXT: mulps %xmm0, %xmm0
142+
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
135143
; X64-NEXT: movaps (%rsp), %xmm0 ## 16-byte Reload
136144
; X64-NEXT: mulps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
137145
; X64-NEXT: movaps %xmm0, (%rsp) ## 16-byte Spill
@@ -140,10 +148,8 @@ define void @program_1(ptr %dest, ptr %t0, <4 x float> %p0, <4 x float> %p1, <4
140148
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
141149
; X64-NEXT: cmpunordps %xmm0, %xmm0
142150
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
143-
; X64-NEXT: xorps %xmm0, %xmm0
144-
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
145151
; X64-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 ## 16-byte Reload
146-
; X64-NEXT: minps %xmm0, %xmm0
152+
; X64-NEXT: minps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
147153
; X64-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) ## 16-byte Spill
148154
; X64-NEXT: xorl %ebx, %ebx
149155
; X64-NEXT: xorps %xmm3, %xmm3

llvm/test/CodeGen/X86/half.ll

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,11 +1082,12 @@ define void @main.158() #0 {
10821082
; BWON-F16C-LABEL: main.158:
10831083
; BWON-F16C: # %bb.0: # %entry
10841084
; BWON-F16C-NEXT: vxorps %xmm0, %xmm0, %xmm0
1085-
; BWON-F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm1
1086-
; BWON-F16C-NEXT: vpmovzxwq {{.*#+}} xmm1 = xmm1[0],zero,zero,zero,xmm1[1],zero,zero,zero
1087-
; BWON-F16C-NEXT: vcvtph2ps %xmm1, %xmm1
1088-
; BWON-F16C-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
1089-
; BWON-F16C-NEXT: vucomiss %xmm1, %xmm2
1085+
; BWON-F16C-NEXT: vcvtps2ph $4, %xmm0, %xmm0
1086+
; BWON-F16C-NEXT: vpmovzxwq {{.*#+}} xmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero
1087+
; BWON-F16C-NEXT: vcvtph2ps %xmm0, %xmm0
1088+
; BWON-F16C-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
1089+
; BWON-F16C-NEXT: vucomiss %xmm0, %xmm1
1090+
; BWON-F16C-NEXT: vxorps %xmm0, %xmm0, %xmm0
10901091
; BWON-F16C-NEXT: jae .LBB20_2
10911092
; BWON-F16C-NEXT: # %bb.1: # %entry
10921093
; BWON-F16C-NEXT: vmovss {{.*#+}} xmm0 = mem[0],zero,zero,zero
@@ -1099,7 +1100,8 @@ define void @main.158() #0 {
10991100
; CHECK-I686-LABEL: main.158:
11001101
; CHECK-I686: # %bb.0: # %entry
11011102
; CHECK-I686-NEXT: subl $12, %esp
1102-
; CHECK-I686-NEXT: movl $0, (%esp)
1103+
; CHECK-I686-NEXT: pxor %xmm0, %xmm0
1104+
; CHECK-I686-NEXT: movd %xmm0, (%esp)
11031105
; CHECK-I686-NEXT: calll __truncsfhf2
11041106
; CHECK-I686-NEXT: pextrw $0, %xmm0, %eax
11051107
; CHECK-I686-NEXT: movw %ax, (%esp)

0 commit comments

Comments
 (0)