LLVM 20.0.0git
|
A MachineSchedStrategy implementation for PowerPC post RA scheduling. More...
#include "Target/PowerPC/PPCMachineScheduler.h"
Public Member Functions | |
PPCPostRASchedStrategy (const MachineSchedContext *C) | |
Public Member Functions inherited from llvm::PostGenericScheduler | |
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. | |
bool | shouldTrackPressure () const override |
PostRA scheduling does not track pressure. | |
void | initialize (ScheduleDAGMI *Dag) override |
Initialize the strategy after building the DAG for a new region. | |
void | registerRoots () override |
Notify this strategy that all roots have been released (including those that depend on EntrySU or ExitSU). | |
SUnit * | pickNode (bool &IsTopNode) override |
Pick the next node to schedule. | |
SUnit * | pickNodeBidirectional (bool &IsTopNode) |
Pick the best candidate node from either the top or bottom queue. | |
void | scheduleTree (unsigned SubtreeID) override |
Scheduler callback to notify that a new subtree is scheduled. | |
void | schedNode (SUnit *SU, bool IsTopNode) override |
Called after ScheduleDAGMI has scheduled an instruction and updated scheduled/remaining flags in the DAG nodes. | |
void | releaseTopNode (SUnit *SU) override |
When all predecessor dependencies have been resolved, free this node for top-down scheduling. | |
void | releaseBottomNode (SUnit *SU) override |
When all successor dependencies have been resolved, free this node for bottom-up scheduling. | |
Public Member Functions inherited from llvm::MachineSchedStrategy | |
virtual | ~MachineSchedStrategy ()=default |
virtual void | initPolicy (MachineBasicBlock::iterator Begin, MachineBasicBlock::iterator End, unsigned NumRegionInstrs) |
Optionally override the per-region scheduling policy. | |
virtual void | dumpPolicy () const |
virtual bool | shouldTrackPressure () const |
Check if pressure tracking is needed before building the DAG and initializing this strategy. | |
virtual bool | shouldTrackLaneMasks () const |
Returns true if lanemasks should be tracked. | |
virtual bool | doMBBSchedRegionsTopDown () const |
virtual void | initialize (ScheduleDAGMI *DAG)=0 |
Initialize the strategy after building the DAG for a new region. | |
virtual void | enterMBB (MachineBasicBlock *MBB) |
Tell the strategy that MBB is about to be processed. | |
virtual void | leaveMBB () |
Tell the strategy that current MBB is done. | |
virtual void | registerRoots () |
Notify this strategy that all roots have been released (including those that depend on EntrySU or ExitSU). | |
virtual SUnit * | pickNode (bool &IsTopNode)=0 |
Pick the next node to schedule, or return NULL. | |
virtual void | scheduleTree (unsigned SubtreeID) |
Scheduler callback to notify that a new subtree is scheduled. | |
virtual void | schedNode (SUnit *SU, bool IsTopNode)=0 |
Notify MachineSchedStrategy that ScheduleDAGMI has scheduled an instruction and updated scheduled/remaining flags in the DAG nodes. | |
virtual void | releaseTopNode (SUnit *SU)=0 |
When all predecessor dependencies have been resolved, free this node for top-down scheduling. | |
virtual void | releaseBottomNode (SUnit *SU)=0 |
When all successor dependencies have been resolved, free this node for bottom-up scheduling. | |
Protected Member Functions | |
void | initialize (ScheduleDAGMI *Dag) override |
Initialize the strategy after building the DAG for a new region. | |
SUnit * | pickNode (bool &IsTopNode) override |
Pick the next node to schedule. | |
void | enterMBB (MachineBasicBlock *MBB) override |
Tell the strategy that MBB is about to be processed. | |
void | leaveMBB () override |
Tell the strategy that current MBB is done. | |
bool | tryCandidate (SchedCandidate &Cand, SchedCandidate &TryCand) override |
Apply a set of heuristics to a new candidate for PostRA scheduling. | |
bool | biasAddiCandidate (SchedCandidate &Cand, SchedCandidate &TryCand) const |
Protected Member Functions inherited from llvm::PostGenericScheduler | |
virtual bool | tryCandidate (SchedCandidate &Cand, SchedCandidate &TryCand) |
Apply a set of heuristics to a new candidate for PostRA scheduling. | |
void | pickNodeFromQueue (SchedBoundary &Zone, 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. | |
void | traceCandidate (const SchedCandidate &Cand) |
A MachineSchedStrategy implementation for PowerPC post RA scheduling.
Definition at line 36 of file PPCMachineScheduler.h.
|
inline |
Definition at line 38 of file PPCMachineScheduler.h.
|
protected |
Definition at line 165 of file PPCMachineScheduler.cpp.
References EnableAddiHeuristic, isADDIInstr(), llvm::GenericSchedulerBase::SchedCandidate::Reason, and llvm::GenericSchedulerBase::Stall.
Referenced by tryCandidate().
|
overrideprotectedvirtual |
Tell the strategy that MBB is about to be processed.
Reimplemented from llvm::MachineSchedStrategy.
Definition at line 232 of file PPCMachineScheduler.cpp.
References llvm::MachineSchedStrategy::enterMBB(), and MBB.
|
overrideprotectedvirtual |
Initialize the strategy after building the DAG for a new region.
Reimplemented from llvm::PostGenericScheduler.
Definition at line 242 of file PPCMachineScheduler.cpp.
References llvm::PostGenericScheduler::initialize().
|
overrideprotectedvirtual |
Tell the strategy that current MBB is done.
Reimplemented from llvm::MachineSchedStrategy.
Definition at line 237 of file PPCMachineScheduler.cpp.
References llvm::MachineSchedStrategy::leaveMBB().
Pick the next node to schedule.
Reimplemented from llvm::PostGenericScheduler.
Definition at line 247 of file PPCMachineScheduler.cpp.
References llvm::PostGenericScheduler::pickNode().
|
overrideprotectedvirtual |
Apply a set of heuristics to a new candidate for PostRA scheduling.
Cand | provides the policy and current best candidate. |
TryCand | refers to the next SUnit candidate, otherwise uninitialized. |
true
if TryCand is better than Cand (Reason is NOT NoCand) Reimplemented from llvm::PostGenericScheduler.
Definition at line 177 of file PPCMachineScheduler.cpp.
References biasAddiCandidate(), llvm::GenericSchedulerBase::Cluster, llvm::GenericSchedulerBase::SchedResourceDelta::CritResources, llvm::PostGenericScheduler::DAG, llvm::GenericSchedulerBase::SchedResourceDelta::DemandedResources, llvm::SchedBoundary::getLatencyStallCycles(), llvm::ScheduleDAGMI::getNextClusterSucc(), llvm::GenericSchedulerBase::SchedCandidate::isValid(), llvm::GenericSchedulerBase::NoCand, llvm::SUnit::NodeNum, llvm::GenericSchedulerBase::NodeOrder, llvm::GenericSchedulerBase::SchedCandidate::Policy, llvm::GenericSchedulerBase::SchedCandidate::Reason, llvm::GenericSchedulerBase::CandPolicy::ReduceLatency, llvm::GenericSchedulerBase::SchedCandidate::ResDelta, llvm::GenericSchedulerBase::ResourceDemand, llvm::GenericSchedulerBase::ResourceReduce, llvm::GenericSchedulerBase::Stall, llvm::GenericSchedulerBase::SchedCandidate::SU, llvm::PostGenericScheduler::Top, llvm::tryGreater(), llvm::tryLatency(), and llvm::tryLess().