LLVM: llvm::mca::LSUnit::MemoryGroup Class Reference (original) (raw)

A node of a memory dependency graph. More...

#include "[llvm/MCA/HardwareUnits/LSUnit.h](LSUnit%5F8h%5Fsource.html)"

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.

Definition at line 246 of file LSUnit.h.

llvm::mca::LSUnit::MemoryGroup::MemoryGroup ( ) default

MemoryGroup() [2/2]

llvm::mca::LSUnit::MemoryGroup::MemoryGroup ( MemoryGroup && ) default

addInstruction()

void llvm::mca::LSUnit::MemoryGroup::addInstruction ( ) inline

addSuccessor()

void llvm::mca::LSUnit::MemoryGroup::addSuccessor ( MemoryGroup * Group, bool IsDataDependent ) inline

cycleEvent()

void llvm::mca::LSUnit::MemoryGroup::cycleEvent ( ) inline

getCriticalMemoryInstruction()

const InstRef & llvm::mca::LSUnit::MemoryGroup::getCriticalMemoryInstruction ( ) const inline

getCriticalPredecessor()

getNumExecuted()

unsigned llvm::mca::LSUnit::MemoryGroup::getNumExecuted ( ) const inline

getNumExecutedPredecessors()

unsigned llvm::mca::LSUnit::MemoryGroup::getNumExecutedPredecessors ( ) const inline

getNumExecuting()

unsigned llvm::mca::LSUnit::MemoryGroup::getNumExecuting ( ) const inline

getNumExecutingPredecessors()

unsigned llvm::mca::LSUnit::MemoryGroup::getNumExecutingPredecessors ( ) const inline

getNumInstructions()

unsigned llvm::mca::LSUnit::MemoryGroup::getNumInstructions ( ) const inline

getNumPredecessors()

unsigned llvm::mca::LSUnit::MemoryGroup::getNumPredecessors ( ) const inline

getNumSuccessors()

size_t llvm::mca::LSUnit::MemoryGroup::getNumSuccessors ( ) const inline

isExecuted()

bool llvm::mca::LSUnit::MemoryGroup::isExecuted ( ) const inline

isExecuting()

bool llvm::mca::LSUnit::MemoryGroup::isExecuting ( ) const inline

isPending()

bool llvm::mca::LSUnit::MemoryGroup::isPending ( ) const inline

isReady()

bool llvm::mca::LSUnit::MemoryGroup::isReady ( ) const inline

isWaiting()

bool llvm::mca::LSUnit::MemoryGroup::isWaiting ( ) const inline

onGroupExecuted()

void llvm::mca::LSUnit::MemoryGroup::onGroupExecuted ( ) inline

onGroupIssued()

void llvm::mca::LSUnit::MemoryGroup::onGroupIssued ( const InstRef & IR, bool ShouldUpdateCriticalDep ) inline

onInstructionExecuted()

void llvm::mca::LSUnit::MemoryGroup::onInstructionExecuted ( const InstRef & IR) inline

onInstructionIssued()

void llvm::mca::LSUnit::MemoryGroup::onInstructionIssued ( const InstRef & IR) inline

The documentation for this class was generated from the following file: