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.