LLVM 22.0.0git
llvm::MemoryDepChecker::Dependence Struct Reference

Dependece between memory access instructions. More...

#include "llvm/Analysis/LoopAccessAnalysis.h"

Public Types

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

Public Member Functions

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

Static Public Member Functions

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

Public Attributes

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

Static Public Attributes

static LLVM_ABI const charDepName []
 String version of the types.

Detailed Description

Dependece between memory access instructions.

Definition at line 112 of file LoopAccessAnalysis.h.

Member Enumeration Documentation

◆ DepType

The type of the dependence.

Enumerator
NoDep 
Unknown 
IndirectUnsafe 
Forward 
ForwardButPreventsForwarding 
Backward 
BackwardVectorizable 
BackwardVectorizableButPreventsForwarding 

Definition at line 114 of file LoopAccessAnalysis.h.

Constructor & Destructor Documentation

◆ Dependence()

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

Definition at line 157 of file LoopAccessAnalysis.h.

References Destination, Source, and Type.

Member Function Documentation

◆ getDestination()

Instruction * llvm::MemoryDepChecker::Dependence::getDestination ( const MemoryDepChecker & DepChecker) const
inline

Return the destination instruction of the dependence.

Definition at line 1003 of file LoopAccessAnalysis.h.

References Destination, llvm::MemoryDepChecker::getMemoryInstructions(), and llvm::MemoryDepChecker::MemoryDepChecker().

◆ getSource()

Instruction * llvm::MemoryDepChecker::Dependence::getSource ( const MemoryDepChecker & DepChecker) const
inline

Return the source instruction of the dependence.

Definition at line 998 of file LoopAccessAnalysis.h.

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

◆ isBackward()

bool MemoryDepChecker::Dependence::isBackward ( ) const

◆ isForward()

bool MemoryDepChecker::Dependence::isForward ( ) const

◆ isPossiblyBackward()

bool MemoryDepChecker::Dependence::isPossiblyBackward ( ) const

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

Definition at line 1809 of file LoopAccessAnalysis.cpp.

References IndirectUnsafe, isBackward(), Type, and Unknown.

◆ isSafeForVectorization()

◆ 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 2435 of file LoopAccessAnalysis.cpp.

References DepName, llvm::Depth, Destination, llvm::raw_ostream::indent(), Source, and Type.

Referenced by llvm::LoopAccessInfo::print().

Member Data Documentation

◆ DepName

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

String version of the types.

Definition at line 148 of file LoopAccessAnalysis.h.

Referenced by print().

◆ Destination

unsigned llvm::MemoryDepChecker::Dependence::Destination

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

Definition at line 153 of file LoopAccessAnalysis.h.

Referenced by Dependence(), getDestination(), and print().

◆ Source

unsigned llvm::MemoryDepChecker::Dependence::Source

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

Definition at line 151 of file LoopAccessAnalysis.h.

Referenced by Dependence(), getSource(), and print().

◆ Type

DepType llvm::MemoryDepChecker::Dependence::Type

The type of the dependence.

Definition at line 155 of file LoopAccessAnalysis.h.

Referenced by Dependence(), isBackward(), isForward(), isPossiblyBackward(), isSafeForVectorization(), and print().


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