LLVM  14.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
llvm::MemoryDepChecker::Dependence Struct Reference

Dependece between memory access instructions. More...

#include "llvm/Analysis/LoopAccessAnalysis.h"

Collaboration diagram for llvm::MemoryDepChecker::Dependence:
Collaboration graph
[legend]

Public Types

enum  DepType {
  NoDep, Unknown, Forward, ForwardButPreventsForwarding,
  Backward, BackwardVectorizable, BackwardVectorizableButPreventsForwarding
}
 The type of the dependence. More...
 

Public Member Functions

 Dependence (unsigned Source, unsigned Destination, DepType Type)
 
InstructiongetSource (const LoopAccessInfo &LAI) const
 Return the source instruction of the dependence. More...
 
InstructiongetDestination (const LoopAccessInfo &LAI) const
 Return the destination instruction of the dependence. More...
 
bool isForward () const
 Lexically forward dependence. More...
 
bool isBackward () const
 Lexically backward dependence. More...
 
bool isPossiblyBackward () const
 May be a lexically backward dependence type (includes Unknown). More...
 
void print (raw_ostream &OS, unsigned Depth, const SmallVectorImpl< Instruction * > &Instrs) const
 Print the dependence. More...
 

Static Public Member Functions

static VectorizationSafetyStatus isSafeForVectorization (DepType Type)
 Dependence types that don't prevent vectorization. More...
 

Public Attributes

unsigned Source
 Index of the source of the dependence in the InstMap vector. More...
 
unsigned Destination
 Index of the destination of the dependence in the InstMap vector. More...
 
DepType Type
 The type of the dependence. More...
 

Static Public Attributes

static const char * DepName []
 String version of the types. More...
 

Detailed Description

Dependece between memory access instructions.

Definition at line 108 of file LoopAccessAnalysis.h.

Member Enumeration Documentation

◆ DepType

The type of the dependence.

Enumerator
NoDep 
Unknown 
Forward 
ForwardButPreventsForwarding 
Backward 
BackwardVectorizable 
BackwardVectorizableButPreventsForwarding 

Definition at line 110 of file LoopAccessAnalysis.h.

Constructor & Destructor Documentation

◆ Dependence()

llvm::MemoryDepChecker::Dependence::Dependence ( unsigned  Source,
unsigned  Destination,
DepType  Type 
)
inline

Definition at line 147 of file LoopAccessAnalysis.h.

Member Function Documentation

◆ getDestination()

Instruction * llvm::MemoryDepChecker::Dependence::getDestination ( const LoopAccessInfo LAI) const
inline

Return the destination instruction of the dependence.

Definition at line 772 of file LoopAccessAnalysis.h.

References llvm::LoopAccessInfo::getDepChecker(), and llvm::MemoryDepChecker::getMemoryInstructions().

◆ getSource()

Instruction * llvm::MemoryDepChecker::Dependence::getSource ( const LoopAccessInfo LAI) const
inline

Return the source instruction of the dependence.

Definition at line 767 of file LoopAccessAnalysis.h.

References llvm::LoopAccessInfo::getDepChecker(), llvm::MemoryDepChecker::getMemoryInstructions(), and Source.

◆ isBackward()

bool MemoryDepChecker::Dependence::isBackward ( ) const

Lexically backward dependence.

Definition at line 1325 of file LoopAccessAnalysis.cpp.

References llvm_unreachable.

◆ isForward()

bool MemoryDepChecker::Dependence::isForward ( ) const

Lexically forward dependence.

Definition at line 1345 of file LoopAccessAnalysis.cpp.

References llvm_unreachable.

◆ isPossiblyBackward()

bool MemoryDepChecker::Dependence::isPossiblyBackward ( ) const

May be a lexically backward dependence type (includes Unknown).

Definition at line 1341 of file LoopAccessAnalysis.cpp.

◆ isSafeForVectorization()

MemoryDepChecker::VectorizationSafetyStatus MemoryDepChecker::Dependence::isSafeForVectorization ( DepType  Type)
static

◆ print()

void MemoryDepChecker::Dependence::print ( raw_ostream OS,
unsigned  Depth,
const SmallVectorImpl< Instruction * > &  Instrs 
) const

Print the dependence.

Instr is used to map the instruction indices to instructions.

Definition at line 1803 of file LoopAccessAnalysis.cpp.

References llvm::Depth, llvm::raw_ostream::indent(), and llvm::Sched::Source.

Member Data Documentation

◆ DepName

const char * MemoryDepChecker::Dependence::DepName
static
Initial value:
= {
"NoDep", "Unknown", "Forward", "ForwardButPreventsForwarding", "Backward",
"BackwardVectorizable", "BackwardVectorizableButPreventsForwarding"}

String version of the types.

Definition at line 138 of file LoopAccessAnalysis.h.

◆ Destination

unsigned llvm::MemoryDepChecker::Dependence::Destination

Index of the destination of the dependence in the InstMap vector.

Definition at line 143 of file LoopAccessAnalysis.h.

◆ Source

unsigned llvm::MemoryDepChecker::Dependence::Source

Index of the source of the dependence in the InstMap vector.

Definition at line 141 of file LoopAccessAnalysis.h.

Referenced by getSource().

◆ Type

DepType llvm::MemoryDepChecker::Dependence::Type

The type of the dependence.

Definition at line 145 of file LoopAccessAnalysis.h.


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