14#ifndef LLVM_LIB_TARGET_AMDGPU_R600MACHINESCHEDULER_H
15#define LLVM_LIB_TARGET_AMDGPU_R600MACHINESCHEDULER_H
23struct R600RegisterInfo;
51 std::vector<SUnit *> Available[IDLast], Pending[IDLast];
52 std::vector<SUnit *> AvailableAlus[AluLast];
53 std::vector<SUnit *> PhysicalRegCopy;
57 InstKind NextInstKind;
59 unsigned AluInstCount;
60 unsigned FetchInstCount;
62 int InstKindLimit[IDLast];
64 int OccupiedSlotsMask;
77 std::vector<MachineInstr *> InstructionsGroupCandidate;
80 int getInstKind(
SUnit *SU);
82 AluKind getAluKind(
SUnit *SU)
const;
84 unsigned AvailablesAluCount()
const;
85 SUnit *AttemptFillSlot (
unsigned Slot,
bool AnyAlu);
86 void PrepareNextSlot();
87 SUnit *PopInst(std::vector<SUnit*> &Q,
bool AnyALU);
91 SUnit* pickOther(
int QID);
92 void MoveUnits(std::vector<SUnit *> &QSrc, std::vector<SUnit *> &QDst);
Representation of each machine instruction.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
MachineSchedStrategy - Interface to the scheduling algorithm used by ScheduleDAGMI.
~R600SchedStrategy() override=default
void initialize(ScheduleDAGMI *dag) override
Initialize the strategy after building the DAG for a new region.
SUnit * pickNode(bool &IsTopNode) override
Pick the next node to schedule, or return NULL.
void releaseBottomNode(SUnit *SU) override
When all successor dependencies have been resolved, free this node for bottom-up scheduling.
R600SchedStrategy()=default
void releaseTopNode(SUnit *SU) override
When all predecessor dependencies have been resolved, free this node for top-down scheduling.
void schedNode(SUnit *SU, bool IsTopNode) override
Notify MachineSchedStrategy that ScheduleDAGMI has scheduled an instruction and updated scheduled/rem...
Wrapper class representing virtual and physical registers.
Scheduling unit. This is a node in the scheduling DAG.
ScheduleDAGMILive is an implementation of ScheduleDAGInstrs that schedules machine instructions while...
ScheduleDAGMI is an implementation of ScheduleDAGInstrs that simply schedules machine instructions ac...
This is an optimization pass for GlobalISel generic memory operations.