[llvm] [InstCombine] Fold negation of unsigned div of non-negatives (PR #84951)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 12 10:38:41 PDT 2024
================
@@ -2062,6 +2062,26 @@ static Instruction *foldSubOfMinMax(BinaryOperator &I,
return nullptr;
}
+/// Fold `sub 0, (udiv nneg X, nneg C)` into `sdiv nneg X, -C`
+static Instruction *foldNegationOfUDivOfNonNegatives(BinaryOperator &I,
+ InstCombinerImpl &IC) {
+ Value *RHS = I.getOperand(1);
+ Value *X, *C;
+
+ if (match(RHS, m_OneUse(m_UDiv(m_Value(X), m_Value(C))))) {
+ KnownBits KnownX = IC.computeKnownBits(X, 0, &I);
+ KnownBits KnownC = IC.computeKnownBits(C, 0, &I);
+ if (KnownX.isNonNegative() && KnownC.isNonNegative()) {
----------------
goldsteinn wrote:
`isKnownNonNegative(X, ...)`
https://github.com/llvm/llvm-project/pull/84951
More information about the llvm-commits
mailing list