ScheduleDAG that tracks live intervals and register pressure.
Declared in <llvm/CodeGen/MachineScheduler.h>
class ScheduleDAGMILive
: public ScheduleDAGMI
| Name | Description |
|---|---|
ScheduleDAGMI | ScheduleDAG that schedules according to a MachineSchedStrategy. |
| Name | Description |
|---|---|
SUList | List of SUnits associated with a memory value during DAG construction. |
| Name | Description |
|---|---|
DumpDirection | The direction that should be used to dump the scheduled Sequence. |
| Name | Description |
|---|---|
ScheduleDAGMILive [constructor] | Construct a live schedule DAG for context C using strategy S. |
~ScheduleDAGMILive [destructor] [virtual] | Destroy the live schedule DAG and owned DFS result. |
operator= [deleted] | Copy assignment is deleted; ScheduleDAG is passed by reference only. |
IsReachable | IsReachable - Checks if SU is reachable from TargetSU. |
VerifyScheduledDAG | Verifies that all SUnits were scheduled and that their state is consistent. Returns the number of scheduled SUnits. |
addCustomGraphFeatures [virtual] | Adds custom features for a visualization of the ScheduleDAG. |
addEdge | Add a DAG edge to the given SU with the given predecessor dependence data. |
addMutation | Add a postprocessing step to the DAG builder. |
addSchedBarrierDeps | Adds dependencies from region instructions to the scheduling barrier. |
begin | Returns an iterator to the top of the current scheduling region. |
bottom | Return an iterator to the bottom of the unscheduled zone. |
buildSchedGraph | Builds SUnits for the current scheduling region. |
canAddEdge | True if an edge can be added from PredSU to SuccSU without creating a cycle. |
clearDAG | Clears the DAG state (between regions). |
computeCyclicCriticalPath | Compute the cyclic critical path through the DAG. |
computeDFSResult | Compute a DFSResult after DAG building is complete, and before any queue comparisons. |
doMBBSchedRegionsTopDown [virtual] | Return true to process MBB scheduling regions top-down. |
dump [virtual] | Dump the live schedule DAG to the debug stream. |
dumpNode [virtual] | Dumps a single scheduling unit for debugging. |
dumpNodeName | Dump the printable name of SU. |
end | Returns an iterator to the bottom of the current scheduling region. |
enterRegion [virtual] | Prepare the next scheduling region within a basic block. |
exitRegion [virtual] | Called when the scheduler has finished scheduling the current region. |
finalizeSchedule [virtual] | Allow targets to perform final scheduling actions at the level of the whole MachineFunction. By default does nothing. |
finishBlock [virtual] | Finish scheduling for the current basic block. |
fixupKills | Fixes register kill flags that scheduling has made invalid. |
getBotPressure | Get current register pressure for the bottom scheduled instructions. |
getBotRPTracker | Return the pressure tracker for the bottom scheduled boundary. |
getCluster | Get the specific cluster, return nullptr for InvalidClusterId. |
getClusters | Returns the array of the clusters. |
getDAGName [virtual] | Returns a label for the region of code covered by the DAG. |
getDFSResult | Return a non-null DFS result if the scheduling strategy initialized it. |
getGraphNodeLabel [virtual] | Returns a label for a DAG node that points to an instruction. |
getInstrDesc | Returns the MCInstrDesc of this SUnit. Returns NULL for SDNodes without a machine opcode. |
getLIS | Return the LiveIntervals instance for use in DAG mutators and such. |
getPressureDiff | getPressureDiff overloads |
getRegPressure | Get register pressure for the entire scheduling region before scheduling. |
getRegionCriticalPSets | Return pressure sets that were critical before scheduling. |
getSUnit | Returns an existing SUnit for this MI, or nullptr. |
getSchedClass | Resolves and cache a resolved scheduling class for an SUnit. |
getSchedModel | Gets the machine model for instruction scheduling. |
getScheduledTrees | Return the bitmask of scheduled DAG subtrees. |
getTopPressure | Get current register pressure for the top scheduled instructions. |
getTopRPTracker | Return the pressure tracker for the top scheduled boundary. |
hasVRegLiveness [virtual] | Return true if this DAG supports VReg liveness and RegPressure. |
isTrackingPressure | Return true if register pressure tracking is enabled. |
moveInstruction | Change the position of an instruction within the basic block and update live ranges and region boundary iterators. |
newSUnit | Creates a new SUnit and return a ptr to it. |
schedule [virtual] | Implement ScheduleDAGInstrs interface for scheduling a sequence of reorderable instructions. |
setDumpDirection | Sets the direction used when dumping the scheduled sequence. |
shouldScheduleSingleMIRegions | Whether regions with a single MI should be scheduled. |
startBlock | startBlock overloads |
top | Return an iterator to the top of the unscheduled zone. |
viewGraph | viewGraph overloads |
| Name | Description |
|---|---|
EntrySU | Special node for the region entry. |
ExitSU | Special node for the region exit. |
MF | Machine function |
MRI | Virtual/real register map |
SUnits | The scheduling units. |
StressSched | When true, stress-test the scheduler. |
TII | Target instruction information |
TM | Target processor |
TRI | Target processor register info |
| Name | Description |
|---|---|
Value2SUsMap | A map from ValueType to SUList, used during DAG construction, as a means of remembering which SUs depend on which memory locations. |
| Name | Description |
|---|---|
DbgValueVector | Pairs of DBG_VALUE instructions and the instructions they follow. |
| Name | Description |
|---|---|
addBarrierChain | Adds barrier-chain edges from all SUs in map, then clears the map. |
addChainDependencies | addChainDependencies overloads |
addChainDependency | Adds a chain edge between SUa and SUb, but only if both AAResults and Target fail to deny the dependency. |
addPhysRegDataDeps | Adds data dependencies for the physical-register operand at OperIdx. |
addPhysRegDeps | Adds all physical-register dependencies for the operand at OperIdx. |
addVRegDefDeps | Adds virtual-register definition dependencies for the operand at OperIdx. |
addVRegUseDeps | Adds virtual-register use dependencies for the operand at OperIdx. |
buildDAGWithRegPressure | Build the schedule DAG with register pressure tracking enabled. |
checkSchedLimit | Return false if the misched-cutoff limit has been reached. |
collectVRegUses | Record virtual-register uses of SU in the current region. |
deadDefHasNoUse | Returns true if the def register in MO has no uses. |
dumpNodeAll | Dump SU and all of its scheduling attributes. |
dumpSchedule | dump the scheduled Sequence. |
dumpScheduleTraceBottomUp | Print an execution trace of the schedule bottom-up. |
dumpScheduleTraceTopDown | Print execution trace of the schedule top-down or bottom-up. |
findRootsAndBiasEdges | Find top/bottom roots and bias weak edges before queue setup. |
getAAForDep | Returns a (possibly null) pointer to the current BatchAAResults. |
getLaneMaskForMO | Returns a mask for which lanes get read/written by the given (register) machine operand. |
initQueues | Release ExitSU predecessors and setup scheduler queues. |
initRegPressure | Initialize register pressure trackers for the current region. |
initSUnits | Creates an SUnit for each instruction in the current region. |
placeDebugValues | Reinsert debug_values recorded in ScheduleDAGInstrs::DbgValues. |
postProcessDAG | Apply each ScheduleDAGMutation step in order. This allows different instances of ScheduleDAGMI to perform custom DAG postprocessing. |
releasePred | Release predecessor edge PredEdge of SU after scheduling. |
releasePredecessors | Release all predecessors of SU after it is scheduled. |
releaseSucc | Release successor edge SuccEdge of SU after scheduling. |
releaseSuccessors | Release all successors of SU after it is scheduled. |
scheduleMI | Move an instruction and update register pressure. |
updatePressureDiffs | Update pressure diffs for the given live uses. |
updateQueues | Update scheduler DAG and queues after scheduling an instruction. |
updateScheduledPressure | Update scheduled pressure after placing SU. |
| Name | Description |
|---|---|
AA | Alias analysis used while building memory dependencies. |
AAForDep | Optional batch alias-analysis results used while adding memory deps. |
BB | The block in which to insert instructions |
BarrierChain | Generic side-effecting instruction that acts as a scheduling barrier. |
BotPressure | The bottom of the unscheduled zone. |
BotRPTracker | Pressure tracker for instructions scheduled from the bottom. |
CanHandleTerminators | True if this scheduler can safely include terminators as DAG nodes. |
Clusters | Clusters of related SUnits discovered while building the DAG. |
CurrentBottom | The bottom of the unscheduled zone. |
CurrentTop | The top of the unscheduled zone. |
CurrentVRegDefs | Tracks the last instruction(s) in this region defining each virtual register. There may be multiple current definitions for a register with disjunct lanemasks. |
CurrentVRegUses | Tracks the last instructions in this region using each virtual register. |
DFSResult | Information about DAG subtrees. If DFSResult is NULL, then SchedulerTrees will be empty. |
DbgValues | Remember instruction that precedes DBG_VALUE. These are generated by buildSchedGraph but persist so they can be referenced when emitting the final schedule. |
Defs | Map from register units to SUnits that define them in the current walk. |
DumpDir | Direction used when dumping the schedule. |
FirstDbgValue | First DBG_VALUE instruction preceding the scheduled region, if any. |
LIS | Live intervals used by DAG mutations and pressure tracking. |
LiveRegionEnd | End of the live scheduling region used for pressure tracking. |
LiveRegs | Set of live physical registers for updating kill flags. |
MBFI | Block frequencies used by scheduling heuristics. |
MFI | Frame information for the function. |
MISUnitMap | After calling BuildSchedGraph, each machine instruction in the current scheduling region is mapped to an SUnit. |
MLI | Loop information for the function. |
MemOpsProcessed | Number of memory operations processed while building the DAG. |
Mutations | Ordered list of DAG postprocessing steps. |
NumRegionInstrs | Instructions in this region (distance(RegionBegin, RegionEnd)). |
RPTracker | Tracker covering pressure for the entire DAG region. |
RegClassInfo | Cached register-class information for pressure heuristics. |
RegPressure | Register pressure for the entire scheduling region before scheduling. |
RegionBegin | The beginning of the range to be scheduled. |
RegionCriticalPSets | Pressure sets that already exceed the target limit before scheduling. |
RegionEnd | The end of the range to be scheduled. |
RemoveKillFlags | True if the DAG builder should remove kill flags (in preparation for rescheduling). |
SUPressureDiffs | Per-SUnit pressure-change summaries used during bottom-up scheduling. |
SchedImpl | Strategy that selects the next node to schedule. |
SchedModel | TargetSchedModel provides an interface to the machine model. |
ScheduleSingleMIRegions | True if regions with a single MI should be scheduled. |
ScheduledTrees | Bitmask of DAG subtrees that have already been scheduled. |
ShouldTrackLaneMasks | Whether lane masks are tracked for independent subregister writes. |
ShouldTrackPressure | Register pressure in this region computed by initRegPressure. |
TopPressure | The top of the unscheduled zone. |
TopRPTracker | Pressure tracker for instructions scheduled from the top. |
Topo | Topo - A topological ordering for SUnits which permits fast IsReachable and similar queries. |
TrackLaneMasks | Whether lane masks should get tracked. |
UnknownValue | For an unanalyzable memory access, this Value is used in maps. |
Uses | Map from register units to SUnits that use them in the current walk. |
VRegUses | Maps vregs to the SUnits of their uses in the current scheduling region. |
| Name | Description |
|---|---|
createSchedLive | Create the standard converging machine scheduler. This will be used as the default scheduler if the target does not set a default. Adds default DAG mutations. |
fuseInstructionPair | Fuse two scheduling units so they are scheduled back to back. |
| Name | Description |
|---|---|
VLIWMachineScheduler | Extend the standard ScheduleDAGMILive to provide more context and override the top-level schedule() driver. |