The ScheduleDAGInstrs class
The whole scheduling process in the MachineScheduler
pass is driven by a ScheduleDAGInstrs
instance. The ScheduleDAGInstrs
class encapsulates both the DDG and the scheduling strategy used. In other words, this class is responsible for building the DDG and then scheduling it using the scheduling strategy it has been instantiated with.
The MachineScheduler
pass acts as a simple driver around the methods of the ScheduleDAGInstrs
instance that is provided to it via the MachineScheduler::createMachineScheduler
method.
By default, this method creates a ScheduleDAGMILive
instance, which is a subclass of the ScheduleDAGInstrs
class that is tweaked to schedule MachineInstr
instances and keep track of the register liveness (and register pressure) at the same time.
You can change this default by overriding the createMachineScheduler
method of your TargetPassConfig
class. This override is your main entry point to tweaking the type of ScheduleDAGInstrs
subclass...