[llvm] 39dc75f - Revert "[EarlyCSE] Equivalent SELECTs should hash equally"
Michael Liao via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 10 19:38:13 PDT 2020
Author: Michael Liao
Date: 2020-09-10T22:37:35-04:00
New Revision: 39dc75f66c60025539940ff47b105418645c025f
URL: https://github.com/llvm/llvm-project/commit/39dc75f66c60025539940ff47b105418645c025f
DIFF: https://github.com/llvm/llvm-project/commit/39dc75f66c60025539940ff47b105418645c025f.diff
LOG: Revert "[EarlyCSE] Equivalent SELECTs should hash equally"
This reverts commit c9826829d74e637163fdb0351870b8204e62d6e6 as it
breaks regression tests.
Added:
Modified:
llvm/lib/Transforms/Scalar/EarlyCSE.cpp
llvm/test/Transforms/EarlyCSE/commute.ll
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/EarlyCSE.cpp b/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
index f0d3f90995d7..b655204d26dd 100644
--- a/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
+++ b/llvm/lib/Transforms/Scalar/EarlyCSE.cpp
@@ -191,19 +191,6 @@ static bool matchSelectWithOptionalNotCond(Value *V, Value *&Cond, Value *&A,
Pred = ICmpInst::getSwappedPredicate(Pred);
}
- // Check for inverted variants of min/max by swapping operands.
- switch (Pred) {
- case CmpInst::ICMP_ULE:
- case CmpInst::ICMP_UGE:
- case CmpInst::ICMP_SLE:
- case CmpInst::ICMP_SGE:
- Pred = CmpInst::getInversePredicate(Pred);
- std::swap(A, B);
- break;
- default:
- break;
- }
-
switch (Pred) {
case CmpInst::ICMP_UGT: Flavor = SPF_UMAX; break;
case CmpInst::ICMP_ULT: Flavor = SPF_UMIN; break;
diff --git a/llvm/test/Transforms/EarlyCSE/commute.ll b/llvm/test/Transforms/EarlyCSE/commute.ll
index f5868a5fdfb2..57c5a853a12f 100644
--- a/llvm/test/Transforms/EarlyCSE/commute.ll
+++ b/llvm/test/Transforms/EarlyCSE/commute.ll
@@ -684,25 +684,6 @@ define i32 @select_not_invert_pred_cond_wrong_select_op(i8 %x, i8 %y, i32 %t, i3
ret i32 %r
}
-; This test is a reproducer for a bug involving inverted min/max selects
-; hashing
diff erently but comparing as equal. It exhibits such a pair of
-; values, and we run this test with -earlycse-debug-hash which would catch
-; the disagreement and fail if it regressed.
-define i32 @inverted_max(i32 %i) {
-; CHECK-LABEL: @inverted_max(
-; CHECK-NEXT: [[CMP:%.*]] = icmp sle i32 0, [[I:%.*]]
-; CHECK-NEXT: [[M1:%.*]] = select i1 [[CMP]], i32 [[I]], i32 0
-; CHECK-NEXT: [[CMPINV:%.*]] = icmp sgt i32 0, [[I:%.*]]
-; CHECK-NEXT: [[M2:%.*]] = select i1 [[CMPINV]], i32 0, i32 [[I]]
-; CHECK-NEXT: [[R:%.*]] = add i32 [[M1]], [[M2]]
-; CHECK-NEXT: ret i32 [[R]]
- %cmp = icmp sle i32 0, %i
- %m1 = select i1 %cmp, i32 %i, i32 0
- %cmpinv = icmp sgt i32 0, %i
- %m2 = select i1 %cmpinv, i32 0, i32 %i
- %r = add i32 %m1, %m2
- ret i32 %r
-}
; This test is a reproducer for a bug involving inverted min/max selects
; hashing
diff erently but comparing as equal. It exhibits such a pair of
More information about the llvm-commits
mailing list