14 #ifndef LLVM_LIB_TARGET_AMDGPU_GCNSCHEDSTRATEGY_H 15 #define LLVM_LIB_TARGET_AMDGPU_GCNSCHEDSTRATEGY_H 22 class SIMachineFunctionInfo;
33 SUnit *pickNodeBidirectional(
bool &IsTopNode);
42 unsigned SGPRPressure,
unsigned VGPRPressure);
44 unsigned SGPRExcessLimit;
45 unsigned VGPRExcessLimit;
46 unsigned SGPRCriticalLimit;
47 unsigned VGPRCriticalLimit;
49 unsigned TargetOccupancy;
70 unsigned StartingOccupancy;
73 unsigned MinOccupancy;
83 MachineBasicBlock::iterator>, 32> Regions;
103 std::unique_ptr<MachineSchedStrategy> S);
105 void schedule()
override;
107 void finalizeSchedule()
override;
112 #endif // GCNSCHEDSTRATEGY_H
SUnit * pickNode(bool &IsTopNode) override
Pick the best node to balance the schedule. Implements MachineSchedStrategy.
Each Scheduling boundary is associated with ready queues.
This class represents lattice values for constants.
This is a minimal scheduler strategy.
void setTargetOccupancy(unsigned Occ)
ScheduleDAGMI is an implementation of ScheduleDAGInstrs that simply schedules machine instructions ac...
ScheduleDAGMILive is an implementation of ScheduleDAGInstrs that schedules machine instructions while...
MachineInstrBundleIterator< MachineInstr > iterator
friend class GCNScheduleDAGMILive
Store the state used by GenericScheduler heuristics, required for the lifetime of one invocation of p...
Track the current register pressure at some position in the instruction stream, and remember the high...
Policy for scheduling the next instruction in the candidate's zone.
GenericScheduler shrinks the unscheduled zone using heuristics to balance the schedule.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
This class keeps track of the SPI_SP_INPUT_ADDR config register, which tells the hardware which inter...
MachineSchedContext provides enough context from the MachineScheduler pass for the target to instanti...
GCNMaxOccupancySchedStrategy(const MachineSchedContext *C)
void initialize(ScheduleDAGMI *DAG) override
Initialize the strategy after building the DAG for a new region.
Scheduling unit. This is a node in the scheduling DAG.