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 390 of file LSUnit.h.
References assert(), and getNumSuccessors().
Referenced by llvm::mca::LSUnit::dispatch().
|
inline |
Definition at line 289 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 395 of file LSUnit.h.
References llvm::mca::CriticalDependency::Cycles, and isWaiting().
|
inline |
Definition at line 285 of file LSUnit.h.
Referenced by llvm::mca::LSUnit::getCriticalPredecessor().
|
inline |
Definition at line 280 of file LSUnit.h.
Referenced by llvm::mca::LSUnit::dump().
|
inline |
Definition at line 275 of file LSUnit.h.
Referenced by llvm::mca::LSUnit::dump().
|
inline |
Definition at line 279 of file LSUnit.h.
Referenced by llvm::mca::LSUnit::dump().
|
inline |
Definition at line 272 of file LSUnit.h.
Referenced by llvm::mca::LSUnit::dump().
|
inline |
Definition at line 278 of file LSUnit.h.
Referenced by llvm::mca::LSUnit::dump().
|
inline |
Definition at line 271 of file LSUnit.h.
Referenced by llvm::mca::LSUnit::dump().
|
inline |
Definition at line 268 of file LSUnit.h.
References llvm::SmallVectorBase< Size_T >::size().
Referenced by addInstruction(), and llvm::mca::LSUnit::hasDependentUsers().
|
inline |
Definition at line 320 of file LSUnit.h.
Referenced by addSuccessor(), llvm::mca::LSUnit::hasDependentUsers(), and onInstructionExecuted().
|
inline |
Definition at line 317 of file LSUnit.h.
Referenced by addSuccessor(), llvm::mca::LSUnit::dispatch(), and onInstructionIssued().
|
inline |
Definition at line 311 of file LSUnit.h.
Referenced by llvm::mca::LSUnit::isPending().
|
inline |
Definition at line 316 of file LSUnit.h.
Referenced by llvm::mca::LSUnit::isReady(), onGroupExecuted(), onGroupIssued(), and onInstructionExecuted().
|
inline |
Definition at line 307 of file LSUnit.h.
Referenced by cycleEvent(), and llvm::mca::LSUnit::isWaiting().
|
inline |
|
inline |
Definition at line 322 of file LSUnit.h.
References assert(), llvm::mca::CriticalDependency::Cycles, llvm::mca::CriticalDependency::IID, IR, and isReady().
Referenced by addSuccessor().
Definition at line 371 of file LSUnit.h.
References assert(), llvm::mca::InstRef::getSourceIndex(), llvm::mca::InstRef::invalidate(), IR, isExecuted(), and isReady().
Definition at line 342 of file LSUnit.h.
References assert(), llvm::mca::Instruction::getCyclesLeft(), IR, and isExecuting().