LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Friends | List of all members
llvm::FullDependence Class Reference

#include <DependenceAnalysis.h>

Inheritance diagram for llvm::FullDependence:
Inheritance graph
[legend]
Collaboration diagram for llvm::FullDependence:
Collaboration graph
[legend]

Public Member Functions

 FullDependence (Instruction *Src, Instruction *Dst, bool LoopIndependent, unsigned Levels)
 
 ~FullDependence ()
 
bool isLoopIndependent () const
 
bool isConfused () const
 
bool isConsistent () const
 
unsigned getLevels () const
 
unsigned getDirection (unsigned Level) const
 
const SCEVgetDistance (unsigned Level) const
 
bool isPeelFirst (unsigned Level) const
 
bool isPeelLast (unsigned Level) const
 
bool isSplitable (unsigned Level) const
 
bool isScalar (unsigned Level) const
 
- Public Member Functions inherited from llvm::Dependence
 Dependence (Instruction *Source, Instruction *Destination)
 
virtual ~Dependence ()
 
InstructiongetSrc () const
 
InstructiongetDst () const
 
bool isInput () const
 
bool isOutput () const
 
bool isFlow () const
 
bool isAnti () const
 
bool isOrdered () const
 
bool isUnordered () const
 
const DependencegetNextPredecessor () const
 
const DependencegetNextSuccessor () const
 
void setNextPredecessor (const Dependence *pred)
 
void setNextSuccessor (const Dependence *succ)
 
void dump (raw_ostream &OS) const
 

Friends

class DependenceAnalysis
 

Detailed Description

FullDependence - This class represents a dependence between two memory references in a function. It contains detailed information about the dependence (direction vectors, etc.) and is used when the compiler is able to accurately analyze the interaction of the references; that is, it is not a confused dependence (see Dependence). In most cases (for output, flow, and anti dependences), the dependence implies an ordering, where the source must precede the destination; in contrast, input dependences are unordered.

Definition at line 218 of file DependenceAnalysis.h.

Constructor & Destructor Documentation

FullDependence::FullDependence ( Instruction Src,
Instruction Dst,
bool  LoopIndependent,
unsigned  Levels 
)

Definition at line 229 of file DependenceAnalysis.cpp.

llvm::FullDependence::~FullDependence ( )
inline

Definition at line 224 of file DependenceAnalysis.h.

Member Function Documentation

unsigned FullDependence::getDirection ( unsigned  Level) const
virtual

getDirection - Returns the direction associated with a particular level.

Reimplemented from llvm::Dependence.

Definition at line 243 of file DependenceAnalysis.cpp.

References llvm::Dependence::DVEntry::Direction.

Referenced by llvm::DependenceAnalysis::depends().

const SCEV * FullDependence::getDistance ( unsigned  Level) const
virtual

getDistance - Returns the distance (or NULL) associated with a particular level.

Reimplemented from llvm::Dependence.

Definition at line 250 of file DependenceAnalysis.cpp.

References llvm::Dependence::DVEntry::Distance.

unsigned llvm::FullDependence::getLevels ( ) const
inlinevirtual

getLevels - Returns the number of common loops surrounding the source and destination of the dependence.

Reimplemented from llvm::Dependence.

Definition at line 243 of file DependenceAnalysis.h.

bool llvm::FullDependence::isConfused ( ) const
inlinevirtual

isConfused - Returns true if this dependence is confused (the compiler understands nothing and makes worst-case assumptions).

Reimplemented from llvm::Dependence.

Definition at line 235 of file DependenceAnalysis.h.

bool llvm::FullDependence::isConsistent ( ) const
inlinevirtual

isConsistent - Returns true if this dependence is consistent (occurs every time the source and destination are executed).

Reimplemented from llvm::Dependence.

Definition at line 239 of file DependenceAnalysis.h.

bool llvm::FullDependence::isLoopIndependent ( ) const
inlinevirtual

isLoopIndependent - Returns true if this is a loop-independent dependence.

Reimplemented from llvm::Dependence.

Definition at line 230 of file DependenceAnalysis.h.

bool FullDependence::isPeelFirst ( unsigned  Level) const
virtual

isPeelFirst - Returns true if peeling the first iteration from this loop will break this dependence.

Reimplemented from llvm::Dependence.

Definition at line 267 of file DependenceAnalysis.cpp.

References llvm::Dependence::DVEntry::PeelFirst.

bool FullDependence::isPeelLast ( unsigned  Level) const
virtual

isPeelLast - Returns true if peeling the last iteration from this loop will break this dependence.

Reimplemented from llvm::Dependence.

Definition at line 275 of file DependenceAnalysis.cpp.

References llvm::Dependence::DVEntry::PeelLast.

bool FullDependence::isScalar ( unsigned  Level) const
virtual

isScalar - Returns true if a particular level is scalar; that is, if no subscript in the source or destination mention the induction variable associated with the loop at this level.

Reimplemented from llvm::Dependence.

Definition at line 259 of file DependenceAnalysis.cpp.

References llvm::Dependence::DVEntry::Scalar.

bool FullDependence::isSplitable ( unsigned  Level) const
virtual

isSplitable - Returns true if splitting the loop will break the dependence.

Reimplemented from llvm::Dependence.

Definition at line 282 of file DependenceAnalysis.cpp.

References llvm::Dependence::DVEntry::Splitable.

Friends And Related Function Documentation

friend class DependenceAnalysis
friend

Definition at line 274 of file DependenceAnalysis.h.


The documentation for this class was generated from the following files: