15 #ifndef LLVM_LIB_TARGET_R600_R600MACHINESCHEDULER_H
16 #define LLVM_LIB_TARGET_R600_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];
71 DAG(nullptr), TII(nullptr), TRI(nullptr), MRI(nullptr) {
83 std::vector<MachineInstr *> InstructionsGroupCandidate;
86 int getInstKind(
SUnit *SU);
88 AluKind getAluKind(
SUnit *SU)
const;
90 unsigned AvailablesAluCount()
const;
91 SUnit *AttemptFillSlot (
unsigned Slot,
bool AnyAlu);
92 void PrepareNextSlot();
93 SUnit *PopInst(std::vector<SUnit*> &Q,
bool AnyALU);
97 SUnit* pickOther(
int QID);
98 void MoveUnits(std::vector<SUnit *> &QSrc, std::vector<SUnit *> &QDst);
void schedNode(SUnit *SU, bool IsTopNode) override
Notify MachineSchedStrategy that ScheduleDAGMI has scheduled an instruction and updated scheduled/rem...
Interface definition for R600InstrInfo.
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.
Reg
All possible values of the reg field in the ModR/M byte.
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.
virtual ~R600SchedStrategy()
SUnit - Scheduling unit. This is a node in the scheduling DAG.