LLVM  14.0.0git
Public Member Functions | Public Attributes | List of all members
llvm::LoopUnrollOptions Struct Reference

A set of parameters used to control various transforms performed by the LoopUnroll pass. More...

#include "llvm/Transforms/Scalar/LoopUnrollPass.h"

Collaboration diagram for llvm::LoopUnrollOptions:
Collaboration graph
[legend]

Public Member Functions

 LoopUnrollOptions (int OptLevel=2, bool OnlyWhenForced=false, bool ForgetSCEV=false)
 
LoopUnrollOptionssetPartial (bool Partial)
 Enables or disables partial unrolling. More...
 
LoopUnrollOptionssetRuntime (bool Runtime)
 Enables or disables unrolling of loops with runtime trip count. More...
 
LoopUnrollOptionssetPeeling (bool Peeling)
 Enables or disables loop peeling. More...
 
LoopUnrollOptionssetUpperBound (bool UpperBound)
 Enables or disables the use of trip count upper bound in loop unrolling. More...
 
LoopUnrollOptionssetOptLevel (int O)
 
LoopUnrollOptionssetProfileBasedPeeling (int O)
 
LoopUnrollOptionssetFullUnrollMaxCount (unsigned O)
 

Public Attributes

Optional< bool > AllowPartial
 
Optional< bool > AllowPeeling
 
Optional< bool > AllowRuntime
 
Optional< bool > AllowUpperBound
 
Optional< bool > AllowProfileBasedPeeling
 
Optional< unsigned > FullUnrollMaxCount
 
int OptLevel
 
bool OnlyWhenForced
 If false, use a cost model to determine whether unrolling of a loop is profitable. More...
 
const bool ForgetSCEV
 If true, forget all loops when unrolling. More...
 

Detailed Description

A set of parameters used to control various transforms performed by the LoopUnroll pass.

Each of the boolean parameters can be set to: true - enabling the transformation. false - disabling the transformation. None - relying on a global default.

There is also OptLevel parameter, which is used for additional loop unroll tuning.

Intended use is to create a default object, modify parameters with additional setters and then pass it to LoopUnrollPass.

Definition at line 61 of file LoopUnrollPass.h.

Constructor & Destructor Documentation

◆ LoopUnrollOptions()

llvm::LoopUnrollOptions::LoopUnrollOptions ( int  OptLevel = 2,
bool  OnlyWhenForced = false,
bool  ForgetSCEV = false 
)
inline

Definition at line 80 of file LoopUnrollPass.h.

Member Function Documentation

◆ setFullUnrollMaxCount()

LoopUnrollOptions& llvm::LoopUnrollOptions::setFullUnrollMaxCount ( unsigned  O)
inline

Definition at line 124 of file LoopUnrollPass.h.

References FullUnrollMaxCount, and llvm::RISCVFenceField::O.

◆ setOptLevel()

LoopUnrollOptions& llvm::LoopUnrollOptions::setOptLevel ( int  O)
inline

Definition at line 112 of file LoopUnrollPass.h.

References llvm::RISCVFenceField::O, and OptLevel.

◆ setPartial()

LoopUnrollOptions& llvm::LoopUnrollOptions::setPartial ( bool  Partial)
inline

Enables or disables partial unrolling.

When disabled only full unrolling is allowed.

Definition at line 87 of file LoopUnrollPass.h.

References AllowPartial.

◆ setPeeling()

LoopUnrollOptions& llvm::LoopUnrollOptions::setPeeling ( bool  Peeling)
inline

Enables or disables loop peeling.

Definition at line 99 of file LoopUnrollPass.h.

References AllowPeeling.

◆ setProfileBasedPeeling()

LoopUnrollOptions& llvm::LoopUnrollOptions::setProfileBasedPeeling ( int  O)
inline

Definition at line 118 of file LoopUnrollPass.h.

References AllowProfileBasedPeeling, and llvm::RISCVFenceField::O.

◆ setRuntime()

LoopUnrollOptions& llvm::LoopUnrollOptions::setRuntime ( bool  Runtime)
inline

Enables or disables unrolling of loops with runtime trip count.

Definition at line 93 of file LoopUnrollPass.h.

References AllowRuntime.

◆ setUpperBound()

LoopUnrollOptions& llvm::LoopUnrollOptions::setUpperBound ( bool  UpperBound)
inline

Enables or disables the use of trip count upper bound in loop unrolling.

Definition at line 106 of file LoopUnrollPass.h.

References AllowUpperBound.

Member Data Documentation

◆ AllowPartial

Optional<bool> llvm::LoopUnrollOptions::AllowPartial

◆ AllowPeeling

Optional<bool> llvm::LoopUnrollOptions::AllowPeeling

◆ AllowProfileBasedPeeling

Optional<bool> llvm::LoopUnrollOptions::AllowProfileBasedPeeling

◆ AllowRuntime

Optional<bool> llvm::LoopUnrollOptions::AllowRuntime

◆ AllowUpperBound

Optional<bool> llvm::LoopUnrollOptions::AllowUpperBound

◆ ForgetSCEV

const bool llvm::LoopUnrollOptions::ForgetSCEV

If true, forget all loops when unrolling.

If false, forget top-most loop of the currently processed loops, which removes one entry at a time from the internal SCEV records. For large loops, the former is faster.

Definition at line 78 of file LoopUnrollPass.h.

Referenced by llvm::LoopUnrollPass::run().

◆ FullUnrollMaxCount

Optional<unsigned> llvm::LoopUnrollOptions::FullUnrollMaxCount

◆ OnlyWhenForced

bool llvm::LoopUnrollOptions::OnlyWhenForced

If false, use a cost model to determine whether unrolling of a loop is profitable.

If true, only loops that explicitly request unrolling via metadata are considered. All other loops are skipped.

Definition at line 73 of file LoopUnrollPass.h.

Referenced by llvm::LoopUnrollPass::run().

◆ OptLevel

int llvm::LoopUnrollOptions::OptLevel

The documentation for this struct was generated from the following file: