Go to the source code of this file.
|
| INITIALIZE_PASS_BEGIN (IRCELegacyPass, "irce", "Inductive range check elimination", false, false) INITIALIZE_PASS_END(IRCELegacyPass |
|
static void | DisableAllLoopOptsOnLoop (Loop &L) |
|
static bool | isSafeDecreasingBound (const SCEV *Start, const SCEV *BoundSCEV, const SCEV *Step, ICmpInst::Predicate Pred, unsigned LatchBrExitIdx, Loop *L, ScalarEvolution &SE) |
| Given a loop with an deccreasing induction variable, is it possible to safely calculate the bounds of a new loop using the given Predicate. More...
|
|
static bool | isSafeIncreasingBound (const SCEV *Start, const SCEV *BoundSCEV, const SCEV *Step, ICmpInst::Predicate Pred, unsigned LatchBrExitIdx, Loop *L, ScalarEvolution &SE) |
| Given a loop with an increasing induction variable, is it possible to safely calculate the bounds of a new loop using the given Predicate. More...
|
|
static Optional< InductiveRangeCheck::Range > | IntersectSignedRange (ScalarEvolution &SE, const Optional< InductiveRangeCheck::Range > &R1, const InductiveRangeCheck::Range &R2) |
|
static Optional< InductiveRangeCheck::Range > | IntersectUnsignedRange (ScalarEvolution &SE, const Optional< InductiveRangeCheck::Range > &R1, const InductiveRangeCheck::Range &R2) |
|
|
static cl::opt< unsigned > | LoopSizeCutoff ("irce-loop-size-cutoff", cl::Hidden, cl::init(64)) |
|
static cl::opt< bool > | PrintChangedLoops ("irce-print-changed-loops", cl::Hidden, cl::init(false)) |
|
static cl::opt< bool > | PrintRangeChecks ("irce-print-range-checks", cl::Hidden, cl::init(false)) |
|
static cl::opt< int > | MaxExitProbReciprocal ("irce-max-exit-prob-reciprocal", cl::Hidden, cl::init(10)) |
|
static cl::opt< bool > | SkipProfitabilityChecks ("irce-skip-profitability-checks", cl::Hidden, cl::init(false)) |
|
static cl::opt< bool > | AllowUnsignedLatchCondition ("irce-allow-unsigned-latch", cl::Hidden, cl::init(true)) |
|
static const char * | ClonedLoopTag = "irce.loop.clone" |
|
| irce |
|
Inductive range check | elimination |
|
Inductive range check | false |
|
◆ DEBUG_TYPE
#define DEBUG_TYPE "irce" |
◆ DisableAllLoopOptsOnLoop()
static void DisableAllLoopOptsOnLoop |
( |
Loop & |
L | ) |
|
|
static |
Definition at line 406 of file InductiveRangeCheckElimination.cpp.
References Context, llvm::NVPTXISD::Dummy, F(), llvm::ConstantInt::get(), llvm::ConstantAsMetadata::get(), llvm::MDString::get(), llvm::MDNode::get(), llvm::BasicBlock::getContext(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::PHINode::getIncomingBlock(), llvm::Type::getInt1Ty(), llvm::PHINode::getNumIncomingValues(), llvm::BasicBlock::getParent(), llvm::AArch64CC::LS, llvm::max(), llvm::MDNode::replaceOperandWith(), llvm::PHINode::setIncomingBlock(), and llvm::Loop::setLoopID().
◆ INITIALIZE_PASS_BEGIN()
◆ IntersectSignedRange()
◆ IntersectUnsignedRange()
◆ isSafeDecreasingBound()
◆ isSafeIncreasingBound()
◆ AllowUnsignedLatchCondition
◆ ClonedLoopTag
const char* ClonedLoopTag = "irce.loop.clone" |
|
static |
◆ elimination
Inductive range check elimination |
◆ false
Inductive range check false |
◆ irce
◆ LoopSizeCutoff
cl::opt<unsigned> LoopSizeCutoff("irce-loop-size-cutoff", cl::Hidden, cl::init(64)) |
|
static |
◆ MaxExitProbReciprocal
cl::opt<int> MaxExitProbReciprocal("irce-max-exit-prob-reciprocal", cl::Hidden, cl::init(10)) |
|
static |
◆ PrintChangedLoops
◆ PrintRangeChecks
◆ SkipProfitabilityChecks