class WriteState

Declaration

class WriteState { /* full declaration omitted */ };

Description

Tracks uses of a register definition (e.g. register write). Each implicit/explicit register write is associated with an instance of this class. A WriteState object tracks the dependent users of a register write. It also tracks how many cycles are left before the write back stage.

Declared at: llvm/include/llvm/MCA/Instruction.h:197

Member Variables

private const llvm::mca::WriteDescriptor* WD
private int CyclesLeft
private llvm::MCPhysReg RegisterID
private unsigned int PRFID
private bool ClearsSuperRegs
private bool WritesZero
private bool IsEliminated
private const llvm::mca::WriteState* DependentWrite
private llvm::mca::WriteState* PartialWrite
private unsigned int DependentWriteCyclesLeft
private llvm::mca::CriticalDependency CRD
private SmallVector<std::pair<ReadState*, int>, 4> Users

Method Overview

Methods

WriteState(const llvm::mca::WriteState& Other)

Declared at: llvm/include/llvm/MCA/Instruction.h:255

Parameters

const llvm::mca::WriteState& Other

WriteState(const llvm::mca::WriteDescriptor& Desc,
           llvm::MCPhysReg RegID,
           bool clearsSuperRegs = false,
           bool writesZero = false)

Declared at: llvm/include/llvm/MCA/Instruction.h:248

Parameters

const llvm::mca::WriteDescriptor& Desc
llvm::MCPhysReg RegID
bool clearsSuperRegs = false
bool writesZero = false

void addUser(unsigned int IID,
             llvm::mca::WriteState* Use)

Declared at: llvm/include/llvm/MCA/Instruction.h:278

Parameters

unsigned int IID
llvm::mca::WriteState* Use

void addUser(unsigned int IID,
             llvm::mca::ReadState* Use,
             int ReadAdvance)

Declared at: llvm/include/llvm/MCA/Instruction.h:274

Parameters

unsigned int IID
llvm::mca::ReadState* Use
int ReadAdvance

bool clearsSuperRegisters() const

Declared at: llvm/include/llvm/MCA/Instruction.h:287

void cycleEvent()

Declared at: llvm/include/llvm/MCA/Instruction.h:314

void dump() const

Declared at: llvm/include/llvm/MCA/Instruction.h:318

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

Declared at: llvm/include/llvm/MCA/Instruction.h:268

int getCyclesLeft() const

Declared at: llvm/include/llvm/MCA/Instruction.h:258

const llvm::mca::WriteState* getDependentWrite()
    const

Declared at: llvm/include/llvm/MCA/Instruction.h:267

unsigned int getDependentWriteCyclesLeft() const

Declared at: llvm/include/llvm/MCA/Instruction.h:264

unsigned int getLatency() const

Declared at: llvm/include/llvm/MCA/Instruction.h:263

unsigned int getNumUsers() const

Declared at: llvm/include/llvm/MCA/Instruction.h:280

unsigned int getRegisterFileID() const

Declared at: llvm/include/llvm/MCA/Instruction.h:262

llvm::MCPhysReg getRegisterID() const

Declared at: llvm/include/llvm/MCA/Instruction.h:260

unsigned int getWriteResourceID() const

Declared at: llvm/include/llvm/MCA/Instruction.h:259

bool isEliminated() const

Declared at: llvm/include/llvm/MCA/Instruction.h:289

bool isExecuted() const

Declared at: llvm/include/llvm/MCA/Instruction.h:298

bool isReady() const

Declared at: llvm/include/llvm/MCA/Instruction.h:291

bool isWriteZero() const

Declared at: llvm/include/llvm/MCA/Instruction.h:288

void onInstructionIssued(unsigned int IID)

Declared at: llvm/include/llvm/MCA/Instruction.h:315

Parameters

unsigned int IID

void setDependentWrite(
    const llvm::mca::WriteState* Other)

Declared at: llvm/include/llvm/MCA/Instruction.h:302

Parameters

const llvm::mca::WriteState* Other

void setEliminated()

Declared at: llvm/include/llvm/MCA/Instruction.h:305

void setPRF(unsigned int PRF)

Declared at: llvm/include/llvm/MCA/Instruction.h:311

Parameters

unsigned int PRF

void setRegisterID(const llvm::MCPhysReg RegID)

Declared at: llvm/include/llvm/MCA/Instruction.h:261

Parameters

const llvm::MCPhysReg RegID

void setWriteZero()

Declared at: llvm/include/llvm/MCA/Instruction.h:304

void writeStartEvent(unsigned int IID,
                     llvm::MCPhysReg RegID,
                     unsigned int Cycles)

Declared at: llvm/include/llvm/MCA/Instruction.h:303

Parameters

unsigned int IID
llvm::MCPhysReg RegID
unsigned int Cycles