[llvm] r276502 - [InstCombine] move udiv+cmp fold over with other BinOp+cmp folds; NFCI
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 22 17:28:39 PDT 2016
Author: spatel
Date: Fri Jul 22 19:28:39 2016
New Revision: 276502
URL: http://llvm.org/viewvc/llvm-project?rev=276502&view=rev
Log:
[InstCombine] move udiv+cmp fold over with other BinOp+cmp folds; NFCI
Modified:
llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp?rev=276502&r1=276501&r2=276502&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp (original)
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp Fri Jul 22 19:28:39 2016
@@ -2341,6 +2341,14 @@ Instruction *InstCombiner::foldICmpEqual
}
}
break;
+ case Instruction::UDiv:
+ if (RHSV == 0) {
+ // (icmp eq/ne (udiv A, B), 0) -> (icmp ugt/ule i32 B, A)
+ ICmpInst::Predicate Pred =
+ isICMP_NE ? ICmpInst::ICMP_ULE : ICmpInst::ICMP_UGT;
+ return new ICmpInst(Pred, BO->getOperand(1), BO->getOperand(0));
+ }
+ break;
default:
break;
}
@@ -3634,7 +3642,6 @@ Instruction *InstCombiner::visitICmpInst
// See if we are doing a comparison between a constant and an instruction that
// can be folded into the comparison.
if (ConstantInt *CI = dyn_cast<ConstantInt>(Op1)) {
- Value *A = nullptr, *B = nullptr;
// Since the RHS is a ConstantInt (CI), if the left hand side is an
// instruction, see if that instruction also has constants so that the
// instruction can be folded into the icmp
@@ -3646,14 +3653,6 @@ Instruction *InstCombiner::visitICmpInst
if (Instruction *Res = foldICmpIntrinsicWithConstant(I, LHSI, CI))
return Res;
}
- // (icmp eq/ne (udiv A, B), 0) -> (icmp ugt/ule i32 B, A)
- if (I.isEquality() && CI->isZero() &&
- match(Op0, m_UDiv(m_Value(A), m_Value(B)))) {
- ICmpInst::Predicate Pred = I.getPredicate() == ICmpInst::ICMP_EQ
- ? ICmpInst::ICMP_UGT
- : ICmpInst::ICMP_ULE;
- return new ICmpInst(Pred, B, A);
- }
}
// Handle icmp with constant (but not simple integer constant) RHS
More information about the llvm-commits
mailing list