LLVM  4.0.0
Public Member Functions | Friends | List of all members
llvm::FullDependence Class Referencefinal

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

#include <DependenceAnalysis.h>

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

Public Member Functions

 FullDependence (Instruction *Src, Instruction *Dst, bool LoopIndependent, unsigned Levels)
 
bool isLoopIndependent () const override
 isLoopIndependent - Returns true if this is a loop-independent dependence. More...
 
bool isConfused () const override
 isConfused - Returns true if this dependence is confused (the compiler understands nothing and makes worst-case assumptions). More...
 
bool isConsistent () const override
 isConsistent - Returns true if this dependence is consistent (occurs every time the source and destination are executed). More...
 
unsigned getLevels () const override
 getLevels - Returns the number of common loops surrounding the source and destination of the dependence. More...
 
unsigned getDirection (unsigned Level) const override
 getDirection - Returns the direction associated with a particular level. More...
 
const SCEVgetDistance (unsigned Level) const override
 getDistance - Returns the distance (or NULL) associated with a particular level. More...
 
bool isPeelFirst (unsigned Level) const override
 isPeelFirst - Returns true if peeling the first iteration from this loop will break this dependence. More...
 
bool isPeelLast (unsigned Level) const override
 isPeelLast - Returns true if peeling the last iteration from this loop will break this dependence. More...
 
bool isSplitable (unsigned Level) const override
 isSplitable - Returns true if splitting the loop will break the dependence. More...
 
bool isScalar (unsigned Level) const override
 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...
 
- Public Member Functions inherited from llvm::Dependence
 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...
 
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...
 

Friends

class DependenceInfo
 

Additional Inherited Members

- Protected Member Functions inherited from llvm::Dependence
 Dependence (Dependence &&)=default
 
Dependenceoperator= (Dependence &&)=default
 

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 215 of file DependenceAnalysis.h.

Constructor & Destructor Documentation

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

Definition at line 236 of file DependenceAnalysis.cpp.

Member Function Documentation

unsigned FullDependence::getDirection ( unsigned  Level) const
overridevirtual

getDirection - Returns the direction associated with a particular level.

Reimplemented from llvm::Dependence.

Definition at line 249 of file DependenceAnalysis.cpp.

References assert().

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

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

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

Reimplemented from llvm::Dependence.

Definition at line 256 of file DependenceAnalysis.cpp.

References assert().

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

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

Reimplemented from llvm::Dependence.

Definition at line 235 of file DependenceAnalysis.h.

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

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

Reimplemented from llvm::Dependence.

Definition at line 227 of file DependenceAnalysis.h.

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

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

Reimplemented from llvm::Dependence.

Definition at line 231 of file DependenceAnalysis.h.

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

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

Reimplemented from llvm::Dependence.

Definition at line 222 of file DependenceAnalysis.h.

bool FullDependence::isPeelFirst ( unsigned  Level) const
overridevirtual

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

Reimplemented from llvm::Dependence.

Definition at line 273 of file DependenceAnalysis.cpp.

References assert().

bool FullDependence::isPeelLast ( unsigned  Level) const
overridevirtual

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

Reimplemented from llvm::Dependence.

Definition at line 281 of file DependenceAnalysis.cpp.

References assert().

bool FullDependence::isScalar ( unsigned  Level) const
overridevirtual

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 265 of file DependenceAnalysis.cpp.

References assert().

bool FullDependence::isSplitable ( unsigned  Level) const
overridevirtual

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

Reimplemented from llvm::Dependence.

Definition at line 288 of file DependenceAnalysis.cpp.

References assert().

Friends And Related Function Documentation

friend class DependenceInfo
friend

Definition at line 267 of file DependenceAnalysis.h.


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