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

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

#include "llvm/MCA/HardwareUnits/LSUnit.h"

Public Member Functions

 MemoryGroup ()
 
 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 35 of file LSUnit.h.

Constructor & Destructor Documentation

◆ MemoryGroup() [1/2]

llvm::mca::MemoryGroup::MemoryGroup ( )
inline

Definition at line 55 of file LSUnit.h.

◆ MemoryGroup() [2/2]

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

Member Function Documentation

◆ addInstruction()

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

Definition at line 181 of file LSUnit.h.

References assert(), and getNumSuccessors().

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

◆ addSuccessor()

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

◆ cycleEvent()

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

Definition at line 186 of file LSUnit.h.

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

◆ getCriticalMemoryInstruction()

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

Definition at line 75 of file LSUnit.h.

◆ getCriticalPredecessor()

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

Definition at line 78 of file LSUnit.h.

◆ getNumExecuted()

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

Definition at line 73 of file LSUnit.h.

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

◆ getNumExecutedPredecessors()

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

Definition at line 68 of file LSUnit.h.

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

◆ getNumExecuting()

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

Definition at line 72 of file LSUnit.h.

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

◆ getNumExecutingPredecessors()

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

Definition at line 65 of file LSUnit.h.

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

◆ getNumInstructions()

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

Definition at line 71 of file LSUnit.h.

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

◆ getNumPredecessors()

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

Definition at line 64 of file LSUnit.h.

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

◆ getNumSuccessors()

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

Definition at line 61 of file LSUnit.h.

Referenced by addInstruction(), and llvm::mca::LSUnitBase::hasDependentUsers().

◆ isExecuted()

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

◆ isExecuting()

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

Definition at line 110 of file LSUnit.h.

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

◆ isPending()

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

Definition at line 104 of file LSUnit.h.

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

◆ isReady()

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

◆ isWaiting()

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

Definition at line 100 of file LSUnit.h.

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

◆ onGroupExecuted()

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

Definition at line 129 of file LSUnit.h.

References assert(), and isReady().

◆ onGroupIssued()

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

◆ onInstructionExecuted()

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

◆ onInstructionIssued()

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

Definition at line 135 of file LSUnit.h.

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


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