LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | List of all members
llvm::ResourcePriorityQueue Class Reference

#include <ResourcePriorityQueue.h>

Inheritance diagram for llvm::ResourcePriorityQueue:
Inheritance graph
[legend]
Collaboration diagram for llvm::ResourcePriorityQueue:
Collaboration graph
[legend]

Public Member Functions

 ResourcePriorityQueue (SelectionDAGISel *IS)
 
 ~ResourcePriorityQueue ()
 
bool isBottomUp () const
 
void initNodes (std::vector< SUnit > &sunits)
 
void addNode (const SUnit *SU)
 
void updateNode (const SUnit *SU)
 
void releaseState ()
 
unsigned getLatency (unsigned NodeNum) const
 
unsigned getNumSolelyBlockNodes (unsigned NodeNum) const
 
signed SUSchedulingCost (SUnit *SU)
 
void initNumRegDefsLeft (SUnit *SU)
 
void updateNumRegDefsLeft (SUnit *SU)
 
signed regPressureDelta (SUnit *SU, bool RawPressure=false)
 
signed rawRegPressureDelta (SUnit *SU, unsigned RCId)
 
bool empty () const
 
virtual void push (SUnit *U)
 
virtual SUnitpop ()
 
virtual void remove (SUnit *SU)
 
virtual void dump (ScheduleDAG *DAG) const
 
void scheduledNode (SUnit *Node)
 scheduledNode - Main resource tracking point. More...
 
bool isResourceAvailable (SUnit *SU)
 
void reserveResources (SUnit *SU)
 Keep track of available resources. More...
 
- Public Member Functions inherited from llvm::SchedulingPriorityQueue
 SchedulingPriorityQueue (bool rf=false)
 
virtual ~SchedulingPriorityQueue ()
 
bool hasReadyFilter () const
 
virtual bool tracksRegPressure () const
 
virtual bool isReady (SUnit *) const
 
void push_all (const std::vector< SUnit * > &Nodes)
 
virtual void unscheduledNode (SUnit *)
 
void setCurCycle (unsigned Cycle)
 
unsigned getCurCycle () const
 

Detailed Description

Definition at line 38 of file ResourcePriorityQueue.h.

Constructor & Destructor Documentation

ResourcePriorityQueue::ResourcePriorityQueue ( SelectionDAGISel IS)
llvm::ResourcePriorityQueue::~ResourcePriorityQueue ( )
inline

Definition at line 80 of file ResourcePriorityQueue.h.

Member Function Documentation

void llvm::ResourcePriorityQueue::addNode ( const SUnit SU)
inlinevirtual

Implements llvm::SchedulingPriorityQueue.

Definition at line 88 of file ResourcePriorityQueue.h.

void ResourcePriorityQueue::dump ( ScheduleDAG DAG) const
virtual
bool llvm::ResourcePriorityQueue::empty ( ) const
inlinevirtual

Implements llvm::SchedulingPriorityQueue.

Definition at line 119 of file ResourcePriorityQueue.h.

Referenced by dump(), and pop().

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

Definition at line 98 of file ResourcePriorityQueue.h.

Referenced by llvm::resource_sort::operator()().

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

Definition at line 103 of file ResourcePriorityQueue.h.

Referenced by llvm::resource_sort::operator()().

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

Initialize nodes.

Implements llvm::SchedulingPriorityQueue.

Definition at line 169 of file ResourcePriorityQueue.cpp.

References initNumRegDefsLeft(), and llvm::SUnit::NodeQueueId.

void ResourcePriorityQueue::initNumRegDefsLeft ( SUnit SU)
bool llvm::ResourcePriorityQueue::isBottomUp ( ) const
inlinevirtual

Implements llvm::SchedulingPriorityQueue.

Definition at line 84 of file ResourcePriorityQueue.h.

bool ResourcePriorityQueue::isResourceAvailable ( SUnit SU)
SUnit * ResourcePriorityQueue::pop ( )
virtual

Main access point - returns next instructions to be placed in scheduling sequence.

Implements llvm::SchedulingPriorityQueue.

Definition at line 599 of file ResourcePriorityQueue.cpp.

References DisableDFASched, empty(), I, llvm::next(), llvm::prior(), SUSchedulingCost(), and std::swap().

Referenced by dump().

void ResourcePriorityQueue::push ( SUnit U)
virtual

Implements llvm::SchedulingPriorityQueue.

Definition at line 232 of file ResourcePriorityQueue.cpp.

References I, llvm::SUnit::NodeNum, and llvm::SUnit::Succs.

signed ResourcePriorityQueue::rawRegPressureDelta ( SUnit SU,
unsigned  RCId 
)
signed ResourcePriorityQueue::regPressureDelta ( SUnit SU,
bool  RawPressure = false 
)

Estimates change in reg pressure from this SU. It is achieved by trivial tracking of defined and used vregs in dependent instructions. The RawPressure flag makes this function to ignore existing reg file sizes, and report raw def/use balance.

Definition at line 361 of file ResourcePriorityQueue.cpp.

References llvm::TargetRegisterClass::getID(), llvm::SUnit::getNode(), I, llvm::SDNode::isMachineOpcode(), rawRegPressureDelta(), llvm::TargetRegisterInfo::regclass_begin(), and llvm::TargetRegisterInfo::regclass_end().

Referenced by SUSchedulingCost().

void llvm::ResourcePriorityQueue::releaseState ( )
inlinevirtual

Implements llvm::SchedulingPriorityQueue.

Definition at line 94 of file ResourcePriorityQueue.h.

void ResourcePriorityQueue::remove ( SUnit SU)
virtual

Implements llvm::SchedulingPriorityQueue.

Definition at line 633 of file ResourcePriorityQueue.cpp.

References I, llvm::prior(), and std::swap().

void ResourcePriorityQueue::reserveResources ( SUnit SU)
void ResourcePriorityQueue::scheduledNode ( SUnit Node)
virtual
signed ResourcePriorityQueue::SUSchedulingCost ( SUnit SU)
void llvm::ResourcePriorityQueue::updateNode ( const SUnit SU)
inlinevirtual

Implements llvm::SchedulingPriorityQueue.

Definition at line 92 of file ResourcePriorityQueue.h.

void llvm::ResourcePriorityQueue::updateNumRegDefsLeft ( SUnit SU)

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