LLVM  8.0.1
Public Member Functions | Protected Member Functions | List of all members
llvm::PostGenericScheduler Class Reference

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

#include "llvm/CodeGen/MachineScheduler.h"

Inheritance diagram for llvm::PostGenericScheduler:
Inheritance graph
[legend]
Collaboration diagram for llvm::PostGenericScheduler:
Collaboration graph
[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. 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...
 
SUnitpickNode (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 () const
 
virtual bool shouldTrackLaneMasks () const
 Returns true if lanemasks should be tracked. More...
 
virtual bool doMBBSchedRegionsTopDown () const
 
virtual void enterMBB (MachineBasicBlock *MBB)
 Tell the strategy that MBB is about to be processed. More...
 
virtual void leaveMBB ()
 Tell the strategy that current MBB is done. More...
 

Protected Member Functions

void tryCandidate (SchedCandidate &Cand, SchedCandidate &TryCand)
 Apply a set of heuristics 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, PhysReg, 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 chargetReasonStr (GenericSchedulerBase::CandReason Reason)
 
- Protected Attributes inherited from llvm::GenericSchedulerBase
const MachineSchedContextContext
 
const TargetSchedModelSchedModel = nullptr
 
const TargetRegisterInfoTRI = nullptr
 
SchedRemainder Rem
 

Detailed Description

PostGenericScheduler - Interface to the scheduling algorithm used by ScheduleDAGMI.

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

Definition at line 1017 of file MachineScheduler.h.

Constructor & Destructor Documentation

◆ PostGenericScheduler()

llvm::PostGenericScheduler::PostGenericScheduler ( const MachineSchedContext C)
inline

Definition at line 1023 of file MachineScheduler.h.

◆ ~PostGenericScheduler()

llvm::PostGenericScheduler::~PostGenericScheduler ( )
overridedefault

Member Function Documentation

◆ initialize()

void PostGenericScheduler::initialize ( ScheduleDAGMI DAG)
overridevirtual

◆ initPolicy()

void llvm::PostGenericScheduler::initPolicy ( MachineBasicBlock::iterator  Begin,
MachineBasicBlock::iterator  End,
unsigned  NumRegionInstrs 
)
inlineoverridevirtual

Optionally override the per-region scheduling policy.

Reimplemented from llvm::MachineSchedStrategy.

Definition at line 1028 of file MachineScheduler.h.

◆ pickNode()

SUnit * PostGenericScheduler::pickNode ( bool IsTopNode)
overridevirtual

◆ pickNodeFromQueue()

void PostGenericScheduler::pickNodeFromQueue ( SchedCandidate Cand)
protected

◆ 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 3314 of file MachineScheduler.cpp.

References llvm::dbgs(), llvm::DumpCriticalPathLength, llvm::errs(), llvm::ScheduleDAG::ExitSU, llvm::SUnit::getDepth(), and LLVM_DEBUG.

◆ releaseBottomNode()

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

◆ 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 1049 of file MachineScheduler.h.

References llvm::SUnit::isScheduled, llvm::SchedBoundary::releaseNode(), 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 3419 of file MachineScheduler.cpp.

References llvm::max(), 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 1043 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 1035 of file MachineScheduler.h.

References llvm::tgtok::Dag, and initialize().

◆ tryCandidate()

void PostGenericScheduler::tryCandidate ( SchedCandidate Cand,
SchedCandidate TryCand 
)
protected

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