LLVM  4.0.0
Macros | Functions | Variables
DependenceAnalysis.cpp File Reference
#include "llvm/Analysis/DependenceAnalysis.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AliasAnalysis.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for DependenceAnalysis.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "da"
 

Functions

 STATISTIC (TotalArrayPairs,"Array pairs tested")
 
 STATISTIC (SeparableSubscriptPairs,"Separable subscript pairs")
 
 STATISTIC (CoupledSubscriptPairs,"Coupled subscript pairs")
 
 STATISTIC (NonlinearSubscriptPairs,"Nonlinear subscript pairs")
 
 STATISTIC (ZIVapplications,"ZIV applications")
 
 STATISTIC (ZIVindependence,"ZIV independence")
 
 STATISTIC (StrongSIVapplications,"Strong SIV applications")
 
 STATISTIC (StrongSIVsuccesses,"Strong SIV successes")
 
 STATISTIC (StrongSIVindependence,"Strong SIV independence")
 
 STATISTIC (WeakCrossingSIVapplications,"Weak-Crossing SIV applications")
 
 STATISTIC (WeakCrossingSIVsuccesses,"Weak-Crossing SIV successes")
 
 STATISTIC (WeakCrossingSIVindependence,"Weak-Crossing SIV independence")
 
 STATISTIC (ExactSIVapplications,"Exact SIV applications")
 
 STATISTIC (ExactSIVsuccesses,"Exact SIV successes")
 
 STATISTIC (ExactSIVindependence,"Exact SIV independence")
 
 STATISTIC (WeakZeroSIVapplications,"Weak-Zero SIV applications")
 
 STATISTIC (WeakZeroSIVsuccesses,"Weak-Zero SIV successes")
 
 STATISTIC (WeakZeroSIVindependence,"Weak-Zero SIV independence")
 
 STATISTIC (ExactRDIVapplications,"Exact RDIV applications")
 
 STATISTIC (ExactRDIVindependence,"Exact RDIV independence")
 
 STATISTIC (SymbolicRDIVapplications,"Symbolic RDIV applications")
 
 STATISTIC (SymbolicRDIVindependence,"Symbolic RDIV independence")
 
 STATISTIC (DeltaApplications,"Delta applications")
 
 STATISTIC (DeltaSuccesses,"Delta successes")
 
 STATISTIC (DeltaIndependence,"Delta independence")
 
 STATISTIC (DeltaPropagations,"Delta propagations")
 
 STATISTIC (GCDapplications,"GCD applications")
 
 STATISTIC (GCDsuccesses,"GCD successes")
 
 STATISTIC (GCDindependence,"GCD independence")
 
 STATISTIC (BanerjeeApplications,"Banerjee applications")
 
 STATISTIC (BanerjeeIndependence,"Banerjee independence")
 
 STATISTIC (BanerjeeSuccesses,"Banerjee successes")
 
 INITIALIZE_PASS_BEGIN (DependenceAnalysisWrapperPass,"da","Dependence Analysis", true, true) INITIALIZE_PASS_END(DependenceAnalysisWrapperPass
 
static void dumpExampleDependence (raw_ostream &OS, DependenceInfo *DA)
 
static AliasResult underlyingObjectsAlias (AliasAnalysis *AA, const DataLayout &DL, const Value *A, const Value *B)
 
static bool isLoadOrStore (const Instruction *I)
 
static ValuegetPointerOperand (Instruction *I)
 
static bool findGCD (unsigned Bits, const APInt &AM, const APInt &BM, const APInt &Delta, APInt &G, APInt &X, APInt &Y)
 
static APInt floorOfQuotient (const APInt &A, const APInt &B)
 
static APInt ceilingOfQuotient (const APInt &A, const APInt &B)
 
static APInt maxAPInt (APInt A, APInt B)
 
static APInt minAPInt (APInt A, APInt B)
 
static bool isRemainderZero (const SCEVConstant *Dividend, const SCEVConstant *Divisor)
 
static const SCEVConstantgetConstantPart (const SCEV *Expr)
 
static void dumpSmallBitVector (SmallBitVector &BV)
 

Variables

static cl::opt< boolDelinearize ("da-delinearize", cl::init(false), cl::Hidden, cl::ZeroOrMore, cl::desc("Try to delinearize array references."))
 
 da
 
Dependence Analysis
 
Dependence true
 

Macro Definition Documentation

#define DEBUG_TYPE   "da"

Definition at line 72 of file DependenceAnalysis.cpp.

Function Documentation

static APInt ceilingOfQuotient ( const APInt A,
const APInt B 
)
static
static void dumpExampleDependence ( raw_ostream OS,
DependenceInfo DA 
)
static
static void dumpSmallBitVector ( SmallBitVector BV)
static
static bool findGCD ( unsigned  Bits,
const APInt AM,
const APInt BM,
const APInt Delta,
APInt G,
APInt X,
APInt Y 
)
static
static APInt floorOfQuotient ( const APInt A,
const APInt B 
)
static
static const SCEVConstant* getConstantPart ( const SCEV Expr)
static

Definition at line 2221 of file DependenceAnalysis.cpp.

static Value* getPointerOperand ( Instruction I)
static
INITIALIZE_PASS_BEGIN ( DependenceAnalysisWrapperPass  ,
"da"  ,
"Dependence Analysis ,
true  ,
true   
)
static bool isLoadOrStore ( const Instruction I)
static

Definition at line 637 of file DependenceAnalysis.cpp.

References SI.

Referenced by llvm::DependenceInfo::depends(), and llvm::DependenceInfo::getSplitIteration().

static bool isRemainderZero ( const SCEVConstant Dividend,
const SCEVConstant Divisor 
)
static

Definition at line 1583 of file DependenceAnalysis.cpp.

References llvm::SCEVConstant::getAPInt(), and llvm::APInt::srem().

static APInt maxAPInt ( APInt  A,
APInt  B 
)
static

Definition at line 1387 of file DependenceAnalysis.cpp.

References B, and llvm::APInt::sgt().

static APInt minAPInt ( APInt  A,
APInt  B 
)
static

Definition at line 1393 of file DependenceAnalysis.cpp.

References B, and llvm::APInt::slt().

STATISTIC ( TotalArrayPairs  ,
"Array pairs tested"   
)
STATISTIC ( SeparableSubscriptPairs  ,
"Separable subscript pairs  
)
STATISTIC ( CoupledSubscriptPairs  ,
"Coupled subscript pairs  
)
STATISTIC ( NonlinearSubscriptPairs  ,
"Nonlinear subscript pairs  
)
STATISTIC ( ZIVapplications  ,
"ZIV applications"   
)
STATISTIC ( ZIVindependence  ,
"ZIV independence"   
)
STATISTIC ( StrongSIVapplications  ,
"Strong SIV applications"   
)
STATISTIC ( StrongSIVsuccesses  ,
"Strong SIV successes"   
)
STATISTIC ( StrongSIVindependence  ,
"Strong SIV independence"   
)
STATISTIC ( WeakCrossingSIVapplications  ,
"Weak-Crossing SIV applications"   
)
STATISTIC ( WeakCrossingSIVsuccesses  ,
"Weak-Crossing SIV successes"   
)
STATISTIC ( WeakCrossingSIVindependence  ,
"Weak-Crossing SIV independence"   
)
STATISTIC ( ExactSIVapplications  ,
"Exact SIV applications"   
)
STATISTIC ( ExactSIVsuccesses  ,
"Exact SIV successes"   
)
STATISTIC ( ExactSIVindependence  ,
"Exact SIV independence"   
)
STATISTIC ( WeakZeroSIVapplications  ,
"Weak-Zero SIV applications"   
)
STATISTIC ( WeakZeroSIVsuccesses  ,
"Weak-Zero SIV successes"   
)
STATISTIC ( WeakZeroSIVindependence  ,
"Weak-Zero SIV independence"   
)
STATISTIC ( ExactRDIVapplications  ,
"Exact RDIV applications"   
)
STATISTIC ( ExactRDIVindependence  ,
"Exact RDIV independence"   
)
STATISTIC ( SymbolicRDIVapplications  ,
"Symbolic RDIV applications"   
)
STATISTIC ( SymbolicRDIVindependence  ,
"Symbolic RDIV independence"   
)
STATISTIC ( DeltaApplications  ,
"Delta applications"   
)
STATISTIC ( DeltaSuccesses  ,
"Delta successes"   
)
STATISTIC ( DeltaIndependence  ,
"Delta independence"   
)
STATISTIC ( DeltaPropagations  ,
"Delta propagations"   
)
STATISTIC ( GCDapplications  ,
"GCD applications"   
)
STATISTIC ( GCDsuccesses  ,
"GCD successes"   
)
STATISTIC ( GCDindependence  ,
"GCD independence"   
)
STATISTIC ( BanerjeeApplications  ,
"Banerjee applications"   
)
STATISTIC ( BanerjeeIndependence  ,
"Banerjee independence"   
)
STATISTIC ( BanerjeeSuccesses  ,
"Banerjee successes"   
)
static AliasResult underlyingObjectsAlias ( AliasAnalysis AA,
const DataLayout DL,
const Value A,
const Value B 
)
static

Variable Documentation

Dependence Analysis

Definition at line 132 of file DependenceAnalysis.cpp.

da

Definition at line 132 of file DependenceAnalysis.cpp.

cl::opt<bool> Delinearize("da-delinearize", cl::init(false), cl::Hidden, cl::ZeroOrMore, cl::desc("Try to delinearize array references."))
static
Dependence true

Definition at line 132 of file DependenceAnalysis.cpp.