LLVM
8.0.1
|
#include "llvm/MCA/Stages/Stage.h"
Public Member Functions | |
Stage () | |
virtual | ~Stage () |
virtual bool | isAvailable (const InstRef &IR) const |
Returns true if it can execute IR during this cycle. More... | |
virtual bool | hasWorkToComplete () const =0 |
Returns true if some instructions are still executing this stage. More... | |
virtual Error | cycleStart () |
Called once at the start of each cycle. More... | |
virtual Error | cycleEnd () |
Called once at the end of each cycle. More... | |
virtual Error | execute (InstRef &IR)=0 |
The primary action that this stage performs on instruction IR. More... | |
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. More... | |
void | addListener (HWEventListener *Listener) |
Add a listener to receive callbacks during the execution of this stage. More... | |
template<typename EventT > | |
void | notifyEvent (const EventT &Event) const |
Notify listeners of a particular hardware event. More... | |
Protected Member Functions | |
const std::set< HWEventListener * > & | getListeners () const |
|
virtualdefault |
Referenced by Stage().
void llvm::mca::Stage::addListener | ( | HWEventListener * | Listener | ) |
Add a listener to receive callbacks during the execution of this stage.
Definition at line 24 of file Stage.cpp.
Referenced by moveToTheNextStage().
Definition at line 63 of file Stage.h.
References isAvailable().
Referenced by llvm::mca::EntryStage::isAvailable(), and moveToTheNextStage().
|
inlinevirtual |
Called once at the end of each cycle.
Reimplemented in llvm::mca::EntryStage.
|
inlinevirtual |
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 in llvm::mca::DispatchStage, llvm::mca::ExecuteStage, llvm::mca::EntryStage, and llvm::mca::RetireStage.
The primary action that this stage performs on instruction IR.
Implemented in llvm::mca::DispatchStage, llvm::mca::ExecuteStage, llvm::mca::EntryStage, llvm::mca::InstructionTables, and llvm::mca::RetireStage.
Referenced by cycleEnd(), and moveToTheNextStage().
|
inlineprotected |
Definition at line 36 of file Stage.h.
Referenced by llvm::mca::ExecuteStage::notifyReservedOrReleasedBuffers(), and llvm::mca::ExecuteStage::notifyResourceAvailable().
|
pure virtual |
Returns true if some instructions are still executing this stage.
Implemented in llvm::mca::DispatchStage, llvm::mca::ExecuteStage, llvm::mca::EntryStage, llvm::mca::InstructionTables, and llvm::mca::RetireStage.
Referenced by isAvailable().
Returns true if it can execute IR during this cycle.
Reimplemented in llvm::mca::DispatchStage, llvm::mca::ExecuteStage, and llvm::mca::EntryStage.
Definition at line 43 of file Stage.h.
References hasWorkToComplete().
Referenced by checkNextStage().
Called when an instruction is ready to move the next pipeline stage.
Stages are responsible for moving instructions to their immediate successor stages.
Definition at line 71 of file Stage.h.
References addListener(), assert(), checkNextStage(), and execute().
Referenced by llvm::mca::ExecuteStage::cycleStart(), llvm::mca::EntryStage::execute(), llvm::mca::ExecuteStage::isAvailable(), and llvm::mca::verifyInstructionEliminated().
|
inline |
Notify listeners of a particular hardware event.
Definition at line 80 of file Stage.h.
References llvm::mca::HWEventListener::onEvent().
|
inline |
Definition at line 58 of file Stage.h.
References assert().
Referenced by llvm::mca::Pipeline::appendStage().