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

Methods

MemoryGroup()

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:55

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

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:59

Parameters

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()

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:181

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()

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:186

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

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:75

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

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:78

unsigned int getNumExecuted() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:73

unsigned int getNumExecutedPredecessors() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:68

unsigned int getNumExecuting() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:72

unsigned int getNumExecutingPredecessors() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:65

unsigned int getNumInstructions() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:71

unsigned int getNumPredecessors() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:64

size_t getNumSuccessors() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:61

bool isExecuted() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:113

bool isExecuting() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:110

bool isPending() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:104

bool isReady() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:109

bool isWaiting() const

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:100

void onGroupExecuted()

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:129

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)

Declared at: llvm/include/llvm/MCA/HardwareUnits/LSUnit.h:163

Parameters

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