LLVM  8.0.1
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 "llvm/Analysis/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)
 
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::FullDependence ( Instruction Src,
Instruction Dst,
bool  LoopIndependent,
unsigned  Levels 
)

Definition at line 243 of file DependenceAnalysis.cpp.

Member Function Documentation

◆ getDirection()

unsigned FullDependence::getDirection ( unsigned  Level) const
overridevirtual

getDirection - Returns the direction associated with a particular level.

Reimplemented from llvm::Dependence.

Definition at line 256 of file DependenceAnalysis.cpp.

References assert().

Referenced by llvm::DependenceInfo::depends(), and llvm::Dependence::dump().

◆ getDistance()

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

References assert().

Referenced by llvm::Dependence::dump().

◆ getLevels()

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.

References llvm::Dependence::getDirection(), llvm::Dependence::getDistance(), llvm::Dependence::isPeelFirst(), llvm::Dependence::isPeelLast(), llvm::Dependence::isScalar(), and llvm::Dependence::isSplitable().

Referenced by llvm::Dependence::dump().

◆ isConfused()

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.

Referenced by llvm::Dependence::dump().

◆ isConsistent()

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.

Referenced by llvm::Dependence::dump().

◆ isLoopIndependent()

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.

Referenced by llvm::Dependence::dump().

◆ isPeelFirst()

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

References assert().

Referenced by llvm::Dependence::dump().

◆ isPeelLast()

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

References assert().

Referenced by llvm::Dependence::dump().

◆ isScalar()

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

References assert().

Referenced by llvm::Dependence::dump().

◆ isSplitable()

bool FullDependence::isSplitable ( unsigned  Level) const
overridevirtual

Friends And Related Function Documentation

◆ DependenceInfo

friend class DependenceInfo
friend

Definition at line 267 of file DependenceAnalysis.h.


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