LLVM: lib/Transforms/Vectorize/LoopVectorizationLegality.cpp File Reference (original) (raw)
Go to the source code of this file.
Namespaces | |
---|---|
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
Functions | |
---|---|
static bool | llvm::isUniformLoop (Loop *Lp, Loop *OuterLp) |
static bool | llvm::isUniformLoopNest (Loop *Lp, Loop *OuterLp) |
static Type * | llvm::convertPointerToIntegerType (const DataLayout &DL, Type *Ty) |
static Type * | llvm::getWiderType (const DataLayout &DL, Type *Ty0, Type *Ty1) |
static bool | llvm::hasOutsideLoopUser (const Loop *TheLoop, Instruction *Inst, SmallPtrSetImpl< Value * > &AllowedExit) |
Check that the instruction has outside loop users and is not an identified reduction variable. | |
static bool | llvm::storeToSameAddress (ScalarEvolution *SE, StoreInst *A, StoreInst *B) |
Returns true if A and B have same pointer operands or same SCEVs addresses. | |
static bool | llvm::isTLIScalarize (const TargetLibraryInfo &TLI, const CallInst &CI) |
Checks if a function is scalarizable according to the TLI, in the sense that it should be vectorized and then expanded in multiple scalar calls. | |
static bool | llvm::canWidenCallReturnType (Type *Ty) |
Returns true if the call return type Ty can be widened by the loop vectorizer. | |
static bool | llvm::findHistogram (LoadInst *LI, StoreInst *HSt, Loop *TheLoop, const PredicatedScalarEvolution &PSE, SmallVectorImpl< HistogramInfo > &Histograms) |
Find histogram operations that match high-level code in loops: | |
Variables | |
---|---|
static cl::opt< bool > | EnableIfConversion ("enable-if-conversion", cl::init(true), cl::Hidden, cl::desc("Enable if-conversion during vectorization.")) |
static cl::opt< bool > | AllowStridedPointerIVs ("lv-strided-pointer-ivs", cl::init(false), cl::Hidden, cl::desc("Enable recognition of non-constant strided " "pointer induction variables.")) |
cl::opt< bool > | llvm::HintsAllowReordering ("hints-allow-reordering", cl::init(true), cl::Hidden, cl::desc("Allow enabling loop hints to reorder " "FP operations during vectorization.")) |
static cl::opt< unsigned > | VectorizeSCEVCheckThreshold ("vectorize-scev-check-threshold", cl::init(16), cl::Hidden, cl::desc("The maximum number of SCEV checks allowed.")) |
static cl::opt< unsigned > | PragmaVectorizeSCEVCheckThreshold ("pragma-vectorize-scev-check-threshold", cl::init(128), cl::Hidden, cl::desc("The maximum number of SCEV checks allowed with a " "vectorize(enable) pragma")) |
static cl::opt< LoopVectorizeHints::ScalableForceKind > | ForceScalableVectorization ("scalable-vectorization", cl::init(LoopVectorizeHints::SK_Unspecified), cl::Hidden, cl::desc("Control whether the compiler can use scalable vectors to " "vectorize a loop"), cl::values(clEnumValN(LoopVectorizeHints::SK_FixedWidthOnly, "off", "Scalable vectorization is disabled."), clEnumValN(LoopVectorizeHints::SK_PreferScalable, "preferred", "Scalable vectorization is available and favored when the " "cost is inconclusive."), clEnumValN(LoopVectorizeHints::SK_PreferScalable, "on", "Scalable vectorization is available and favored when the " "cost is inconclusive."))) |
static cl::opt< bool > | EnableHistogramVectorization ("enable-histogram-loop-vectorization", cl::init(false), cl::Hidden, cl::desc("Enables autovectorization of some loops containing histograms")) |
static const unsigned | MaxInterleaveFactor = 16 |
Maximum vectorization interleave count. | |
◆ DEBUG_TYPE
◆ LV_NAME
#define LV_NAME "loop-vectorize"
◆ AllowStridedPointerIVs
cl::opt< bool > AllowStridedPointerIVs("lv-strided-pointer-ivs", cl::init(false), cl::Hidden, cl::desc("Enable recognition of non-constant strided " "pointer induction variables.")) ( "lv-strided-pointer-ivs" , cl::init(false) , cl::Hidden , cl::desc("Enable recognition of non-constant strided " "pointer induction variables.") ) | static |
---|
◆ EnableHistogramVectorization
cl::opt< bool > EnableHistogramVectorization("enable-histogram-loop-vectorization", cl::init(false), cl::Hidden, cl::desc("Enables autovectorization of some loops containing histograms")) ( "enable-histogram-loop-vectorization" , cl::init(false) , cl::Hidden , cl::desc("Enables autovectorization of some loops containing histograms") ) | static |
---|
◆ EnableIfConversion
cl::opt< bool > EnableIfConversion("enable-if-conversion", cl::init(true), cl::Hidden, cl::desc("Enable if-conversion during vectorization.")) ( "enable-if-conversion" , cl::init(true) , cl::Hidden , cl::desc("Enable if-conversion during vectorization.") ) | static |
---|
◆ ForceScalableVectorization
cl::opt< LoopVectorizeHints::ScalableForceKind > ForceScalableVectorization("scalable-vectorization", cl::init(LoopVectorizeHints::SK_Unspecified), cl::Hidden, cl::desc("Control whether the compiler can use scalable vectors to " "vectorize a loop"), cl::values( clEnumValN(LoopVectorizeHints::SK_FixedWidthOnly, "off", "Scalable vectorization is disabled."), clEnumValN( LoopVectorizeHints::SK_PreferScalable, "preferred", "Scalable vectorization is available and favored when the " "cost is inconclusive."), clEnumValN( LoopVectorizeHints::SK_PreferScalable, "on", "Scalable vectorization is available and favored when the " "cost is inconclusive."))) ( "scalable-vectorization" , cl::init(LoopVectorizeHints::SK_Unspecified) , cl::Hidden , cl::desc("Control whether the compiler can use scalable vectors to " "vectorize a loop") , cl::values( clEnumValN(LoopVectorizeHints::SK_FixedWidthOnly, "off", "Scalable vectorization is disabled."), clEnumValN( LoopVectorizeHints::SK_PreferScalable, "preferred", "Scalable vectorization is available and favored when the " "cost is inconclusive."), clEnumValN( LoopVectorizeHints::SK_PreferScalable, "on", "Scalable vectorization is available and favored when the " "cost is inconclusive.")) ) | static |
---|
◆ MaxInterleaveFactor
◆ PragmaVectorizeSCEVCheckThreshold
cl::opt< unsigned > PragmaVectorizeSCEVCheckThreshold("pragma-vectorize-scev-check-threshold", cl::init(128), cl::Hidden, cl::desc("The maximum number of SCEV checks allowed with a " "vectorize(enable) pragma")) ( "pragma-vectorize-scev-check-threshold" , cl::init(128) , cl::Hidden , cl::desc("The maximum number of SCEV checks allowed with a " "vectorize(enable) pragma") ) | static |
---|
◆ VectorizeSCEVCheckThreshold
cl::opt< unsigned > VectorizeSCEVCheckThreshold("vectorize-scev-check-threshold", cl::init(16), cl::Hidden, cl::desc("The maximum number of SCEV checks allowed.")) ( "vectorize-scev-check-threshold" , cl::init(16) , cl::Hidden , cl::desc("The maximum number of SCEV checks allowed.") ) | static |
---|