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