#include "llvm/MCA/Stages/ExecuteStage.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Support/Debug.h"
#define DEBUG_TYPE …
namespace llvm {
namespace mca {
HWStallEvent::GenericEventType toHWStallEventType(Scheduler::Status Status) { … }
bool ExecuteStage::isAvailable(const InstRef &IR) const { … }
Error ExecuteStage::issueInstruction(InstRef &IR) { … }
Error ExecuteStage::issueReadyInstructions() { … }
Error ExecuteStage::cycleStart() { … }
Error ExecuteStage::cycleEnd() { … }
#ifndef NDEBUG
static void verifyInstructionEliminated(const InstRef &IR) {
const Instruction &Inst = *IR.getInstruction();
assert(Inst.isEliminated() && "Instruction was not eliminated!");
assert(Inst.isReady() && "Instruction in an inconsistent state!");
assert(!Inst.getMayLoad() && !Inst.getMayStore() &&
"Cannot eliminate a memory op!");
}
#endif
Error ExecuteStage::handleInstructionEliminated(InstRef &IR) { … }
Error ExecuteStage::execute(InstRef &IR) { … }
void ExecuteStage::notifyInstructionExecuted(const InstRef &IR) const { … }
void ExecuteStage::notifyInstructionPending(const InstRef &IR) const { … }
void ExecuteStage::notifyInstructionReady(const InstRef &IR) const { … }
void ExecuteStage::notifyResourceAvailable(const ResourceRef &RR) const { … }
void ExecuteStage::notifyInstructionIssued(
const InstRef &IR, MutableArrayRef<ResourceUse> Used) const { … }
void ExecuteStage::notifyReservedOrReleasedBuffers(const InstRef &IR,
bool Reserved) const { … }
}
}