[llvm] [SCEV] Prove max(X0..Xn) Pred RHS via per-operand decomposition. (PR #208546)

Ramkumar Ramachandra via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 15 02:13:16 PDT 2026


================
@@ -11494,8 +11494,40 @@ bool ScalarEvolution::isKnownViaInduction(CmpPredicate Pred, SCEVUse LHS,
          isLoopEntryGuardedByCond(MDL, Pred, SplitLHS.first, SplitRHS.first);
 }
 
+/// Try to prove \p LHS \p Pred \p RHS by decomposing a max expression on the
+/// LHS into its operands:
+///
+///   max(X0, ..., Xn) Pred RHS  if  Xi Pred RHS for all i.
+static bool isKnownViaMinMaxDecomposition(ScalarEvolution &SE,
+                                          CmpPredicate Pred, const SCEV *LHS,
+                                          const SCEV *RHS) {
+  if (!isa<SCEVMinMaxExpr>(LHS) && !isa<SCEVMinMaxExpr>(RHS))
----------------
artagnon wrote:

Why does RHS need to be a MinMaxExpr? Can check just LHS after the swap?

https://github.com/llvm/llvm-project/pull/208546


More information about the llvm-commits mailing list