LLVM: llvm::ResourcePriorityQueue Class Reference (original) (raw)

#include "[llvm/CodeGen/ResourcePriorityQueue.h](ResourcePriorityQueue%5F8h%5Fsource.html)"

Public Member Functions
ResourcePriorityQueue (SelectionDAGISel *IS)
~ResourcePriorityQueue () override
bool isBottomUp () const override
void initNodes (std::vector< SUnit > &sunits) override
Initialize nodes.
void addNode (const SUnit *SU) override
void updateNode (const SUnit *SU) override
void releaseState () override
unsigned getLatency (unsigned NodeNum) const
unsigned getNumSolelyBlockNodes (unsigned NodeNum) const
int SUSchedulingCost (SUnit *SU)
Single cost function reflecting benefit of scheduling SU in the current cycle.
void initNumRegDefsLeft (SUnit *SU)
InitNumRegDefsLeft - Determine the # of regs defined by this node.
int regPressureDelta (SUnit *SU, bool RawPressure=false)
Estimates change in reg pressure from this SU.
int rawRegPressureDelta (SUnit *SU, unsigned RCId)
bool empty () const override
void push (SUnit *U) override
SUnit * pop () override
Main access point - returns next instructions to be placed in scheduling sequence.
void remove (SUnit *SU) override
void scheduledNode (SUnit *SU) override
scheduledNode - Main resource tracking point.
bool isResourceAvailable (SUnit *SU)
Check if scheduling of this SU is possible in the current packet.
void reserveResources (SUnit *SU)
Keep track of available resources.
Public Member Functions inherited from llvm::SchedulingPriorityQueue
SchedulingPriorityQueue (bool rf=false)
virtual ~SchedulingPriorityQueue ()=default
bool hasReadyFilter () const
virtual bool tracksRegPressure () const
virtual bool isReady (SUnit *) const
void push_all (const std::vector< SUnit * > &Nodes)
virtual void dump (ScheduleDAG *) const
virtual void unscheduledNode (SUnit *)
void setCurCycle (unsigned Cycle)
unsigned getCurCycle () const

Definition at line 37 of file ResourcePriorityQueue.h.

~ResourcePriorityQueue()

ResourcePriorityQueue::~ResourcePriorityQueue ( ) overridedefault

addNode()

void llvm::ResourcePriorityQueue::addNode ( const SUnit * SU) inlineoverridevirtual

empty()

bool llvm::ResourcePriorityQueue::empty ( ) const inlineoverridevirtual

getLatency()

unsigned llvm::ResourcePriorityQueue::getLatency ( unsigned NodeNum) const inline

getNumSolelyBlockNodes()

unsigned llvm::ResourcePriorityQueue::getNumSolelyBlockNodes ( unsigned NodeNum) const inline

initNodes()

void ResourcePriorityQueue::initNodes ( std::vector< SUnit > & sunits) overridevirtual

initNumRegDefsLeft()

void ResourcePriorityQueue::initNumRegDefsLeft ( SUnit * SU )

isBottomUp()

bool llvm::ResourcePriorityQueue::isBottomUp ( ) const inlineoverridevirtual

isResourceAvailable()

bool ResourcePriorityQueue::isResourceAvailable ( SUnit * SU )

pop()

SUnit * ResourcePriorityQueue::pop ( ) overridevirtual

push()

void ResourcePriorityQueue::push ( SUnit * U) overridevirtual

rawRegPressureDelta()

int ResourcePriorityQueue::rawRegPressureDelta ( SUnit * SU,
unsigned RCId )

regPressureDelta()

int ResourcePriorityQueue::regPressureDelta ( SUnit * SU,
bool RawPressure = false )

releaseState()

void llvm::ResourcePriorityQueue::releaseState ( ) inlineoverridevirtual

remove()

void ResourcePriorityQueue::remove ( SUnit * SU) overridevirtual

reserveResources()

void ResourcePriorityQueue::reserveResources ( SUnit * SU )

scheduledNode()

void ResourcePriorityQueue::scheduledNode ( SUnit * SU) overridevirtual

scheduledNode - Main resource tracking point.

Main resource tracking point.

Reimplemented from llvm::SchedulingPriorityQueue.

Definition at line 461 of file ResourcePriorityQueue.cpp.

References llvm::TargetRegisterClass::getID(), llvm::SUnit::getNode(), llvm::SDNode::getNumOperands(), llvm::SDNode::getNumValues(), llvm::SDNode::getOperand(), llvm::SDNode::getSimpleValueType(), llvm::SDep::getSUnit(), llvm::SDep::isCtrl(), llvm::SDNode::isMachineOpcode(), numberCtrlDepsInSU(), numberCtrlPredInSU(), llvm::SUnit::NumPreds, llvm::SUnit::NumRegDefsLeft, llvm::SUnit::Preds, reserveResources(), and llvm::SUnit::Succs.

SUSchedulingCost()

int ResourcePriorityQueue::SUSchedulingCost ( SUnit * SU )

Single cost function reflecting benefit of scheduling SU in the current cycle.

Returns single number reflecting benefit of scheduling SU in the current cycle.

Definition at line 390 of file ResourcePriorityQueue.cpp.

References llvm::ISD::CopyFromReg, llvm::ISD::CopyToReg, FactorOne, llvm::SUnit::getHeight(), llvm::SUnit::getNode(), llvm::MCInstrDesc::isCall(), isResourceAvailable(), llvm::SUnit::isScheduled, llvm::SUnit::isScheduleHigh, N, llvm::SUnit::NodeNum, PriorityFour, PriorityOne, PriorityThree, PriorityTwo, regPressureDelta(), RegPressureThreshold, ScaleOne, ScaleThree, ScaleTwo, and llvm::ISD::TokenFactor.

Referenced by pop().

updateNode()

void llvm::ResourcePriorityQueue::updateNode ( const SUnit * SU) inlineoverridevirtual

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