class MemoryGroup
Declaration
class MemoryGroup { /* full declaration omitted */ };
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.
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:35
Member Variables
- private unsigned int NumPredecessors
- private unsigned int NumExecutingPredecessors
- private unsigned int NumExecutedPredecessors
- private unsigned int NumInstructions
- private unsigned int NumExecuting
- private unsigned int NumExecuted
- private SmallVector<llvm::mca::MemoryGroup*, 4> OrderSucc
- private SmallVector<llvm::mca::MemoryGroup*, 4> DataSucc
- private llvm::mca::CriticalDependency CriticalPredecessor
- private llvm::mca::InstRef CriticalMemoryInstruction
Method Overview
- public MemoryGroup()
- public MemoryGroup(llvm::mca::MemoryGroup &&)
- private MemoryGroup(const llvm::mca::MemoryGroup &)
- public void addInstruction()
- public void addSuccessor(llvm::mca::MemoryGroup * Group, bool IsDataDependent)
- public void cycleEvent()
- public const llvm::mca::InstRef & getCriticalMemoryInstruction() const
- public const llvm::mca::CriticalDependency & getCriticalPredecessor() const
- public unsigned int getNumExecuted() const
- public unsigned int getNumExecutedPredecessors() const
- public unsigned int getNumExecuting() const
- public unsigned int getNumExecutingPredecessors() const
- public unsigned int getNumInstructions() const
- public unsigned int getNumPredecessors() const
- public size_t getNumSuccessors() const
- public bool isExecuted() const
- public bool isExecuting() const
- public bool isPending() const
- public bool isReady() const
- public bool isWaiting() const
- public void onGroupExecuted()
- public void onGroupIssued(const llvm::mca::InstRef & IR, bool ShouldUpdateCriticalDep)
- public void onInstructionExecuted(const llvm::mca::InstRef & IR)
- public void onInstructionIssued(const llvm::mca::InstRef & IR)
Methods
¶MemoryGroup()
MemoryGroup()
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:55
¶MemoryGroup(llvm::mca::MemoryGroup&&)
MemoryGroup(llvm::mca::MemoryGroup&&)
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:59
Parameters
¶MemoryGroup(const llvm::mca::MemoryGroup&)
MemoryGroup(const llvm::mca::MemoryGroup&)
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:51
Parameters
- const llvm::mca::MemoryGroup&
¶void addInstruction()
void addInstruction()
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:181
¶void addSuccessor(llvm::mca::MemoryGroup* Group,
bool IsDataDependent)
void addSuccessor(llvm::mca::MemoryGroup* Group,
bool IsDataDependent)
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:82
Parameters
- llvm::mca::MemoryGroup* Group
- bool IsDataDependent
¶void cycleEvent()
void cycleEvent()
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:186
¶const llvm::mca::InstRef&
getCriticalMemoryInstruction() const
const llvm::mca::InstRef&
getCriticalMemoryInstruction() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:75
¶const llvm::mca::CriticalDependency&
getCriticalPredecessor() const
const llvm::mca::CriticalDependency&
getCriticalPredecessor() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:78
¶unsigned int getNumExecuted() const
unsigned int getNumExecuted() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:73
¶unsigned int getNumExecutedPredecessors() const
unsigned int getNumExecutedPredecessors() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:68
¶unsigned int getNumExecuting() const
unsigned int getNumExecuting() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:72
¶unsigned int getNumExecutingPredecessors() const
unsigned int getNumExecutingPredecessors() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:65
¶unsigned int getNumInstructions() const
unsigned int getNumInstructions() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:71
¶unsigned int getNumPredecessors() const
unsigned int getNumPredecessors() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:64
¶size_t getNumSuccessors() const
size_t getNumSuccessors() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:61
¶bool isExecuted() const
bool isExecuted() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:113
¶bool isExecuting() const
bool isExecuting() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:110
¶bool isPending() const
bool isPending() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:104
¶bool isReady() const
bool isReady() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:109
¶bool isWaiting() const
bool isWaiting() const
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:100
¶void onGroupExecuted()
void onGroupExecuted()
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:129
¶void onGroupIssued(const llvm::mca::InstRef& IR,
bool ShouldUpdateCriticalDep)
void onGroupIssued(const llvm::mca::InstRef& IR,
bool ShouldUpdateCriticalDep)
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:115
Parameters
- const llvm::mca::InstRef& IR
- bool ShouldUpdateCriticalDep
¶void onInstructionExecuted(
const llvm::mca::InstRef& IR)
void onInstructionExecuted(
const llvm::mca::InstRef& IR)
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:163
Parameters
- const llvm::mca::InstRef& IR
¶void onInstructionIssued(
const llvm::mca::InstRef& IR)
void onInstructionIssued(
const llvm::mca::InstRef& IR)
Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:135
Parameters
- const llvm::mca::InstRef& IR