LLVM: lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "hexagon-lir"
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

false

hexagon 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

idioms

hexagon 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