LLVM: lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp File Reference (original ) (raw )Go to the source code of this file.
Functions
INITIALIZE_PASS_BEGIN (HexagonLoopIdiomRecognizeLegacyPass, "hexagon-loop-idiom", "Recognize Hexagon-specific loop idioms", false, false) INITIALIZE_PASS_END (HexagonLoopIdiomRecognizeLegacyPass
static void
replaceAllUsesOfWithIn (Value *I , Value *J, BasicBlock *BB)
static bool
hasZeroSignBit (const Value *V)
static bool
mayLoopAccessLocation (Value *Ptr, ModRefInfo Access , Loop *L, const SCEV *BECount, unsigned StoreSize, AliasAnalysis &AA, SmallPtrSetImpl < Instruction * > &Ignored)
mayLoopAccessLocation - Return true if the specified loop might access the specified pointer location, which is a loop-strided access.
Variables
static cl::opt < bool >
DisableMemcpyIdiom ("disable-memcpy-idiom", cl::Hidden, cl::init(false), cl::desc ("Disable generation of memcpy in loop idiom recognition"))
static cl::opt < bool >
DisableMemmoveIdiom ("disable-memmove-idiom", cl::Hidden, cl::init(false), cl::desc ("Disable generation of memmove in loop idiom recognition"))
static cl::opt < unsigned >
RuntimeMemSizeThreshold ("runtime-mem-idiom -threshold", cl::Hidden, cl::init(0), cl::desc ("Threshold (in bytes) for the runtime " "check guarding the memmove."))
static cl::opt < unsigned >
CompileTimeMemSizeThreshold ("compile-time-mem-idiom -threshold", cl::Hidden, cl::init(64), cl::desc ("Threshold (in bytes) to perform the transformation, if the " "runtime loop count (mem transfer size) is known at compile-time."))
static cl::opt < bool >
OnlyNonNestedMemmove ("only-nonnested-memmove-idiom", cl::Hidden, cl::init(true), cl::desc ("Only enable generating memmove in non-nested loops"))
static cl::opt < bool >
HexagonVolatileMemcpy ("disable-hexagon-volatile-memcpy", cl::Hidden, cl::init(false), cl::desc ("Enable Hexagon-specific memcpy for volatile destination."))
static cl::opt < unsigned >
SimplifyLimit ("hlir-simplify -limit", cl::init(10000), cl::Hidden, cl::desc ("Maximum number of simplification steps in HLIR"))
hexagon loop
idiom
hexagon loop Recognize Hexagon specific loop
idioms
hexagon loop Recognize Hexagon specific loop
false
◆ DEBUG_TYPE#define DEBUG_TYPE "hexagon-lir"
◆ hasZeroSignBit()◆ INITIALIZE_PASS_BEGIN()
INITIALIZE_PASS_BEGIN
(
HexagonLoopIdiomRecognizeLegacyPass
,
"hexagon-loop-idiom"
,
"Recognize Hexagon-specific loop idioms"
,
false
,
false
)
◆ mayLoopAccessLocation()◆ replaceAllUsesOfWithIn()◆ CompileTimeMemSizeThreshold
cl::opt < unsigned > CompileTimeMemSizeThreshold("compile-time-mem-idiom -threshold", cl::Hidden, cl::init(64), cl::desc ("Threshold (in bytes) to perform the transformation, if the " "runtime loop count (mem transfer size) is known at compile-time.")) ( "compile-time-mem-idiom -threshold" , cl::Hidden , cl::init(64) , cl::desc ("Threshold (in bytes) to perform the transformation, if the " "runtime loop count (mem transfer size) is known at compile-time.") )
static
◆ DisableMemcpyIdiom
cl::opt < bool > DisableMemcpyIdiom("disable-memcpy-idiom", cl::Hidden, cl::init(false), cl::desc ("Disable generation of memcpy in loop idiom recognition")) ( "disable-memcpy-idiom" , cl::Hidden , cl::init(false) , cl::desc ("Disable generation of memcpy in loop idiom recognition") )
static
◆ DisableMemmoveIdiom
cl::opt < bool > DisableMemmoveIdiom("disable-memmove-idiom", cl::Hidden, cl::init(false), cl::desc ("Disable generation of memmove in loop idiom recognition")) ( "disable-memmove-idiom" , cl::Hidden , cl::init(false) , cl::desc ("Disable generation of memmove in loop idiom recognition") )
static
◆ falsehexagon loop Recognize Hexagon specific loop false
◆ HexagonVolatileMemcpy
cl::opt < bool > HexagonVolatileMemcpy("disable-hexagon-volatile-memcpy", cl::Hidden, cl::init(false), cl::desc ("Enable Hexagon-specific memcpy for volatile destination.")) ( "disable-hexagon-volatile-memcpy" , cl::Hidden , cl::init(false) , cl::desc ("Enable Hexagon-specific memcpy for volatile destination.") )
static
◆ idiom◆ idiomshexagon loop Recognize Hexagon specific loop idioms
◆ OnlyNonNestedMemmove
cl::opt < bool > OnlyNonNestedMemmove("only-nonnested-memmove-idiom", cl::Hidden, cl::init(true), cl::desc ("Only enable generating memmove in non-nested loops")) ( "only-nonnested-memmove-idiom" , cl::Hidden , cl::init(true) , cl::desc ("Only enable generating memmove in non-nested loops") )
static
◆ RuntimeMemSizeThreshold
cl::opt < unsigned > RuntimeMemSizeThreshold("runtime-mem-idiom -threshold", cl::Hidden, cl::init(0), cl::desc ("Threshold (in bytes) for the runtime " "check guarding the memmove.")) ( "runtime-mem-idiom -threshold" , cl::Hidden , cl::init(0) , cl::desc ("Threshold (in bytes) for the runtime " "check guarding the memmove.") )
static
◆ SimplifyLimit