LLVM  10.0.0svn
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
 
ArrayRef< MemoryGroup * > getSuccessors () const
 
unsigned 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 isWaiting () const
 
bool isPending () const
 
bool isReady () const
 
bool isExecuting () const
 
bool isExecuted () const
 
void onGroupIssued (const InstRef &IR)
 
void onGroupExecuted ()
 
void onInstructionIssued (const InstRef &IR)
 
void onInstructionExecuted ()
 
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 37 of file LSUnit.h.

Constructor & Destructor Documentation

◆ MemoryGroup() [1/2]

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

Definition at line 54 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 155 of file LSUnit.h.

References assert(), and getNumSuccessors().

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

◆ addSuccessor()

void llvm::mca::MemoryGroup::addSuccessor ( MemoryGroup Group)
inline

◆ cycleEvent()

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

◆ getCriticalMemoryInstruction()

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

Definition at line 73 of file LSUnit.h.

◆ getCriticalPredecessor()

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

Definition at line 76 of file LSUnit.h.

Referenced by llvm::mca::Scheduler::isAvailable().

◆ getNumExecuted()

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

Definition at line 71 of file LSUnit.h.

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

◆ getNumExecutedPredecessors()

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

Definition at line 66 of file LSUnit.h.

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

◆ getNumExecuting()

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

Definition at line 70 of file LSUnit.h.

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

◆ getNumExecutingPredecessors()

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

Definition at line 63 of file LSUnit.h.

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

◆ getNumInstructions()

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

Definition at line 69 of file LSUnit.h.

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

◆ getNumPredecessors()

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

Definition at line 62 of file LSUnit.h.

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

◆ getNumSuccessors()

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

Definition at line 61 of file LSUnit.h.

References llvm::SmallVectorBase::size().

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

◆ getSuccessors()

ArrayRef<MemoryGroup *> llvm::mca::MemoryGroup::getSuccessors ( ) const
inline

Definition at line 60 of file LSUnit.h.

◆ isExecuted()

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

◆ isExecuting()

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

Definition at line 98 of file LSUnit.h.

Referenced by addSuccessor(), and onInstructionIssued().

◆ isPending()

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

Definition at line 92 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 88 of file LSUnit.h.

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

◆ onGroupExecuted()

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

Definition at line 114 of file LSUnit.h.

References assert(), and isReady().

◆ onGroupIssued()

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

◆ onInstructionExecuted()

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

Definition at line 142 of file LSUnit.h.

References assert(), isExecuted(), and isReady().

Referenced by llvm::mca::LSUnitBase::createMemoryGroup(), and llvm::mca::LSUnit::LSUnit().

◆ onInstructionIssued()

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

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