LLVM: include/llvm/Transforms/Scalar/LoopUnrollPass.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9#ifndef LLVM_TRANSFORMS_SCALAR_LOOPUNROLLPASS_H
10#define LLVM_TRANSFORMS_SCALAR_LOOPUNROLLPASS_H
11
15#include
16
17namespace llvm {
18
20
24
25
27 const int OptLevel;
28
29
30
31
32 const bool OnlyWhenForced;
33
34
35
36
37 const bool ForgetSCEV;
38
39public:
41 bool ForgetSCEV = false)
42 : OptLevel(OptLevel), OnlyWhenForced(OnlyWhenForced),
43 ForgetSCEV(ForgetSCEV) {}
44
47};
48
49
50
51
52
53
54
55
56
57
58
59
60
69
70
71
72
74
75
76
77
79
84
85
86
91
92
97
98
103
104
105
110
111
116
117
122
123
128};
129
130
131
132
135
136public:
137
138
140 : UnrollOpts(UnrollOpts) {}
141
144 function_ref<StringRef(StringRef)> MapClassName2PassName);
145};
146
147}
148
149#endif
This header defines various interfaces for pass management in LLVM.
This header provides classes for managing per-loop analyses.
This class provides an interface for updating the loop pass manager based on mutations to the loop ne...
LoopFullUnrollPass(int OptLevel=2, bool OnlyWhenForced=false, bool ForgetSCEV=false)
Definition LoopUnrollPass.h:40
PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR, LPMUpdater &U)
LoopUnrollPass(LoopUnrollOptions UnrollOpts={})
This uses the target information (or flags) to control the thresholds for different unrolling stategi...
Definition LoopUnrollPass.h:139
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
void printPipeline(raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
Represents a single loop in the control flow graph.
A set of analyses that are preserved following a run of a transformation pass.
This is an optimization pass for GlobalISel generic memory operations.
@ Runtime
Detect stack use after return if not disabled runtime with (ASAN_OPTIONS=detect_stack_use_after_retur...
AnalysisManager< Loop, LoopStandardAnalysisResults & > LoopAnalysisManager
The loop analysis manager.
cl::opt< bool > ForgetSCEVInLoopUnroll
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
The adaptor from a function pass to a loop pass computes these analyses and makes them available to t...
A set of parameters used to control various transforms performed by the LoopUnroll pass.
Definition LoopUnrollPass.h:61
int OptLevel
Definition LoopUnrollPass.h:68
LoopUnrollOptions & setPeeling(bool Peeling)
Enables or disables loop peeling.
Definition LoopUnrollPass.h:99
bool OnlyWhenForced
If false, use a cost model to determine whether unrolling of a loop is profitable.
Definition LoopUnrollPass.h:73
LoopUnrollOptions & setOptLevel(int O)
Definition LoopUnrollPass.h:112
const bool ForgetSCEV
If true, forget all loops when unrolling.
Definition LoopUnrollPass.h:78
std::optional< unsigned > FullUnrollMaxCount
Definition LoopUnrollPass.h:67
std::optional< bool > AllowPartial
Definition LoopUnrollPass.h:62
std::optional< bool > AllowRuntime
Definition LoopUnrollPass.h:64
LoopUnrollOptions(int OptLevel=2, bool OnlyWhenForced=false, bool ForgetSCEV=false)
Definition LoopUnrollPass.h:80
LoopUnrollOptions & setPartial(bool Partial)
Enables or disables partial unrolling.
Definition LoopUnrollPass.h:87
std::optional< bool > AllowProfileBasedPeeling
Definition LoopUnrollPass.h:66
std::optional< bool > AllowPeeling
Definition LoopUnrollPass.h:63
LoopUnrollOptions & setFullUnrollMaxCount(unsigned O)
Definition LoopUnrollPass.h:124
LoopUnrollOptions & setUpperBound(bool UpperBound)
Enables or disables the use of trip count upper bound in loop unrolling.
Definition LoopUnrollPass.h:106
std::optional< bool > AllowUpperBound
Definition LoopUnrollPass.h:65
LoopUnrollOptions & setRuntime(bool Runtime)
Enables or disables unrolling of loops with runtime trip count.
Definition LoopUnrollPass.h:93
LoopUnrollOptions & setProfileBasedPeeling(int O)
Definition LoopUnrollPass.h:118
A CRTP mix-in to automatically provide informational APIs needed for passes.