[llvm] eb5199e - [InstCombine] Avoid some uses of ConstantExpr::getLShr() (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 10 06:46:22 PST 2023
Author: Nikita Popov
Date: 2023-11-10T15:46:14+01:00
New Revision: eb5199e8d404ab7fd0ff9be07ea460faa95c70a5
URL: https://github.com/llvm/llvm-project/commit/eb5199e8d404ab7fd0ff9be07ea460faa95c70a5
DIFF: https://github.com/llvm/llvm-project/commit/eb5199e8d404ab7fd0ff9be07ea460faa95c70a5.diff
LOG: [InstCombine] Avoid some uses of ConstantExpr::getLShr() (NFC)
Use the constant folding API instead. As we're working on
ImmConstant, it is guaranteed to succeed.
Added:
Modified:
llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
index 15d9886216b292a..69b95c0b35c68e1 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
@@ -620,8 +620,10 @@ Value *InstCombinerImpl::SimplifyDemandedUseBits(Value *V, APInt DemandedMask,
if (DemandedMask.countr_zero() >= ShiftAmt &&
match(I->getOperand(0), m_LShr(m_ImmConstant(C), m_Value(X)))) {
Constant *LeftShiftAmtC = ConstantInt::get(VTy, ShiftAmt);
- Constant *NewC = ConstantExpr::getShl(C, LeftShiftAmtC);
- if (ConstantExpr::getLShr(NewC, LeftShiftAmtC) == C) {
+ Constant *NewC = ConstantFoldBinaryOpOperands(Instruction::Shl, C,
+ LeftShiftAmtC, DL);
+ if (ConstantFoldBinaryOpOperands(Instruction::LShr, NewC, LeftShiftAmtC,
+ DL) == C) {
Instruction *Lshr = BinaryOperator::CreateLShr(NewC, X);
return InsertNewInstWith(Lshr, I->getIterator());
}
@@ -684,8 +686,10 @@ Value *InstCombinerImpl::SimplifyDemandedUseBits(Value *V, APInt DemandedMask,
Constant *C;
if (match(I->getOperand(0), m_Shl(m_ImmConstant(C), m_Value(X)))) {
Constant *RightShiftAmtC = ConstantInt::get(VTy, ShiftAmt);
- Constant *NewC = ConstantExpr::getLShr(C, RightShiftAmtC);
- if (ConstantExpr::getShl(NewC, RightShiftAmtC) == C) {
+ Constant *NewC = ConstantFoldBinaryOpOperands(Instruction::LShr, C,
+ RightShiftAmtC, DL);
+ if (ConstantFoldBinaryOpOperands(Instruction::Shl, NewC,
+ RightShiftAmtC, DL) == C) {
Instruction *Shl = BinaryOperator::CreateShl(NewC, X);
return InsertNewInstWith(Shl, I->getIterator());
}
More information about the llvm-commits
mailing list