|
LLVM
8.0.1
|
Dependece between memory access instructions. More...
#include "llvm/Analysis/LoopAccessAnalysis.h"

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) | |
| Instruction * | getSource (const LoopAccessInfo &LAI) const |
| Return the source instruction of the dependence. More... | |
| Instruction * | getDestination (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... | |
Dependece between memory access instructions.
Definition at line 114 of file LoopAccessAnalysis.h.
The type of the dependence.
| Enumerator | |
|---|---|
| NoDep | |
| Unknown | |
| Forward | |
| ForwardButPreventsForwarding | |
| Backward | |
| BackwardVectorizable | |
| BackwardVectorizableButPreventsForwarding | |
Definition at line 116 of file LoopAccessAnalysis.h.
|
inline |
Definition at line 153 of file LoopAccessAnalysis.h.
References llvm::Depth, and print().
|
inline |
Return the destination instruction of the dependence.
Definition at line 778 of file LoopAccessAnalysis.h.
References llvm::LoopAccessInfo::getDepChecker(), and llvm::MemoryDepChecker::getMemoryInstructions().
|
inline |
Return the source instruction of the dependence.
Definition at line 773 of file LoopAccessAnalysis.h.
References llvm::LoopAccessInfo::getDepChecker(), llvm::MemoryDepChecker::getMemoryInstructions(), and llvm::Sched::Source.
| bool MemoryDepChecker::Dependence::isBackward | ( | ) | const |
Lexically backward dependence.
Definition at line 1242 of file LoopAccessAnalysis.cpp.
References llvm_unreachable, and llvm::Unknown.
| bool MemoryDepChecker::Dependence::isForward | ( | ) | const |
Lexically forward dependence.
Definition at line 1262 of file LoopAccessAnalysis.cpp.
References llvm::dbgs(), LLVM_DEBUG, llvm_unreachable, and llvm::Unknown.
| bool MemoryDepChecker::Dependence::isPossiblyBackward | ( | ) | const |
May be a lexically backward dependence type (includes Unknown).
Definition at line 1258 of file LoopAccessAnalysis.cpp.
References llvm::Unknown.
|
static |
Dependence types that don't prevent vectorization.
Definition at line 1225 of file LoopAccessAnalysis.cpp.
References llvm_unreachable, and llvm::Unknown.
| 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 1708 of file LoopAccessAnalysis.cpp.
References llvm::MemoryLocation::AATags, llvm::LoopBase< BlockT, LoopT >::blocks(), llvm::SmallVectorImpl< T >::clear(), llvm::dbgs(), llvm::dyn_cast(), llvm::LoopBase< BlockT, LoopT >::empty(), EnableMemAccessVersioning, llvm::MemoryLocation::get(), llvm::Module::getDataLayout(), llvm::LoopBase< BlockT, LoopT >::getExitingBlock(), llvm::LoopBase< BlockT, LoopT >::getHeader(), llvm::LoopBase< BlockT, LoopT >::getLoopLatch(), llvm::BasicBlock::getModule(), llvm::Value::getName(), llvm::LoopBase< BlockT, LoopT >::getNumBackEdges(), llvm::BasicBlock::getParent(), llvm::getPtrStride(), llvm::getVectorIntrinsicIDForCall(), I, llvm::raw_ostream::indent(), llvm::Loop::isAnnotatedParallel(), llvm::TargetLibraryInfo::isFunctionVectorizable(), llvm::ARM_MB::LD, LLVM_DEBUG, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::SmallVectorBase::size(), llvm::Sched::Source, llvm::ARM_MB::ST, and llvm::AAMDNodes::TBAA.
String version of the types.
Definition at line 144 of file LoopAccessAnalysis.h.
Referenced by llvm::MemoryDepChecker::getInstructionsForAccess().
| unsigned llvm::MemoryDepChecker::Dependence::Destination |
Index of the destination of the dependence in the InstMap vector.
Definition at line 149 of file LoopAccessAnalysis.h.
| unsigned llvm::MemoryDepChecker::Dependence::Source |
Index of the source of the dependence in the InstMap vector.
Definition at line 147 of file LoopAccessAnalysis.h.
| DepType llvm::MemoryDepChecker::Dependence::Type |
The type of the dependence.
Definition at line 151 of file LoopAccessAnalysis.h.
1.8.13