[llvm] [LSR] Clean up code using SCEVPatternMatch (NFC) (PR #145556)

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 27 06:30:40 PDT 2025


================
@@ -942,14 +944,11 @@ static Immediate ExtractImmediate(const SCEV *&S, ScalarEvolution &SE) {
                            // FIXME: AR->getNoWrapFlags(SCEV::FlagNW)
                            SCEV::FlagAnyWrap);
     return Result;
-  } else if (const SCEVMulExpr *M = dyn_cast<SCEVMulExpr>(S)) {
-    if (EnableVScaleImmediates && M->getNumOperands() == 2) {
-      if (const SCEVConstant *C = dyn_cast<SCEVConstant>(M->getOperand(0)))
-        if (isa<SCEVVScale>(M->getOperand(1))) {
-          S = SE.getConstant(M->getType(), 0);
-          return Immediate::getScalable(C->getValue()->getSExtValue());
-        }
-    }
+  } else if (EnableVScaleImmediates &&
+             match(S, m_scev_Mul(m_scev_APInt(C), m_SCEV(Op1))) &&
+             isa<SCEVVScale>(Op1)) {
----------------
fhahn wrote:

would be nice to also have a `m_SCEVVScale()` matcher?

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


More information about the llvm-commits mailing list