|
LLVM
4.0.0
|
#include "llvm/ADT/Optional.h"#include "llvm/Analysis/BranchProbabilityInfo.h"#include "llvm/Analysis/LoopInfo.h"#include "llvm/Analysis/LoopPass.h"#include "llvm/Analysis/ScalarEvolution.h"#include "llvm/Analysis/ScalarEvolutionExpander.h"#include "llvm/Analysis/ScalarEvolutionExpressions.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/Function.h"#include "llvm/IR/IRBuilder.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/PatternMatch.h"#include "llvm/Pass.h"#include "llvm/Support/Debug.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Transforms/Scalar.h"#include "llvm/Transforms/Utils/BasicBlockUtils.h"#include "llvm/Transforms/Utils/Cloning.h"#include "llvm/Transforms/Utils/LoopUtils.h"#include "llvm/Transforms/Utils/LoopSimplify.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "irce" |
Functions | |
| INITIALIZE_PASS_BEGIN (InductiveRangeCheckElimination,"irce","Inductive range check elimination", false, false) INITIALIZE_PASS_END(InductiveRangeCheckElimination | |
| static void | DisableAllLoopOptsOnLoop (Loop &L) |
| static bool | CanBeSMax (ScalarEvolution &SE, const SCEV *S) |
| static bool | CanBeSMin (ScalarEvolution &SE, const SCEV *S) |
| static Optional < InductiveRangeCheck::Range > | IntersectRange (ScalarEvolution &SE, const Optional< InductiveRangeCheck::Range > &R1, const InductiveRangeCheck::Range &R2) |
Variables | |
| 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 const char * | ClonedLoopTag = "irce.loop.clone" |
| irce | |
| Inductive range check | elimination |
| Inductive range check | false |
| #define DEBUG_TYPE "irce" |
Definition at line 84 of file InductiveRangeCheckElimination.cpp.
|
static |
Definition at line 643 of file InductiveRangeCheckElimination.cpp.
References llvm::ConstantRange::contains(), getBitWidth(), llvm::APInt::getSignedMaxValue(), llvm::ScalarEvolution::getSignedRange(), llvm::SCEV::getType(), and llvm::ScalarEvolution::getUnsignedRange().
|
static |
Definition at line 650 of file InductiveRangeCheckElimination.cpp.
References llvm::ConstantRange::contains(), getBitWidth(), llvm::APInt::getSignedMinValue(), llvm::ScalarEvolution::getSignedRange(), llvm::SCEV::getType(), and llvm::ScalarEvolution::getUnsignedRange().
|
static |
Definition at line 404 of file InductiveRangeCheckElimination.cpp.
References Context, llvm::NVPTXISD::Dummy, llvm::ConstantInt::get(), llvm::ConstantAsMetadata::get(), llvm::MDString::get(), llvm::MDNode::get(), llvm::LoopBase< N, M >::getHeader(), llvm::Type::getInt1Ty(), llvm::MDNode::replaceOperandWith(), and llvm::Loop::setLoopID().
| INITIALIZE_PASS_BEGIN | ( | InductiveRangeCheckElimination | , |
| "irce" | , | ||
| "Inductive range check elimination" | , | ||
| false | , | ||
| false | |||
| ) |
|
static |
Definition at line 1432 of file InductiveRangeCheckElimination.cpp.
References llvm::ScalarEvolution::getSMaxExpr(), llvm::ScalarEvolution::getSMinExpr(), llvm::Optional< T >::getValue(), llvm::Optional< T >::hasValue(), and llvm::None.
|
static |
Definition at line 82 of file InductiveRangeCheckElimination.cpp.
| Inductive range check elimination |
Definition at line 222 of file InductiveRangeCheckElimination.cpp.
| Inductive range check false |
Definition at line 222 of file InductiveRangeCheckElimination.cpp.
| irce |
Definition at line 222 of file InductiveRangeCheckElimination.cpp.
|
static |
1.8.6