LLVM API Documentation

Defines | Functions | Variables
DependenceAnalysis.cpp File Reference
#include "llvm/Analysis/DependenceAnalysis.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/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.

Defines

#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 (DependenceAnalysis,"da","Dependence Analysis", true, true) INITIALIZE_PASS_END(DependenceAnalysis
static void dumpExampleDependence (raw_ostream &OS, Function *F, DependenceAnalysis *DA)
static AliasAnalysis::AliasResult underlyingObjectsAlias (AliasAnalysis *AA, const Value *A, const Value *B)
static bool isLoadOrStore (const Instruction *I)
static ValuegetPointerOperand (Instruction *I)
static bool findGCD (unsigned Bits, APInt AM, APInt BM, APInt Delta, APInt &G, APInt &X, APInt &Y)
static APInt floorOfQuotient (APInt A, APInt B)
static APInt ceilingOfQuotient (APInt A, 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 SCEVMulExpr *Product)
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

Define Documentation

#define DEBUG_TYPE   "da"

Definition at line 70 of file DependenceAnalysis.cpp.


Function Documentation

static APInt ceilingOfQuotient ( APInt  A,
APInt  B 
) [static]
static void dumpExampleDependence ( raw_ostream OS,
Function F,
DependenceAnalysis DA 
) [static]
static void dumpSmallBitVector ( SmallBitVector BV) [static]
static bool findGCD ( unsigned  Bits,
APInt  AM,
APInt  BM,
APInt  Delta,
APInt G,
APInt X,
APInt Y 
) [static]
static APInt floorOfQuotient ( APInt  A,
APInt  B 
) [static]
static const SCEVConstant* getConstantPart ( const SCEVMulExpr Product) [static]
static Value* getPointerOperand ( Instruction I) [static]
INITIALIZE_PASS_BEGIN ( DependenceAnalysis  ,
"da"  ,
"Dependence Analysis ,
true  ,
true   
)
static bool isLoadOrStore ( const Instruction I) [static]
static bool isRemainderZero ( const SCEVConstant Dividend,
const SCEVConstant Divisor 
) [static]
static APInt maxAPInt ( APInt  A,
APInt  B 
) [static]

Definition at line 1342 of file DependenceAnalysis.cpp.

References llvm::APInt::sgt().

static APInt minAPInt ( APInt  A,
APInt  B 
) [static]

Definition at line 1348 of file DependenceAnalysis.cpp.

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

Variable Documentation

Definition at line 120 of file DependenceAnalysis.cpp.

da

Definition at line 120 of file DependenceAnalysis.cpp.

Referenced by llvm::ARM_AM::getLoadStoreMultipleSubMode().

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

Definition at line 120 of file DependenceAnalysis.cpp.