[llvm] r279568 - [InstCombine] remove icmp shr folds that are already handled by InstSimplify
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 23 14:01:36 PDT 2016
Author: spatel
Date: Tue Aug 23 16:01:35 2016
New Revision: 279568
URL: http://llvm.org/viewvc/llvm-project?rev=279568&view=rev
Log:
[InstCombine] remove icmp shr folds that are already handled by InstSimplify
AFAICT, these already worked in all cases for scalar types, and I enhanced
the code to work for vector types in:
https://reviews.llvm.org/rL279543
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=279568&r1=279567&r2=279568&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp (original)
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCompares.cpp Tue Aug 23 16:01:35 2016
@@ -1391,24 +1391,10 @@ Instruction *InstCombiner::foldICmpShrCo
return Res;
}
- // If we are comparing against bits always shifted out, the
- // comparison cannot succeed.
- APInt Comp = CmpRHSV << ShAmtVal;
- ConstantInt *ShiftedCmpRHS = Builder->getInt(Comp);
- if (Shr->getOpcode() == Instruction::LShr)
- Comp = Comp.lshr(ShAmtVal);
- else
- Comp = Comp.ashr(ShAmtVal);
-
- if (Comp != CmpRHSV) { // Comparing against a bit that we know is zero.
- bool IsICMP_NE = ICI.getPredicate() == ICmpInst::ICMP_NE;
- Constant *Cst = Builder->getInt1(IsICMP_NE);
- return replaceInstUsesWith(ICI, Cst);
- }
-
- // Otherwise, check to see if the bits shifted out are known to be zero.
- // If so, we can compare against the unshifted value:
+ // Check if the bits shifted out are known to be zero. If so, we can compare
+ // against the unshifted value:
// (X & 4) >> 1 == 2 --> (X & 4) == 4.
+ ConstantInt *ShiftedCmpRHS = Builder->getInt(CmpRHSV << ShAmtVal);
if (Shr->hasOneUse() && Shr->isExact())
return new ICmpInst(ICI.getPredicate(), Shr->getOperand(0), ShiftedCmpRHS);
More information about the llvm-commits
mailing list