LLVM  3.7.0
Macros | Enumerations | Functions | Variables
LoopRerollPass.cpp File Reference
#include "llvm/Transforms/Scalar.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallBitVector.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"
Include dependency graph for LoopRerollPass.cpp:

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 bool isSimpleLoadStore (Instruction *I)
 
static bool isSimpleArithmeticOp (User *IVU)
 Return true if IVU is a "simple" arithmetic operation. More...
 
static bool isLoopIncrement (User *U, Instruction *IV)
 

Variables

static cl::opt< unsignedMaxInc ("max-reroll-increment", cl::init(2048), cl::Hidden, cl::desc("The maximum increment for loop rerolling"))
 
static cl::opt< unsignedNumToleratedFailedMatches ("reroll-num-tolerated-failed-matches", cl::init(400), cl::Hidden, cl::desc("The maximum number of failures to tolerate"" during fuzzy matching. (default: 400)"))
 

Macro Definition Documentation

#define DEBUG_TYPE   "loop-reroll"

Definition at line 40 of file LoopRerollPass.cpp.

Enumeration Type Documentation

Definition at line 130 of file LoopRerollPass.cpp.

Function Documentation

static bool hasUsesOutsideLoop ( Instruction I,
Loop L 
)
static

Definition at line 459 of file LoopRerollPass.cpp.

References llvm::LoopBase< N, M >::contains(), and llvm::Value::users().

static bool isLoopIncrement ( User U,
Instruction IV 
)
static
static bool isSimpleArithmeticOp ( User IVU)
static

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 637 of file LoopRerollPass.cpp.

References llvm::Instruction::getOpcode().

static bool isSimpleLoadStore ( Instruction I)
static

Definition at line 624 of file LoopRerollPass.cpp.

References llvm::AArch64CC::MI, and SI.

STATISTIC ( NumRerolledLoops  ,
"Number of rerolled loops  
)

Variable Documentation

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)"))
static