17#ifndef LLVM_MCA_STAGES_EXECUTESTAGE_H
18#define LLVM_MCA_STAGES_EXECUTESTAGE_H
28class LLVM_ABI ExecuteStage final :
public Stage {
31 unsigned NumDispatchedOpcodes;
32 unsigned NumIssuedOpcodes;
35 bool EnablePressureEvents;
41 Error issueReadyInstructions();
46 ExecuteStage(
const ExecuteStage &
Other) =
delete;
47 ExecuteStage &operator=(
const ExecuteStage &
Other) =
delete;
52 : HWS(S), NumDispatchedOpcodes(0), NumIssuedOpcodes(0),
53 EnablePressureEvents(ShouldPerformBottleneckAnalysis) {}
62 bool isAvailable(
const InstRef &
IR)
const override;
71 Error cycleStart()
override;
72 Error cycleEnd()
override;
75 void notifyInstructionIssued(
const InstRef &
IR,
77 void notifyInstructionExecuted(
const InstRef &
IR)
const;
78 void notifyInstructionPending(
const InstRef &
IR)
const;
79 void notifyInstructionReady(
const InstRef &
IR)
const;
80 void notifyResourceAvailable(
const ResourceRef &RR)
const;
Legalize the Machine IR a function s Machine IR
A scheduler for Processor Resource Units and Processor Resource Groups.
This file defines abstractions used by the Pipeline to model register reads, register writes and inst...
This file defines a stage.
Lightweight error class with error context and mandatory checking.
Represent a mutable reference to an array (0 or more elements consecutively in memory),...
bool hasWorkToComplete() const override
Returns true if some instructions are still executing this stage.
ExecuteStage(Scheduler &S)
ExecuteStage(Scheduler &S, bool ShouldPerformBottleneckAnalysis)
An InstRef contains both a SourceMgr index and Instruction pair.
Class Scheduler is responsible for issuing instructions to pipeline resources.
std::pair< uint64_t, uint64_t > ResourceRef
This is an optimization pass for GlobalISel generic memory operations.