|
LLVM
4.0.0
|
#include "llvm/Transforms/Scalar.h"#include "llvm/ADT/MapVector.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/BitVector.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/Analysis/AliasSetTracker.h"#include "llvm/Analysis/LoopPass.h"#include "llvm/Analysis/ScalarEvolution.h"#include "llvm/Analysis/ScalarEvolutionExpander.h"#include "llvm/Analysis/ScalarEvolutionExpressions.h"#include "llvm/Analysis/TargetLibraryInfo.h"#include "llvm/Analysis/ValueTracking.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/Dominators.h"#include "llvm/IR/IntrinsicInst.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Transforms/Utils/BasicBlockUtils.h"#include "llvm/Transforms/Utils/Local.h"#include "llvm/Transforms/Utils/LoopUtils.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "loop-reroll" |
Enumerations | |
| enum | IterationLimits |
Functions | |
| STATISTIC (NumRerolledLoops,"Number of rerolled loops") | |
| static bool | hasUsesOutsideLoop (Instruction *I, Loop *L) |
| static const SCEVConstant * | getIncrmentFactorSCEV (ScalarEvolution *SE, const SCEV *SCEVExpr, Instruction &IV) |
| static bool | isUnorderedLoadStore (Instruction *I) |
| static bool | isSimpleArithmeticOp (User *IVU) |
| Return true if IVU is a "simple" arithmetic operation. More... | |
| static bool | isLoopIncrement (User *U, Instruction *IV) |
| static bool | isIgnorableInst (const Instruction *I) |
Variables | |
| static cl::opt< unsigned > | MaxInc ("max-reroll-increment", cl::init(2048), cl::Hidden, cl::desc("The maximum increment for loop rerolling")) |
| static cl::opt< unsigned > | NumToleratedFailedMatches ("reroll-num-tolerated-failed-matches", cl::init(400), cl::Hidden, cl::desc("The maximum number of failures to tolerate"" during fuzzy matching. (default: 400)")) |
| #define DEBUG_TYPE "loop-reroll" |
Definition at line 40 of file LoopRerollPass.cpp.
| enum IterationLimits |
Definition at line 130 of file LoopRerollPass.cpp.
|
static |
Definition at line 472 of file LoopRerollPass.cpp.
References llvm::dyn_cast(), llvm::ScalarEvolution::getEffectiveSCEVType(), llvm::PointerType::getElementType(), llvm::ScalarEvolution::getNegativeSCEV(), llvm::ScalarEvolution::getSizeOfExpr(), llvm::Value::getType(), llvm::ScalarEvolution::getUDivExpr(), llvm::Type::isPointerTy(), llvm::SCEVNAryExpr::operands(), and llvm::Unknown.
|
static |
Definition at line 464 of file LoopRerollPass.cpp.
References llvm::LoopBase< N, M >::contains(), and llvm::Value::users().
|
static |
Definition at line 1118 of file LoopRerollPass.cpp.
References llvm::dyn_cast(), llvm::IntrinsicInst::getIntrinsicID(), and I.
|
static |
Definition at line 776 of file LoopRerollPass.cpp.
References llvm::MCID::Add, llvm::dyn_cast(), llvm::BinaryOperator::getOpcode(), and llvm::Value::users().
Return true if IVU is a "simple" arithmetic operation.
This is used for narrowing the search space for DAGRoots; only arithmetic and GEPs can be part of a DAGRoot.
Definition at line 756 of file LoopRerollPass.cpp.
References llvm::MCID::Add, and llvm::Instruction::getOpcode().
|
static |
Definition at line 743 of file LoopRerollPass.cpp.
| STATISTIC | ( | NumRerolledLoops | , |
| "Number of rerolled loops" | |||
| ) |
|
static |
1.8.6