LLVM 20.0.0git
Public Member Functions | List of all members
llvm::mca::LSUnit::MemoryGroup Class Reference

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 InstRefgetCriticalMemoryInstruction () const
 
const CriticalDependencygetCriticalPredecessor () 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 ()
 

Detailed Description

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 245 of file LSUnit.h.

Constructor & Destructor Documentation

◆ MemoryGroup() [1/2]

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

◆ MemoryGroup() [2/2]

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

Member Function Documentation

◆ addInstruction()

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

Definition at line 390 of file LSUnit.h.

References assert(), and getNumSuccessors().

Referenced by llvm::mca::LSUnit::dispatch().

◆ addSuccessor()

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

◆ cycleEvent()

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

Definition at line 395 of file LSUnit.h.

References llvm::mca::CriticalDependency::Cycles, and isWaiting().

◆ getCriticalMemoryInstruction()

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

Definition at line 282 of file LSUnit.h.

◆ getCriticalPredecessor()

const CriticalDependency & llvm::mca::LSUnit::MemoryGroup::getCriticalPredecessor ( ) const
inline

Definition at line 285 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::getCriticalPredecessor().

◆ getNumExecuted()

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

Definition at line 280 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ getNumExecutedPredecessors()

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

Definition at line 275 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ getNumExecuting()

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

Definition at line 279 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ getNumExecutingPredecessors()

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

Definition at line 272 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ getNumInstructions()

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

Definition at line 278 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ getNumPredecessors()

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

Definition at line 271 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::dump().

◆ 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

Definition at line 317 of file LSUnit.h.

Referenced by addSuccessor(), llvm::mca::LSUnit::dispatch(), and onInstructionIssued().

◆ isPending()

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

Definition at line 311 of file LSUnit.h.

Referenced by llvm::mca::LSUnit::isPending().

◆ isReady()

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

◆ isWaiting()

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

Definition at line 307 of file LSUnit.h.

Referenced by cycleEvent(), and llvm::mca::LSUnit::isWaiting().

◆ onGroupExecuted()

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

Definition at line 336 of file LSUnit.h.

References assert(), and isReady().

◆ 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

Definition at line 342 of file LSUnit.h.

References assert(), llvm::mca::Instruction::getCyclesLeft(), IR, and isExecuting().


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