|
LLVM 22.0.0git
|
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) | |
| Instruction * | getSource (const MemoryDepChecker &DepChecker) const |
| Return the source instruction of the dependence. | |
| Instruction * | getDestination (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 char * | DepName [] |
| String version of the types. | |
Dependece between memory access instructions.
Definition at line 112 of file LoopAccessAnalysis.h.
The type of the dependence.
| Enumerator | |
|---|---|
| NoDep | |
| Unknown | |
| IndirectUnsafe | |
| Forward | |
| ForwardButPreventsForwarding | |
| Backward | |
| BackwardVectorizable | |
| BackwardVectorizableButPreventsForwarding | |
Definition at line 114 of file LoopAccessAnalysis.h.
|
inline |
Definition at line 157 of file LoopAccessAnalysis.h.
References Destination, Source, and Type.
|
inline |
Return the destination instruction of the dependence.
Definition at line 1004 of file LoopAccessAnalysis.h.
References Destination, llvm::MemoryDepChecker::getMemoryInstructions(), and llvm::MemoryDepChecker::MemoryDepChecker().
|
inline |
Return the source instruction of the dependence.
Definition at line 999 of file LoopAccessAnalysis.h.
References llvm::MemoryDepChecker::getMemoryInstructions(), llvm::MemoryDepChecker::MemoryDepChecker(), and Source.
| bool MemoryDepChecker::Dependence::isBackward | ( | ) | const |
Lexically backward dependence.
Definition at line 1817 of file LoopAccessAnalysis.cpp.
References Backward, BackwardVectorizable, BackwardVectorizableButPreventsForwarding, Forward, ForwardButPreventsForwarding, IndirectUnsafe, llvm_unreachable, NoDep, Type, and Unknown.
Referenced by isPossiblyBackward().
| bool MemoryDepChecker::Dependence::isForward | ( | ) | const |
Lexically forward dependence.
Definition at line 1838 of file LoopAccessAnalysis.cpp.
References Backward, BackwardVectorizable, BackwardVectorizableButPreventsForwarding, Forward, ForwardButPreventsForwarding, IndirectUnsafe, llvm_unreachable, NoDep, Type, and Unknown.
| bool MemoryDepChecker::Dependence::isPossiblyBackward | ( | ) | const |
May be a lexically backward dependence type (includes Unknown).
Definition at line 1834 of file LoopAccessAnalysis.cpp.
References IndirectUnsafe, isBackward(), Type, and Unknown.
|
static |
Dependence types that don't prevent vectorization.
Definition at line 1799 of file LoopAccessAnalysis.cpp.
References Backward, BackwardVectorizable, BackwardVectorizableButPreventsForwarding, Forward, ForwardButPreventsForwarding, IndirectUnsafe, llvm_unreachable, NoDep, llvm::MemoryDepChecker::PossiblySafeWithRtChecks, llvm::MemoryDepChecker::Safe, Type, Unknown, and llvm::MemoryDepChecker::Unsafe.
Referenced by llvm::MemoryDepChecker::areDepsSafe().
| 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 2460 of file LoopAccessAnalysis.cpp.
References DepName, llvm::Depth, Destination, llvm::raw_ostream::indent(), Source, and Type.
Referenced by llvm::LoopAccessInfo::print().
String version of the types.
Definition at line 148 of file LoopAccessAnalysis.h.
Referenced by print().
| 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().
| 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().
| 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().