LLVM  4.0.0
Classes | Public Types | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::GenericSchedulerBase Class Reference

Base class for GenericScheduler. More...

#include <MachineScheduler.h>

Inheritance diagram for llvm::GenericSchedulerBase:
[legend]
Collaboration diagram for llvm::GenericSchedulerBase:
[legend]

Classes

struct  CandPolicy
 Policy for scheduling the next instruction in the candidate's zone. More...
 
struct  SchedCandidate
 Store the state used by GenericScheduler heuristics, required for the lifetime of one invocation of pickNode(). More...
 
struct  SchedResourceDelta
 Status of an instruction's critical resource consumption. More...
 

Public Types

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

static const char * getReasonStr (GenericSchedulerBase::CandReason Reason)
 

Protected Member Functions

 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)
 

Protected Attributes

const MachineSchedContextContext
 
const TargetSchedModelSchedModel
 
const TargetRegisterInfoTRI
 
SchedRemainder Rem
 

Additional Inherited Members

- 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. More...
 
virtual void dumpPolicy ()
 
virtual bool shouldTrackPressure () const
 Check if pressure tracking is needed before building the DAG and initializing this strategy. More...
 
virtual bool shouldTrackLaneMasks () const
 Returns true if lanemasks should be tracked. More...
 
virtual void initialize (ScheduleDAGMI *DAG)=0
 Initialize the strategy after building the DAG for a new region. More...
 
virtual void registerRoots ()
 Notify this strategy that all roots have been released (including those that depend on EntrySU or ExitSU). More...
 
virtual SUnitpickNode (bool &IsTopNode)=0
 Pick the next node to schedule, or return NULL. More...
 
virtual void scheduleTree (unsigned SubtreeID)
 Scheduler callback to notify that a new subtree is scheduled. More...
 
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. More...
 
virtual void releaseTopNode (SUnit *SU)=0
 When all predecessor dependencies have been resolved, free this node for top-down scheduling. More...
 
virtual void releaseBottomNode (SUnit *SU)=0
 When all successor dependencies have been resolved, free this node for bottom-up scheduling. More...
 

Detailed Description

Base class for GenericScheduler.

This class maintains information about scheduling candidates based on TargetSchedModel making it easy to implement heuristics for either preRA or postRA scheduling.

Definition at line 769 of file MachineScheduler.h.

Member Enumeration Documentation

Represent the type of SchedCandidate found within a single queue.

pickNodeBidirectional depends on these listed by decreasing priority.

Enumerator
NoCand 
Only1 
PhysRegCopy 
RegExcess 
RegCritical 
Stall 
Cluster 
Weak 
RegMax 
ResourceReduce 
ResourceDemand 
BotHeightReduce 
BotPathReduce 
TopDepthReduce 
TopPathReduce 
NextDefUse 
NodeOrder 

Definition at line 773 of file MachineScheduler.h.

Constructor & Destructor Documentation

llvm::GenericSchedulerBase::GenericSchedulerBase ( const MachineSchedContext C)
inlineprotected

Definition at line 874 of file MachineScheduler.h.

Member Function Documentation

const char * GenericSchedulerBase::getReasonStr ( GenericSchedulerBase::CandReason  Reason)
static
void GenericSchedulerBase::setPolicy ( CandPolicy Policy,
bool  IsPostRA,
SchedBoundary CurrZone,
SchedBoundary OtherZone 
)
protected
void GenericSchedulerBase::traceCandidate ( const SchedCandidate Cand)
protected

Member Data Documentation

const MachineSchedContext* llvm::GenericSchedulerBase::Context
protected

Definition at line 868 of file MachineScheduler.h.

Referenced by llvm::GenericScheduler::initPolicy().

SchedRemainder llvm::GenericSchedulerBase::Rem
protected
const TargetSchedModel* llvm::GenericSchedulerBase::SchedModel
protected
const TargetRegisterInfo* llvm::GenericSchedulerBase::TRI
protected

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