LLVM 20.0.0git
|
#include "llvm/MCA/Stages/InOrderIssueStage.h"
Public Member Functions | |
InOrderIssueStage (const MCSubtargetInfo &STI, RegisterFile &PRF, CustomBehaviour &CB, LSUnitBase &LSU) | |
unsigned | getIssueWidth () const |
bool | isAvailable (const InstRef &) const override |
Returns true if it can execute IR during this cycle. | |
bool | hasWorkToComplete () const override |
Returns true if some instructions are still executing this stage. | |
Error | execute (InstRef &IR) override |
The primary action that this stage performs on instruction IR. | |
Error | cycleStart () override |
Called once at the start of each cycle. | |
Error | cycleEnd () override |
Called once at the end of each cycle. | |
Public Member Functions inherited from llvm::mca::Stage | |
Stage ()=default | |
virtual | ~Stage () |
virtual bool | isAvailable (const InstRef &IR) const |
Returns true if it can execute IR during this cycle. | |
virtual bool | hasWorkToComplete () const =0 |
Returns true if some instructions are still executing this stage. | |
virtual Error | cycleStart () |
Called once at the start of each cycle. | |
virtual Error | cycleResume () |
Called after the pipeline is resumed from pausing state. | |
virtual Error | cycleEnd () |
Called once at the end of each cycle. | |
virtual Error | execute (InstRef &IR)=0 |
The primary action that this stage performs on instruction IR. | |
void | setNextInSequence (Stage *NextStage) |
bool | checkNextStage (const InstRef &IR) const |
Error | moveToTheNextStage (InstRef &IR) |
Called when an instruction is ready to move the next pipeline stage. | |
void | addListener (HWEventListener *Listener) |
Add a listener to receive callbacks during the execution of this stage. | |
template<typename EventT > | |
void | notifyEvent (const EventT &Event) const |
Notify listeners of a particular hardware event. | |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::mca::Stage | |
const std::set< HWEventListener * > & | getListeners () const |
Definition at line 54 of file InOrderIssueStage.h.
llvm::mca::InOrderIssueStage::InOrderIssueStage | ( | const MCSubtargetInfo & | STI, |
RegisterFile & | PRF, | ||
CustomBehaviour & | CB, | ||
LSUnitBase & | LSU | ||
) |
Definition at line 46 of file InOrderIssueStage.cpp.
|
overridevirtual |
Called once at the end of each cycle.
Reimplemented from llvm::mca::Stage.
Definition at line 439 of file InOrderIssueStage.cpp.
References llvm::mca::RegisterFile::cycleEnd(), and llvm::mca::StallInfo::cycleEnd().
|
overridevirtual |
Called once at the start of each cycle.
This can be used as a setup phase to prepare for the executions during the cycle.
Reimplemented from llvm::mca::Stage.
Definition at line 397 of file InOrderIssueStage.cpp.
References assert(), llvm::mca::StallInfo::clear(), llvm::mca::LSUnitBase::cycleEvent(), llvm::mca::ResourceManager::cycleEvent(), llvm::mca::RegisterFile::cycleStart(), E, llvm::mca::StallInfo::getCyclesLeft(), llvm::mca::StallInfo::getInstruction(), getIssueWidth(), IR, and llvm::mca::StallInfo::isValid().
|
overridevirtual |
The primary action that this stage performs on instruction IR.
Implements llvm::mca::Stage.
Definition at line 198 of file InOrderIssueStage.cpp.
References llvm::mca::LSUnitBase::dispatch(), E, IR, llvm::mca::InstructionBase::isMemOp(), llvm::mca::StallInfo::isValid(), and llvm::mca::Instruction::setLSUTokenID().
unsigned llvm::mca::InOrderIssueStage::getIssueWidth | ( | ) | const |
Definition at line 52 of file InOrderIssueStage.cpp.
References llvm::MCSubtargetInfo::getSchedModel(), and llvm::MCSchedModel::IssueWidth.
Referenced by cycleStart(), and isAvailable().
|
overridevirtual |
Returns true if some instructions are still executing this stage.
Implements llvm::mca::Stage.
Definition at line 56 of file InOrderIssueStage.cpp.
References llvm::mca::StallInfo::isValid().
Returns true if it can execute IR during this cycle.
Reimplemented from llvm::mca::Stage.
Definition at line 60 of file InOrderIssueStage.cpp.
References llvm::mca::InstructionBase::getBeginGroup(), getIssueWidth(), llvm::mca::InstructionBase::getNumMicroOps(), IR, and llvm::mca::StallInfo::isValid().