diff options
author | Florian Hahn <flo@fhahn.com> | 2024-12-02 21:35:00 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-02 21:35:00 +0000 |
commit | 4226e0a0c75e5cfd784eff429f93101c03a1995c (patch) | |
tree | 8e58e252f00c787575b225aaed06f36d021ef11c /llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp | |
parent | 2c88ac9da9f842875592b232ba957da341e62ea5 (diff) | |
download | llvm-4226e0a0c75e5cfd784eff429f93101c03a1995c.zip llvm-4226e0a0c75e5cfd784eff429f93101c03a1995c.tar.gz llvm-4226e0a0c75e5cfd784eff429f93101c03a1995c.tar.bz2 |
[TTI] Add SCEVExpansionBudget to loop unrolling options. (#118316)
Add an extra know to UnrollingPreferences to let backends control the
maximum budget for SCEV expansions.
This gives backends more fine-grained control on the cost of the runtime
checks for runtime unrolling.
PR: https://github.com/llvm/llvm-project/pull/118316
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp b/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp index 2c2400d..49209e3 100644 --- a/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp +++ b/llvm/lib/Transforms/Utils/LoopUnrollAndJam.cpp @@ -48,6 +48,7 @@ #include "llvm/Transforms/Utils/BasicBlockUtils.h" #include "llvm/Transforms/Utils/Cloning.h" #include "llvm/Transforms/Utils/LoopUtils.h" +#include "llvm/Transforms/Utils/ScalarEvolutionExpander.h" #include "llvm/Transforms/Utils/UnrollLoop.h" #include "llvm/Transforms/Utils/ValueMapper.h" #include <assert.h> @@ -241,7 +242,8 @@ llvm::UnrollAndJamLoop(Loop *L, unsigned Count, unsigned TripCount, if (!UnrollRuntimeLoopRemainder(L, Count, /*AllowExpensiveTripCount*/ false, /*UseEpilogRemainder*/ true, UnrollRemainder, /*ForgetAllSCEV*/ false, - LI, SE, DT, AC, TTI, true, EpilogueLoop)) { + LI, SE, DT, AC, TTI, true, + SCEVCheapExpansionBudget, EpilogueLoop)) { LLVM_DEBUG(dbgs() << "Won't unroll-and-jam; remainder loop could not be " "generated when assuming runtime trip count\n"); return LoopUnrollResult::Unmodified; |