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.