[llvm] [InstCombine] Fold (X + C) + (Y & ~C) to X + (Y | C) (PR #191334)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Apr 12 07:12:21 PDT 2026
================
@@ -1523,6 +1523,35 @@ static Instruction *foldBoxMultiply(BinaryOperator &I) {
return nullptr;
}
+static Instruction *
+foldAddWithMaskedOverwrite(BinaryOperator &Add,
+ InstCombiner::BuilderTy &Builder) {
+ Value *LHS = Add.getOperand(0), *RHS = Add.getOperand(1);
+ Value *X, *Y;
+ const APInt *C, *Mask;
+
+ auto Match = [&](Value *AddOp, Value *AndOp) -> Instruction * {
+ if (!match(AddOp, m_c_Add(m_Value(X), m_APInt(C))) ||
+ !match(AndOp, m_c_And(m_Value(Y), m_APInt(Mask))) || *Mask != ~(*C))
----------------
ParkHanbum wrote:
got it!
https://github.com/llvm/llvm-project/pull/191334
More information about the llvm-commits
mailing list