aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/LoopUnroll.cpp
diff options
context:
space:
mode:
authorFlorian Hahn <flo@fhahn.com>2025-01-27 21:20:04 +0000
committerGitHub <noreply@github.com>2025-01-27 21:20:04 +0000
commitad9da92cf6f735747ef04fd56937e1d76819e503 (patch)
treea4a125b517dbf7c835609b59f84107146ca6fee4 /llvm/lib/Transforms/Utils/LoopUnroll.cpp
parent804b81d39f2d50743fd2090aed72dad29f5fb388 (diff)
downloadllvm-ad9da92cf6f735747ef04fd56937e1d76819e503.zip
llvm-ad9da92cf6f735747ef04fd56937e1d76819e503.tar.gz
llvm-ad9da92cf6f735747ef04fd56937e1d76819e503.tar.bz2
[LoopUnroll] Add RuntimeUnrollMultiExit to loop unroll options (NFC) (#124462)
Add an extra knob to RuntimeUnrollMultiExit to let backends control whether to allow multi-exit unrolling on a per-loop basis. This gives backends more fine-grained control on deciding if multi-exit unrolling is profitable for a given loop and uarch. Similar to 4226e0a0c75. PR: https://github.com/llvm/llvm-project/pull/124462
Diffstat (limited to 'llvm/lib/Transforms/Utils/LoopUnroll.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/LoopUnroll.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUnroll.cpp b/llvm/lib/Transforms/Utils/LoopUnroll.cpp
index b11d928..af6f9c2 100644
--- a/llvm/lib/Transforms/Utils/LoopUnroll.cpp
+++ b/llvm/lib/Transforms/Utils/LoopUnroll.cpp
@@ -590,10 +590,11 @@ llvm::UnrollLoop(Loop *L, UnrollLoopOptions ULO, LoopInfo *LI,
: isEpilogProfitable(L);
if (ULO.Runtime &&
- !UnrollRuntimeLoopRemainder(
- L, ULO.Count, ULO.AllowExpensiveTripCount, EpilogProfitability,
- ULO.UnrollRemainder, ULO.ForgetAllSCEV, LI, SE, DT, AC, TTI,
- PreserveLCSSA, ULO.SCEVExpansionBudget, RemainderLoop)) {
+ !UnrollRuntimeLoopRemainder(L, ULO.Count, ULO.AllowExpensiveTripCount,
+ EpilogProfitability, ULO.UnrollRemainder,
+ ULO.ForgetAllSCEV, LI, SE, DT, AC, TTI,
+ PreserveLCSSA, ULO.SCEVExpansionBudget,
+ ULO.RuntimeUnrollMultiExit, RemainderLoop)) {
if (ULO.Force)
ULO.Runtime = false;
else {