Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
llvm::PostGenericScheduler Class Reference

PostGenericScheduler - Interface to the scheduling algorithm used by ScheduleDAGMI. More...

#include "llvm/CodeGen/MachineScheduler.h"

Inheritance diagram for llvm::PostGenericScheduler:
[legend]

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.
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).
SUnitpickNode (bool &IsTopNode) override
 Pick the next node to schedule.
SUnitpickNodeBidirectional (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 dumpPolicy () const
virtual bool shouldTrackLaneMasks () const
 Returns true if lanemasks should be tracked.
virtual bool doMBBSchedRegionsTopDown () const
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.

Protected Member Functions

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)
LLVM_ABI 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.
MachineSchedPolicy getPolicy () const override
void traceCandidate (const SchedCandidate &Cand)

Protected Attributes

ScheduleDAGMIDAG = nullptr
SchedBoundary Top
SchedBoundary Bot
SchedCandidate TopCand
 Candidate last picked from Top boundary.
SchedCandidate BotCand
 Candidate last picked from Bot boundary.
unsigned TopClusterID
unsigned BotClusterID
Protected Attributes inherited from llvm::GenericSchedulerBase
const MachineSchedContextContext
const TargetSchedModelSchedModel = nullptr
const TargetRegisterInfoTRI = nullptr
unsigned TopIdx = 0
unsigned BotIdx = 0
unsigned NumRegionInstrs = 0
MachineSchedPolicy RegionPolicy
SchedRemainder Rem

Additional Inherited Members

Public Types inherited from llvm::GenericSchedulerBase
enum  CandReason : uint8_t {
  NoCand , Only1 , PhysReg , RegExcess ,
  RegCritical , Stall , Cluster , Weak ,
  RegMax , ResourceReduce , ResourceDemand , BotHeightReduce ,
  BotPathReduce , TopDepthReduce , TopPathReduce , NodeOrder ,
  FirstValid
}
 Represent the type of SchedCandidate found within a single queue. More...
Static Public Member Functions inherited from llvm::GenericSchedulerBase
static const chargetReasonStr (GenericSchedulerBase::CandReason Reason)

Detailed Description

PostGenericScheduler - Interface to the scheduling algorithm used by ScheduleDAGMI.

Callbacks from ScheduleDAGMI: initPolicy -> initialize(DAG) -> registerRoots -> pickNode ...

Definition at line 1338 of file MachineScheduler.h.

Constructor & Destructor Documentation

◆ PostGenericScheduler()

◆ ~PostGenericScheduler()

llvm::PostGenericScheduler::~PostGenericScheduler ( )
overridedefault

Member Function Documentation

◆ initialize()

void PostGenericScheduler::initialize ( ScheduleDAGMI * DAG)
overridevirtual

◆ initPolicy()

◆ pickNode()

◆ pickNodeBidirectional()

◆ pickNodeFromQueue()

◆ registerRoots()

void PostGenericScheduler::registerRoots ( )
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 4353 of file MachineScheduler.cpp.

References Bot, DAG, llvm::dbgs(), llvm::DumpCriticalPathLength, llvm::errs(), llvm::SUnit::getDepth(), LLVM_DEBUG, and llvm::GenericSchedulerBase::Rem.

◆ releaseBottomNode()

void llvm::PostGenericScheduler::releaseBottomNode ( SUnit * SU)
inlineoverridevirtual

When all successor dependencies have been resolved, free this node for bottom-up scheduling.

Implements llvm::MachineSchedStrategy.

Definition at line 1387 of file MachineScheduler.h.

References Bot, BotCand, llvm::SUnit::BotReadyCycle, and llvm::SUnit::isScheduled.

◆ releaseTopNode()

void llvm::PostGenericScheduler::releaseTopNode ( SUnit * SU)
inlineoverridevirtual

When all predecessor dependencies have been resolved, free this node for top-down scheduling.

Implements llvm::MachineSchedStrategy.

Definition at line 1380 of file MachineScheduler.h.

References llvm::SUnit::isScheduled, Top, TopCand, and llvm::SUnit::TopReadyCycle.

◆ schedNode()

void PostGenericScheduler::schedNode ( SUnit * SU,
bool IsTopNode )
overridevirtual

Called after ScheduleDAGMI has scheduled an instruction and updated scheduled/remaining flags in the DAG nodes.

Implements llvm::MachineSchedStrategy.

Definition at line 4589 of file MachineScheduler.cpp.

References Bot, BotClusterID, llvm::SUnit::BotReadyCycle, llvm::SUnit::ParentClusterIdx, Top, TopClusterID, and llvm::SUnit::TopReadyCycle.

◆ scheduleTree()

void llvm::PostGenericScheduler::scheduleTree ( unsigned SubtreeID)
inlineoverridevirtual

Scheduler callback to notify that a new subtree is scheduled.

Reimplemented from llvm::MachineSchedStrategy.

Definition at line 1374 of file MachineScheduler.h.

References llvm_unreachable.

◆ shouldTrackPressure()

bool llvm::PostGenericScheduler::shouldTrackPressure ( ) const
inlineoverridevirtual

PostRA scheduling does not track pressure.

Reimplemented from llvm::MachineSchedStrategy.

Definition at line 1364 of file MachineScheduler.h.

◆ tryCandidate()

bool PostGenericScheduler::tryCandidate ( SchedCandidate & Cand,
SchedCandidate & TryCand )
protectedvirtual

Member Data Documentation

◆ Bot

SchedBoundary llvm::PostGenericScheduler::Bot
protected

◆ BotCand

SchedCandidate llvm::PostGenericScheduler::BotCand
protected

Candidate last picked from Bot boundary.

Definition at line 1347 of file MachineScheduler.h.

Referenced by pickNode(), pickNodeBidirectional(), and releaseBottomNode().

◆ BotClusterID

unsigned llvm::PostGenericScheduler::BotClusterID
protected

◆ DAG

ScheduleDAGMI* llvm::PostGenericScheduler::DAG = nullptr
protected

Definition at line 1340 of file MachineScheduler.h.

Referenced by initialize(), pickNode(), pickNodeFromQueue(), and registerRoots().

◆ Top

◆ TopCand

SchedCandidate llvm::PostGenericScheduler::TopCand
protected

Candidate last picked from Top boundary.

Definition at line 1345 of file MachineScheduler.h.

Referenced by pickNode(), pickNodeBidirectional(), and releaseTopNode().

◆ TopClusterID

unsigned llvm::PostGenericScheduler::TopClusterID
protected

The documentation for this class was generated from the following files: