LLVM 20.0.0git
|
A node of a memory dependency graph. More...
#include "llvm/MCA/HardwareUnits/LSUnit.h"
Public Member Functions | |
MemoryGroup ()=default | |
MemoryGroup (MemoryGroup &&)=default | |
size_t | getNumSuccessors () const |
unsigned | getNumPredecessors () const |
unsigned | getNumExecutingPredecessors () const |
unsigned | getNumExecutedPredecessors () const |
unsigned | getNumInstructions () const |
unsigned | getNumExecuting () const |
unsigned | getNumExecuted () const |
const InstRef & | getCriticalMemoryInstruction () const |
const CriticalDependency & | getCriticalPredecessor () const |
void | addSuccessor (MemoryGroup *Group, bool IsDataDependent) |
bool | isWaiting () const |
bool | isPending () const |
bool | isReady () const |
bool | isExecuting () const |
bool | isExecuted () const |
void | onGroupIssued (const InstRef &IR, bool ShouldUpdateCriticalDep) |
void | onGroupExecuted () |
void | onInstructionIssued (const InstRef &IR) |
void | onInstructionExecuted (const InstRef &IR) |
void | addInstruction () |
void | cycleEvent () |
A node of a memory dependency graph.
A MemoryGroup describes a set of instructions with same memory dependencies.
By construction, instructions of a MemoryGroup don't depend on each other. At dispatch stage, instructions are mapped by the LSUnit to MemoryGroups. A Memory group identifier is then stored as a "token" in field Instruction::LSUTokenID of each dispatched instructions. That token is used internally by the LSUnit to track memory dependencies.
|
default |
|
default |
|
inline |
Definition at line 178 of file LSUnit.h.
References assert(), and getNumSuccessors().
Referenced by llvm::mca::LSUnit::dispatch().
|
inline |
Definition at line 79 of file LSUnit.h.
References assert(), llvm::SmallVectorImpl< T >::emplace_back(), isExecuted(), isExecuting(), and onGroupIssued().
Referenced by llvm::mca::LSUnit::dispatch().
|
inline |
Definition at line 183 of file LSUnit.h.
References llvm::mca::CriticalDependency::Cycles, and isWaiting().
|
inline |
|
inline |
Definition at line 70 of file LSUnit.h.
Referenced by llvm::mca::LSUnitBase::dump().
|
inline |
Definition at line 65 of file LSUnit.h.
Referenced by llvm::mca::LSUnitBase::dump().
|
inline |
Definition at line 69 of file LSUnit.h.
Referenced by llvm::mca::LSUnitBase::dump().
|
inline |
Definition at line 62 of file LSUnit.h.
Referenced by llvm::mca::LSUnitBase::dump().
|
inline |
Definition at line 68 of file LSUnit.h.
Referenced by llvm::mca::LSUnitBase::dump().
|
inline |
Definition at line 61 of file LSUnit.h.
Referenced by llvm::mca::LSUnitBase::dump().
|
inline |
Definition at line 58 of file LSUnit.h.
References llvm::SmallVectorBase< Size_T >::size().
Referenced by addInstruction(), and llvm::mca::LSUnitBase::hasDependentUsers().
|
inline |
Definition at line 110 of file LSUnit.h.
Referenced by addSuccessor(), llvm::mca::LSUnitBase::hasDependentUsers(), and onInstructionExecuted().
|
inline |
Definition at line 107 of file LSUnit.h.
Referenced by addSuccessor(), llvm::mca::LSUnit::dispatch(), and onInstructionIssued().
|
inline |
Definition at line 101 of file LSUnit.h.
Referenced by llvm::mca::LSUnitBase::isPending().
|
inline |
Definition at line 106 of file LSUnit.h.
Referenced by llvm::mca::LSUnitBase::isReady(), onGroupExecuted(), onGroupIssued(), and onInstructionExecuted().
|
inline |
Definition at line 97 of file LSUnit.h.
Referenced by cycleEvent(), and llvm::mca::LSUnitBase::isWaiting().
|
inline |
|
inline |
Definition at line 112 of file LSUnit.h.
References assert(), llvm::mca::CriticalDependency::Cycles, llvm::mca::CriticalDependency::IID, IR, and isReady().
Referenced by addSuccessor().
Definition at line 160 of file LSUnit.h.
References assert(), llvm::mca::InstRef::getSourceIndex(), llvm::mca::InstRef::invalidate(), IR, isExecuted(), and isReady().
Definition at line 132 of file LSUnit.h.
References assert(), llvm::mca::Instruction::getCyclesLeft(), IR, and isExecuting().