#include "llvm/MCA/Stages/InOrderIssueStage.h"
#include "llvm/MCA/HardwareUnits/LSUnit.h"
#include "llvm/MCA/HardwareUnits/RegisterFile.h"
#include "llvm/MCA/HardwareUnits/RetireControlUnit.h"
#include "llvm/MCA/Instruction.h"
#define DEBUG_TYPE …
namespace llvm {
namespace mca {
void StallInfo::clear() { … }
void StallInfo::update(const InstRef &Inst, unsigned Cycles, StallKind SK) { … }
void StallInfo::cycleEnd() { … }
InOrderIssueStage::InOrderIssueStage(const MCSubtargetInfo &STI,
RegisterFile &PRF, CustomBehaviour &CB,
LSUnitBase &LSU)
: … { … }
unsigned InOrderIssueStage::getIssueWidth() const { … }
bool InOrderIssueStage::hasWorkToComplete() const { … }
bool InOrderIssueStage::isAvailable(const InstRef &IR) const { … }
static bool hasResourceHazard(const ResourceManager &RM, const InstRef &IR) { … }
static unsigned findFirstWriteBackCycle(const InstRef &IR) { … }
static unsigned checkRegisterHazard(const RegisterFile &PRF,
const MCSubtargetInfo &STI,
const InstRef &IR) { … }
bool InOrderIssueStage::canExecute(const InstRef &IR) { … }
static void addRegisterReadWrite(RegisterFile &PRF, Instruction &IS,
unsigned SourceIndex,
const MCSubtargetInfo &STI,
SmallVectorImpl<unsigned> &UsedRegs) { … }
void InOrderIssueStage::notifyInstructionIssued(const InstRef &IR,
ArrayRef<ResourceUse> UsedRes) { … }
void InOrderIssueStage::notifyInstructionDispatched(
const InstRef &IR, unsigned Ops, ArrayRef<unsigned> UsedRegs) { … }
void InOrderIssueStage::notifyInstructionExecuted(const InstRef &IR) { … }
void InOrderIssueStage::notifyInstructionRetired(const InstRef &IR,
ArrayRef<unsigned> FreedRegs) { … }
llvm::Error InOrderIssueStage::execute(InstRef &IR) { … }
llvm::Error InOrderIssueStage::tryIssue(InstRef &IR) { … }
void InOrderIssueStage::updateIssuedInst() { … }
void InOrderIssueStage::updateCarriedOver() { … }
void InOrderIssueStage::retireInstruction(InstRef &IR) { … }
void InOrderIssueStage::notifyStallEvent() { … }
llvm::Error InOrderIssueStage::cycleStart() { … }
llvm::Error InOrderIssueStage::cycleEnd() { … }
}
}