15 #ifndef LLVM_LIB_TARGET_AMDGPU_R600MACHINESCHEDULER_H 16 #define LLVM_LIB_TARGET_AMDGPU_R600MACHINESCHEDULER_H 54 std::vector<SUnit *> Available[IDLast], Pending[IDLast];
55 std::vector<SUnit *> AvailableAlus[AluLast];
56 std::vector<SUnit *> PhysicalRegCopy;
60 InstKind NextInstKind;
62 unsigned AluInstCount;
63 unsigned FetchInstCount;
65 int InstKindLimit[IDLast];
80 std::vector<MachineInstr *> InstructionsGroupCandidate;
83 int getInstKind(
SUnit *SU);
85 AluKind getAluKind(
SUnit *SU)
const;
87 unsigned AvailablesAluCount()
const;
88 SUnit *AttemptFillSlot (
unsigned Slot,
bool AnyAlu);
89 void PrepareNextSlot();
90 SUnit *PopInst(std::vector<SUnit*> &Q,
bool AnyALU);
94 SUnit* pickOther(
int QID);
95 void MoveUnits(std::vector<SUnit *> &QSrc, std::vector<SUnit *> &QDst);
100 #endif // LLVM_LIB_TARGET_AMDGPU_R600MACHINESCHEDULER_H void schedNode(SUnit *SU, bool IsTopNode) override
Notify MachineSchedStrategy that ScheduleDAGMI has scheduled an instruction and updated scheduled/rem...
~R600SchedStrategy() override=default
This class represents lattice values for constants.
void initialize(ScheduleDAGMI *dag) override
Initialize the strategy after building the DAG for a new region.
ScheduleDAGMI is an implementation of ScheduleDAGInstrs that simply schedules machine instructions ac...
ScheduleDAGMILive is an implementation of ScheduleDAGInstrs that schedules machine instructions while...
void releaseBottomNode(SUnit *SU) override
When all successor dependencies have been resolved, free this node for bottom-up scheduling.
R600SchedStrategy()=default
SUnit * pickNode(bool &IsTopNode) override
Pick the next node to schedule, or return NULL.
void releaseTopNode(SUnit *SU) override
When all predecessor dependencies have been resolved, free this node for top-down scheduling...
MachineRegisterInfo - Keep track of information for virtual and physical registers, including vreg register classes, use/def chains for registers, etc.
Representation of each machine instruction.
MachineSchedStrategy - Interface to the scheduling algorithm used by ScheduleDAGMI.
Scheduling unit. This is a node in the scheduling DAG.