|
LLVM
4.0.0
|
PostGenericScheduler - Interface to the scheduling algorithm used by ScheduleDAGMI. More...
#include <MachineScheduler.h>
Public Member Functions | |
| PostGenericScheduler (const MachineSchedContext *C) | |
| ~PostGenericScheduler () override=default | |
| void | initPolicy (MachineBasicBlock::iterator Begin, MachineBasicBlock::iterator End, unsigned NumRegionInstrs) override |
| Optionally override the per-region scheduling policy. More... | |
| bool | shouldTrackPressure () const override |
| PostRA scheduling does not track pressure. More... | |
| void | initialize (ScheduleDAGMI *Dag) override |
| Initialize the strategy after building the DAG for a new region. More... | |
| void | registerRoots () override |
| Notify this strategy that all roots have been released (including those that depend on EntrySU or ExitSU). More... | |
| SUnit * | pickNode (bool &IsTopNode) override |
| Pick the next node to schedule. More... | |
| void | scheduleTree (unsigned SubtreeID) override |
| Scheduler callback to notify that a new subtree is scheduled. More... | |
| void | schedNode (SUnit *SU, bool IsTopNode) override |
| Called after ScheduleDAGMI has scheduled an instruction and updated scheduled/remaining flags in the DAG nodes. More... | |
| void | releaseTopNode (SUnit *SU) override |
| When all predecessor dependencies have been resolved, free this node for top-down scheduling. More... | |
| void | releaseBottomNode (SUnit *SU) override |
| When all successor dependencies have been resolved, free this node for bottom-up scheduling. More... | |
Public Member Functions inherited from llvm::MachineSchedStrategy | |
| virtual | ~MachineSchedStrategy ()=default |
| virtual void | dumpPolicy () |
| virtual bool | shouldTrackLaneMasks () const |
| Returns true if lanemasks should be tracked. More... | |
Protected Member Functions | |
| void | tryCandidate (SchedCandidate &Cand, SchedCandidate &TryCand) |
| Apply a set of heursitics to a new candidate for PostRA scheduling. More... | |
| void | pickNodeFromQueue (SchedCandidate &Cand) |
Protected Member Functions inherited from llvm::GenericSchedulerBase | |
| GenericSchedulerBase (const MachineSchedContext *C) | |
| void | setPolicy (CandPolicy &Policy, bool IsPostRA, SchedBoundary &CurrZone, SchedBoundary *OtherZone) |
| Set the CandPolicy given a scheduling zone given the current resources and latencies inside and outside the zone. More... | |
| void | traceCandidate (const SchedCandidate &Cand) |
Additional Inherited Members | |
Public Types inherited from llvm::GenericSchedulerBase | |
| enum | CandReason : uint8_t { NoCand, Only1, PhysRegCopy, RegExcess, RegCritical, Stall, Cluster, Weak, RegMax, ResourceReduce, ResourceDemand, BotHeightReduce, BotPathReduce, TopDepthReduce, TopPathReduce, NextDefUse, NodeOrder } |
| Represent the type of SchedCandidate found within a single queue. More... | |
Static Public Member Functions inherited from llvm::GenericSchedulerBase | |
| static const char * | getReasonStr (GenericSchedulerBase::CandReason Reason) |
Protected Attributes inherited from llvm::GenericSchedulerBase | |
| const MachineSchedContext * | Context |
| const TargetSchedModel * | SchedModel |
| const TargetRegisterInfo * | TRI |
| SchedRemainder | Rem |
PostGenericScheduler - Interface to the scheduling algorithm used by ScheduleDAGMI.
Callbacks from ScheduleDAGMI: initPolicy -> initialize(DAG) -> registerRoots -> pickNode ...
Definition at line 970 of file MachineScheduler.h.
|
inline |
Definition at line 976 of file MachineScheduler.h.
|
overridedefault |
|
overridevirtual |
Initialize the strategy after building the DAG for a new region.
Implements llvm::MachineSchedStrategy.
Definition at line 3179 of file MachineScheduler.cpp.
References llvm::TargetInstrInfo::CreateTargetMIHazardRecognizer(), llvm::tgtok::Dag, llvm::TargetSubtargetInfo::getInstrInfo(), llvm::TargetSchedModel::getInstrItineraries(), llvm::ScheduleDAGInstrs::getSchedModel(), llvm::MachineFunction::getSubtarget(), llvm::SchedRemainder::init(), llvm::ScheduleDAG::MF, llvm::GenericSchedulerBase::Rem, llvm::GenericSchedulerBase::SchedModel, llvm::ScheduleDAG::TRI, and llvm::GenericSchedulerBase::TRI.
|
inlineoverridevirtual |
Optionally override the per-region scheduling policy.
Reimplemented from llvm::MachineSchedStrategy.
Definition at line 981 of file MachineScheduler.h.
Pick the next node to schedule.
Implements llvm::MachineSchedStrategy.
Definition at line 3267 of file MachineScheduler.cpp.
References assert(), llvm::ScheduleDAGMI::bottom(), llvm::dbgs(), DEBUG, llvm::SUnit::getInstr(), llvm::SUnit::isScheduled, llvm::GenericSchedulerBase::NoCand, llvm::SUnit::NodeNum, llvm::GenericSchedulerBase::Only1, llvm::GenericSchedulerBase::SchedCandidate::Policy, llvm::GenericSchedulerBase::SchedCandidate::Reason, llvm::GenericSchedulerBase::setPolicy(), llvm::GenericSchedulerBase::SchedCandidate::SU, llvm::ScheduleDAGMI::top(), and tracePick().
|
protected |
Definition at line 3251 of file MachineScheduler.cpp.
References llvm::GenericSchedulerBase::SchedCandidate::AtTop, llvm::ReadyQueue::begin(), DEBUG, E, llvm::ReadyQueue::end(), I, llvm::GenericSchedulerBase::SchedCandidate::initResourceDelta(), llvm::GenericSchedulerBase::NoCand, llvm::GenericSchedulerBase::SchedCandidate::Policy, llvm::GenericSchedulerBase::SchedCandidate::Reason, llvm::GenericSchedulerBase::SchedModel, llvm::GenericSchedulerBase::SchedCandidate::setBest(), llvm::GenericSchedulerBase::SchedCandidate::SU, and llvm::GenericSchedulerBase::traceCandidate().
|
overridevirtual |
Notify this strategy that all roots have been released (including those that depend on EntrySU or ExitSU).
Reimplemented from llvm::MachineSchedStrategy.
Definition at line 3199 of file MachineScheduler.cpp.
References llvm::SchedRemainder::CriticalPath, llvm::dbgs(), DEBUG, llvm::DumpCriticalPathLength, E, llvm::errs(), llvm::ScheduleDAG::ExitSU, llvm::SUnit::getDepth(), I, and llvm::GenericSchedulerBase::Rem.
|
inlineoverridevirtual |
When all successor dependencies have been resolved, free this node for bottom-up scheduling.
Implements llvm::MachineSchedStrategy.
Definition at line 1009 of file MachineScheduler.h.
|
inlineoverridevirtual |
When all predecessor dependencies have been resolved, free this node for top-down scheduling.
Implements llvm::MachineSchedStrategy.
Definition at line 1002 of file MachineScheduler.h.
References llvm::SUnit::isScheduled, llvm::SchedBoundary::releaseNode(), and llvm::SUnit::TopReadyCycle.
Called after ScheduleDAGMI has scheduled an instruction and updated scheduled/remaining flags in the DAG nodes.
Implements llvm::MachineSchedStrategy.
Definition at line 3299 of file MachineScheduler.cpp.
References llvm::SUnit::TopReadyCycle.
|
inlineoverridevirtual |
Scheduler callback to notify that a new subtree is scheduled.
Reimplemented from llvm::MachineSchedStrategy.
Definition at line 996 of file MachineScheduler.h.
References llvm_unreachable.
|
inlineoverridevirtual |
PostRA scheduling does not track pressure.
Reimplemented from llvm::MachineSchedStrategy.
Definition at line 988 of file MachineScheduler.h.
|
protected |
Apply a set of heursitics to a new candidate for PostRA scheduling.
| Cand | provides the policy and current best candidate. |
| TryCand | refers to the next SUnit candidate, otherwise uninitialized. |
Definition at line 3218 of file MachineScheduler.cpp.
References llvm::GenericSchedulerBase::SchedResourceDelta::CritResources, llvm::GenericSchedulerBase::SchedResourceDelta::DemandedResources, llvm::GenericSchedulerBase::SchedCandidate::isValid(), llvm::SUnit::NodeNum, llvm::GenericSchedulerBase::NodeOrder, llvm::GenericSchedulerBase::SchedCandidate::Reason, llvm::GenericSchedulerBase::SchedCandidate::ResDelta, llvm::GenericSchedulerBase::ResourceDemand, llvm::GenericSchedulerBase::ResourceReduce, llvm::GenericSchedulerBase::Stall, llvm::GenericSchedulerBase::SchedCandidate::SU, tryGreater(), tryLatency(), and tryLess().
1.8.6