LLVM: llvm::TargetTransformInfo::UnrollingPreferences Struct Reference (original) (raw)

Parameters that control the generic loop unrolling transformation. More...

#include "[llvm/Analysis/TargetTransformInfo.h](TargetTransformInfo%5F8h%5Fsource.html)"

Public Attributes
unsigned Threshold
The cost threshold for the unrolled loop.
unsigned MaxPercentThresholdBoost
If complete unrolling will reduce the cost of the loop, we will boost the Threshold by a certain percent to allow more aggressive complete unrolling.
unsigned OptSizeThreshold
The cost threshold for the unrolled loop when optimizing for size (set to UINT_MAX to disable).
unsigned PartialThreshold
The cost threshold for the unrolled loop, like Threshold, but used for partial/runtime unrolling (set to UINT_MAX to disable).
unsigned PartialOptSizeThreshold
The cost threshold for the unrolled loop when optimizing for size, like OptSizeThreshold, but used for partial/runtime unrolling (set to UINT_MAX to disable).
unsigned Count
A forced unrolling factor (the number of concatenated bodies of the original loop in the unrolled loop body).
unsigned DefaultUnrollRuntimeCount
Default unroll count for loops with run-time trip count.
unsigned MaxCount
unsigned MaxUpperBound
Set the maximum upper bound of trip count.
unsigned FullUnrollMaxCount
Set the maximum unrolling factor for full unrolling.
unsigned BEInsns
bool Partial
Allow partial unrolling (unrolling of loops to expand the size of the loop body, not only to eliminate small constant-trip-count loops).
bool Runtime
Allow runtime unrolling (unrolling of loops to expand the size of the loop body even when the number of loop iterations is not known at compile time).
bool AllowRemainder
Allow generation of a loop remainder (extra iterations after unroll).
bool AllowExpensiveTripCount
Allow emitting expensive instructions (such as divisions) when computing the trip count of a loop for runtime unrolling.
bool Force
Apply loop unroll on any kind of loop (mainly to loops that fail runtime unrolling).
bool UpperBound
Allow using trip count upper bound to unroll loops.
bool UnrollRemainder
Allow unrolling of all the iterations of the runtime loop remainder.
bool UnrollAndJam
Allow unroll and jam. Used to enable unroll and jam for the target.
unsigned UnrollAndJamInnerLoopThreshold
Threshold for unroll and jam, for inner loop size.
unsigned MaxIterationsCountToAnalyze
Don't allow loop unrolling to simulate more than this number of iterations when checking full unroll profitability.
bool UnrollVectorizedLoop = false
Don't disable runtime unroll for the loops which were vectorized.
unsigned SCEVExpansionBudget
Don't allow runtime unrolling if expanding the trip count takes more than SCEVExpansionBudget.
bool RuntimeUnrollMultiExit
Allow runtime unrolling multi-exit loops.
bool AddAdditionalAccumulators
Allow unrolling to add parallel reduction phis.

Parameters that control the generic loop unrolling transformation.

Definition at line 608 of file TargetTransformInfo.h.

AddAdditionalAccumulators

bool llvm::TargetTransformInfo::UnrollingPreferences::AddAdditionalAccumulators

AllowExpensiveTripCount

bool llvm::TargetTransformInfo::UnrollingPreferences::AllowExpensiveTripCount

AllowRemainder

bool llvm::TargetTransformInfo::UnrollingPreferences::AllowRemainder

BEInsns

unsigned llvm::TargetTransformInfo::UnrollingPreferences::BEInsns

Count

unsigned llvm::TargetTransformInfo::UnrollingPreferences::Count

DefaultUnrollRuntimeCount

unsigned llvm::TargetTransformInfo::UnrollingPreferences::DefaultUnrollRuntimeCount

Force

bool llvm::TargetTransformInfo::UnrollingPreferences::Force

FullUnrollMaxCount

unsigned llvm::TargetTransformInfo::UnrollingPreferences::FullUnrollMaxCount

MaxCount

unsigned llvm::TargetTransformInfo::UnrollingPreferences::MaxCount

MaxIterationsCountToAnalyze

unsigned llvm::TargetTransformInfo::UnrollingPreferences::MaxIterationsCountToAnalyze

MaxPercentThresholdBoost

unsigned llvm::TargetTransformInfo::UnrollingPreferences::MaxPercentThresholdBoost

If complete unrolling will reduce the cost of the loop, we will boost the Threshold by a certain percent to allow more aggressive complete unrolling.

This value provides the maximum boost percentage that we can apply to Threshold (The value should be no less than 100). BoostedThreshold = Threshold * min(RolledCost / UnrolledCost, MaxPercentThresholdBoost / 100) E.g. if complete unrolling reduces the loop execution time by 50% then we boost the threshold by the factor of 2x. If unrolling is not expected to reduce the running time, then we do not increase the threshold.

Definition at line 627 of file TargetTransformInfo.h.

Referenced by llvm::gatherUnrollingPreferences(), and shouldFullUnroll().

MaxUpperBound

unsigned llvm::TargetTransformInfo::UnrollingPreferences::MaxUpperBound

OptSizeThreshold

unsigned llvm::TargetTransformInfo::UnrollingPreferences::OptSizeThreshold

Partial

bool llvm::TargetTransformInfo::UnrollingPreferences::Partial

Allow partial unrolling (unrolling of loops to expand the size of the loop body, not only to eliminate small constant-trip-count loops).

Definition at line 665 of file TargetTransformInfo.h.

Referenced by llvm::computeUnrollCount(), llvm::gatherUnrollingPreferences(), getAppleRuntimeUnrollPreferences(), llvm::AArch64TTIImpl::getUnrollingPreferences(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), llvm::ARMTTIImpl::getUnrollingPreferences(), llvm::BasicTTIImplBase< BasicTTIImpl >::getUnrollingPreferences(), llvm::HexagonTTIImpl::getUnrollingPreferences(), llvm::NVPTXTTIImpl::getUnrollingPreferences(), llvm::PPCTTIImpl::getUnrollingPreferences(), llvm::RISCVTTIImpl::getUnrollingPreferences(), llvm::SystemZTTIImpl::getUnrollingPreferences(), llvm::WebAssemblyTTIImpl::getUnrollingPreferences(), shouldPartialUnroll(), and tryToUnrollLoop().

PartialOptSizeThreshold

unsigned llvm::TargetTransformInfo::UnrollingPreferences::PartialOptSizeThreshold

PartialThreshold

unsigned llvm::TargetTransformInfo::UnrollingPreferences::PartialThreshold

The cost threshold for the unrolled loop, like Threshold, but used for partial/runtime unrolling (set to UINT_MAX to disable).

Definition at line 633 of file TargetTransformInfo.h.

Referenced by computeHeuristicUnrollFactor(), llvm::computeUnrollCount(), llvm::gatherUnrollingPreferences(), llvm::AArch64TTIImpl::getUnrollingPreferences(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), llvm::BasicTTIImplBase< BasicTTIImpl >::getUnrollingPreferences(), llvm::NVPTXTTIImpl::getUnrollingPreferences(), llvm::SystemZTTIImpl::getUnrollingPreferences(), llvm::WebAssemblyTTIImpl::getUnrollingPreferences(), shouldPartialUnroll(), and tryToUnrollLoop().

Runtime

bool llvm::TargetTransformInfo::UnrollingPreferences::Runtime

Allow runtime unrolling (unrolling of loops to expand the size of the loop body even when the number of loop iterations is not known at compile time).

Definition at line 669 of file TargetTransformInfo.h.

Referenced by computeUnrollAndJamCount(), llvm::computeUnrollCount(), llvm::gatherUnrollingPreferences(), getAppleRuntimeUnrollPreferences(), llvm::AArch64TTIImpl::getUnrollingPreferences(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), llvm::ARMTTIImpl::getUnrollingPreferences(), llvm::BasicTTIImplBase< BasicTTIImpl >::getUnrollingPreferences(), llvm::HexagonTTIImpl::getUnrollingPreferences(), llvm::NVPTXTTIImpl::getUnrollingPreferences(), llvm::PPCTTIImpl::getUnrollingPreferences(), llvm::RISCVTTIImpl::getUnrollingPreferences(), llvm::SystemZTTIImpl::getUnrollingPreferences(), llvm::WebAssemblyTTIImpl::getUnrollingPreferences(), and tryToUnrollLoop().

RuntimeUnrollMultiExit

bool llvm::TargetTransformInfo::UnrollingPreferences::RuntimeUnrollMultiExit

SCEVExpansionBudget

unsigned llvm::TargetTransformInfo::UnrollingPreferences::SCEVExpansionBudget

Threshold

unsigned llvm::TargetTransformInfo::UnrollingPreferences::Threshold

The cost threshold for the unrolled loop.

Should be relative to the getInstructionCost values returned by this API, and the expectation is that the unrolled loop's instructions when run through that interface should not exceed this cost. However, this is only an estimate. Also, specific loops may be unrolled even with a cost above this threshold if deemed profitable. Set this to UINT_MAX to disable the loop body cost restriction.

Definition at line 616 of file TargetTransformInfo.h.

Referenced by computeHeuristicUnrollFactor(), computeUnrollAndJamCount(), llvm::computeUnrollCount(), llvm::gatherUnrollingPreferences(), llvm::AMDGPUTTIImpl::getUnrollingPreferences(), llvm::NVPTXTTIImpl::getUnrollingPreferences(), shouldFullUnroll(), shouldPragmaUnroll(), and tryToUnrollLoop().

UnrollAndJam

bool llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJam

UnrollAndJamInnerLoopThreshold

unsigned llvm::TargetTransformInfo::UnrollingPreferences::UnrollAndJamInnerLoopThreshold

UnrollRemainder

bool llvm::TargetTransformInfo::UnrollingPreferences::UnrollRemainder

UnrollVectorizedLoop

bool llvm::TargetTransformInfo::UnrollingPreferences::UnrollVectorizedLoop = false

UpperBound

bool llvm::TargetTransformInfo::UnrollingPreferences::UpperBound


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