LLVM  4.0.0
Classes | Public Member Functions | Protected Member Functions | Friends | List of all members
llvm::Dependence Class Reference

Dependence - This class represents a dependence between two memory memory references in a function. More...

#include <DependenceAnalysis.h>

Inheritance diagram for llvm::Dependence:
[legend]

Classes

struct  DVEntry
 Dependence::DVEntry - Each level in the distance/direction vector has a direction (or perhaps a union of several directions), and perhaps a distance. More...
 

Public Member Functions

 Dependence (Instruction *Source, Instruction *Destination)
 
virtual ~Dependence ()
 
InstructiongetSrc () const
 getSrc - Returns the source instruction for this dependence. More...
 
InstructiongetDst () const
 getDst - Returns the destination instruction for this dependence. More...
 
bool isInput () const
 isInput - Returns true if this is an input dependence. More...
 
bool isOutput () const
 isOutput - Returns true if this is an output dependence. More...
 
bool isFlow () const
 isFlow - Returns true if this is a flow (aka true) dependence. More...
 
bool isAnti () const
 isAnti - Returns true if this is an anti dependence. More...
 
bool isOrdered () const
 isOrdered - Returns true if dependence is Output, Flow, or Anti More...
 
bool isUnordered () const
 isUnordered - Returns true if dependence is Input More...
 
virtual bool isLoopIndependent () const
 isLoopIndependent - Returns true if this is a loop-independent dependence. More...
 
virtual bool isConfused () const
 isConfused - Returns true if this dependence is confused (the compiler understands nothing and makes worst-case assumptions). More...
 
virtual bool isConsistent () const
 isConsistent - Returns true if this dependence is consistent (occurs every time the source and destination are executed). More...
 
virtual unsigned getLevels () const
 getLevels - Returns the number of common loops surrounding the source and destination of the dependence. More...
 
virtual unsigned getDirection (unsigned Level) const
 getDirection - Returns the direction associated with a particular level. More...
 
virtual const SCEVgetDistance (unsigned Level) const
 getDistance - Returns the distance (or NULL) associated with a particular level. More...
 
virtual bool isPeelFirst (unsigned Level) const
 isPeelFirst - Returns true if peeling the first iteration from this loop will break this dependence. More...
 
virtual bool isPeelLast (unsigned Level) const
 isPeelLast - Returns true if peeling the last iteration from this loop will break this dependence. More...
 
virtual bool isSplitable (unsigned Level) const
 isSplitable - Returns true if splitting this loop will break the dependence. More...
 
virtual bool isScalar (unsigned Level) const
 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. More...
 
const DependencegetNextPredecessor () const
 getNextPredecessor - Returns the value of the NextPredecessor field. More...
 
const DependencegetNextSuccessor () const
 getNextSuccessor - Returns the value of the NextSuccessor field. More...
 
void setNextPredecessor (const Dependence *pred)
 setNextPredecessor - Sets the value of the NextPredecessor field. More...
 
void setNextSuccessor (const Dependence *succ)
 setNextSuccessor - Sets the value of the NextSuccessor field. More...
 
void dump (raw_ostream &OS) const
 dump - For debugging purposes, dumps a dependence to OS. More...
 

Protected Member Functions

 Dependence (Dependence &&)=default
 
Dependenceoperator= (Dependence &&)=default
 

Friends

class DependenceInfo
 

Detailed Description

Dependence - This class represents a dependence between two memory memory references in a function.

It contains minimal information and is used in the very common situation where the compiler is unable to determine anything beyond the existence of a dependence; that is, it represents a confused dependence (see also FullDependence). 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.

When a dependence graph is built, each Dependence will be a member of the set of predecessor edges for its destination instruction and a set if successor edges for its source instruction. These sets are represented as singly-linked lists, with the "next" fields stored in the dependence itelf.

Definition at line 71 of file DependenceAnalysis.h.

Constructor & Destructor Documentation

llvm::Dependence::Dependence ( Dependence &&  )
protecteddefault
llvm::Dependence::Dependence ( Instruction Source,
Instruction Destination 
)
inline

Definition at line 77 of file DependenceAnalysis.h.

virtual llvm::Dependence::~Dependence ( )
inlinevirtual

Definition at line 83 of file DependenceAnalysis.h.

Member Function Documentation

void Dependence::dump ( raw_ostream OS) const
virtual unsigned llvm::Dependence::getDirection ( unsigned  Level) const
inlinevirtual

getDirection - Returns the direction associated with a particular level.

Reimplemented in llvm::FullDependence.

Definition at line 158 of file DependenceAnalysis.h.

References llvm::Dependence::DVEntry::ALL.

Referenced by dump().

virtual const SCEV* llvm::Dependence::getDistance ( unsigned  Level) const
inlinevirtual

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

Reimplemented in llvm::FullDependence.

Definition at line 162 of file DependenceAnalysis.h.

Referenced by dump().

Instruction* llvm::Dependence::getDst ( ) const
inline

getDst - Returns the destination instruction for this dependence.

Definition at line 113 of file DependenceAnalysis.h.

Referenced by llvm::DependenceInfo::getSplitIteration().

virtual unsigned llvm::Dependence::getLevels ( ) const
inlinevirtual

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

Reimplemented in llvm::FullDependence.

Definition at line 154 of file DependenceAnalysis.h.

Referenced by dump().

const Dependence* llvm::Dependence::getNextPredecessor ( ) const
inline

getNextPredecessor - Returns the value of the NextPredecessor field.

Definition at line 183 of file DependenceAnalysis.h.

const Dependence* llvm::Dependence::getNextSuccessor ( ) const
inline

getNextSuccessor - Returns the value of the NextSuccessor field.

Definition at line 187 of file DependenceAnalysis.h.

Instruction* llvm::Dependence::getSrc ( ) const
inline

getSrc - Returns the source instruction for this dependence.

Definition at line 109 of file DependenceAnalysis.h.

Referenced by llvm::DependenceInfo::getSplitIteration().

bool Dependence::isAnti ( ) const

isAnti - Returns true if this is an anti dependence.

Definition at line 219 of file DependenceAnalysis.cpp.

References llvm::Instruction::mayReadFromMemory(), and llvm::Instruction::mayWriteToMemory().

Referenced by dump(), and isOrdered().

virtual bool llvm::Dependence::isConfused ( ) const
inlinevirtual

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

Reimplemented in llvm::FullDependence.

Definition at line 146 of file DependenceAnalysis.h.

Referenced by dump().

virtual bool llvm::Dependence::isConsistent ( ) const
inlinevirtual

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

Reimplemented in llvm::FullDependence.

Definition at line 150 of file DependenceAnalysis.h.

Referenced by dump().

bool Dependence::isFlow ( ) const

isFlow - Returns true if this is a flow (aka true) dependence.

Definition at line 213 of file DependenceAnalysis.cpp.

References llvm::Instruction::mayReadFromMemory(), and llvm::Instruction::mayWriteToMemory().

Referenced by dump(), and isOrdered().

bool Dependence::isInput ( ) const

isInput - Returns true if this is an input dependence.

Definition at line 201 of file DependenceAnalysis.cpp.

References llvm::Instruction::mayReadFromMemory().

Referenced by dump(), and isUnordered().

virtual bool llvm::Dependence::isLoopIndependent ( ) const
inlinevirtual

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

Reimplemented in llvm::FullDependence.

Definition at line 141 of file DependenceAnalysis.h.

Referenced by dump().

bool llvm::Dependence::isOrdered ( ) const
inline

isOrdered - Returns true if dependence is Output, Flow, or Anti

Definition at line 133 of file DependenceAnalysis.h.

References isAnti(), isFlow(), and isOutput().

bool Dependence::isOutput ( ) const

isOutput - Returns true if this is an output dependence.

Definition at line 207 of file DependenceAnalysis.cpp.

References llvm::Instruction::mayWriteToMemory().

Referenced by dump(), and isOrdered().

virtual bool llvm::Dependence::isPeelFirst ( unsigned  Level) const
inlinevirtual

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

Reimplemented in llvm::FullDependence.

Definition at line 166 of file DependenceAnalysis.h.

Referenced by dump().

virtual bool llvm::Dependence::isPeelLast ( unsigned  Level) const
inlinevirtual

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

Reimplemented in llvm::FullDependence.

Definition at line 170 of file DependenceAnalysis.h.

Referenced by dump().

bool Dependence::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 in llvm::FullDependence.

Definition at line 228 of file DependenceAnalysis.cpp.

Referenced by dump().

virtual bool llvm::Dependence::isSplitable ( unsigned  Level) const
inlinevirtual

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

Reimplemented in llvm::FullDependence.

Definition at line 174 of file DependenceAnalysis.h.

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

bool llvm::Dependence::isUnordered ( ) const
inline

isUnordered - Returns true if dependence is Input

Definition at line 137 of file DependenceAnalysis.h.

References isInput().

Dependence& llvm::Dependence::operator= ( Dependence &&  )
protecteddefault
void llvm::Dependence::setNextPredecessor ( const Dependence pred)
inline

setNextPredecessor - Sets the value of the NextPredecessor field.

Definition at line 191 of file DependenceAnalysis.h.

References pred.

void llvm::Dependence::setNextSuccessor ( const Dependence succ)
inline

setNextSuccessor - Sets the value of the NextSuccessor field.

Definition at line 195 of file DependenceAnalysis.h.

Friends And Related Function Documentation

friend class DependenceInfo
friend

Definition at line 204 of file DependenceAnalysis.h.


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