diff options
author | Sanjay Patel <spatel@rotateright.com> | 2017-04-20 21:33:02 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2017-04-20 21:33:02 +0000 |
commit | 3e1ae72fcf0c1480e741f56987934aee8bc80b53 (patch) | |
tree | cbaaecbfab377fc68ecbc3d4fa69dd7a01bb2df5 /llvm/lib | |
parent | dcaf4e2139f1c07fc5b39e66ac55e49bd0c1a2d5 (diff) | |
download | bcm5719-llvm-3e1ae72fcf0c1480e741f56987934aee8bc80b53.tar.gz bcm5719-llvm-3e1ae72fcf0c1480e741f56987934aee8bc80b53.zip |
[InstCombine] allow shl demanded bits folds with splat constants
More fixes are needed to enable the helper SimplifyShrShlDemandedBits().
llvm-svn: 300898
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp index 230a1ff33d0..3d14e59ea0d 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp @@ -469,8 +469,9 @@ Value *InstCombiner::SimplifyDemandedUseBits(Value *V, APInt DemandedMask, computeKnownBits(V, KnownZero, KnownOne, Depth, CxtI); break; } - case Instruction::Shl: - if (ConstantInt *SA = dyn_cast<ConstantInt>(I->getOperand(1))) { + case Instruction::Shl: { + const APInt *SA; + if (match(I->getOperand(1), m_APInt(SA))) { { Value *VarX; ConstantInt *C1; if (match(I->getOperand(0), m_Shr(m_Value(VarX), m_ConstantInt(C1)))) { @@ -503,6 +504,7 @@ Value *InstCombiner::SimplifyDemandedUseBits(Value *V, APInt DemandedMask, KnownZero.setLowBits(ShiftAmt); } break; + } case Instruction::LShr: { const APInt *SA; if (match(I->getOperand(1), m_APInt(SA))) { |