diff options
author | Paul Walker <paul.walker@arm.com> | 2025-10-01 15:46:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-10-01 15:46:12 +0100 |
commit | 9e0c0a09392ff7d3b196b17c77595e921e35d765 (patch) | |
tree | 990fe4319bf678ad9778183002423281508f356c /llvm/lib/Analysis/ScalarEvolution.cpp | |
parent | 13ce5f249ed911971fe899e318d08765399d8ce1 (diff) | |
download | llvm-9e0c0a09392ff7d3b196b17c77595e921e35d765.zip llvm-9e0c0a09392ff7d3b196b17c77595e921e35d765.tar.gz llvm-9e0c0a09392ff7d3b196b17c77595e921e35d765.tar.bz2 |
[LLVM][SCEV] udiv (mul nuw a, vscale), (mul nuw b, vscale) -> udiv a, b (#157836)
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolution.cpp')
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolution.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp index b08399b..63e1b14 100644 --- a/llvm/lib/Analysis/ScalarEvolution.cpp +++ b/llvm/lib/Analysis/ScalarEvolution.cpp @@ -3598,6 +3598,13 @@ const SCEV *ScalarEvolution::getUDivExpr(const SCEV *LHS, } } + // TODO: Generalize to handle any common factors. + // udiv (mul nuw a, vscale), (mul nuw b, vscale) --> udiv a, b + const SCEV *NewLHS, *NewRHS; + if (match(LHS, m_scev_c_NUWMul(m_SCEV(NewLHS), m_SCEVVScale())) && + match(RHS, m_scev_c_NUWMul(m_SCEV(NewRHS), m_SCEVVScale()))) + return getUDivExpr(NewLHS, NewRHS); + // The Insertion Point (IP) might be invalid by now (due to UniqueSCEVs // changes). Make sure we get a new one. IP = nullptr; |