class ResourcePriorityQueue
Declaration
class ResourcePriorityQueue : public SchedulingPriorityQueue { /* full declaration omitted */ };
Description
This interface is used to plug different priorities computation algorithms into the list scheduler. It implements the interface of a standard priority queue, where nodes are inserted in arbitrary order and returned in priority order. The computation of the priority and the representation of the queue are totally up to the implementation to decide.
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:37
Inherits from: SchedulingPriorityQueue
Method Overview
- public ResourcePriorityQueue(llvm::SelectionDAGISel * IS)
- public int SUSchedulingCost(llvm::SUnit * SU)
- public void addNode(const llvm::SUnit * SU)
- public bool empty() const
- public unsigned int getLatency(unsigned int NodeNum) const
- public unsigned int getNumSolelyBlockNodes(unsigned int NodeNum) const
- public void initNodes(std::vector<SUnit> & sunits)
- public void initNumRegDefsLeft(llvm::SUnit * SU)
- public bool isBottomUp() const
- public bool isResourceAvailable(llvm::SUnit * SU)
- public llvm::SUnit * pop()
- public void push(llvm::SUnit * U)
- public int rawRegPressureDelta(llvm::SUnit * SU, unsigned int RCId)
- public int regPressureDelta(llvm::SUnit * SU, bool RawPressure = false)
- public void releaseState()
- public void remove(llvm::SUnit * SU)
- public void reserveResources(llvm::SUnit * SU)
- public void scheduledNode(llvm::SUnit * SU)
- public void updateNode(const llvm::SUnit * SU)
- public void updateNumRegDefsLeft(llvm::SUnit * SU)
Inherited from SchedulingPriorityQueue:
- public addNode
- public dump
- public empty
- public getCurCycle
- public hasReadyFilter
- public initNodes
- public isBottomUp
- public isReady
- public pop
- public push
- public push_all
- public releaseState
- public remove
- public scheduledNode
- public setCurCycle
- public tracksRegPressure
- public unscheduledNode
- public updateNode
Methods
¶ResourcePriorityQueue(llvm::SelectionDAGISel* IS)
ResourcePriorityQueue(llvm::SelectionDAGISel* IS)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:77
Parameters
¶int SUSchedulingCost(llvm::SUnit* SU)
int SUSchedulingCost(llvm::SUnit* SU)
Description
Single cost function reflecting benefit of scheduling SU in the current cycle.
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:105
Parameters
- llvm::SUnit* SU
¶void addNode(const llvm::SUnit* SU)
void addNode(const llvm::SUnit* SU)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:83
Parameters
- const llvm::SUnit* SU
¶bool empty() const
bool empty() const
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:114
¶unsigned int getLatency(
unsigned int NodeNum) const
unsigned int getLatency(
unsigned int NodeNum) const
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:93
Parameters
- unsigned int NodeNum
¶unsigned int getNumSolelyBlockNodes(
unsigned int NodeNum) const
unsigned int getNumSolelyBlockNodes(
unsigned int NodeNum) const
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:98
Parameters
- unsigned int NodeNum
¶void initNodes(std::vector<SUnit>& sunits)
void initNodes(std::vector<SUnit>& sunits)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:81
Parameters
- std::vector<SUnit>& sunits
¶void initNumRegDefsLeft(llvm::SUnit* SU)
void initNumRegDefsLeft(llvm::SUnit* SU)
Description
InitNumRegDefsLeft - Determine the # of regs defined by this node.
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:109
Parameters
- llvm::SUnit* SU
¶bool isBottomUp() const
bool isBottomUp() const
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:79
¶bool isResourceAvailable(llvm::SUnit* SU)
bool isResourceAvailable(llvm::SUnit* SU)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:124
Parameters
- llvm::SUnit* SU
¶llvm::SUnit* pop()
llvm::SUnit* pop()
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:118
¶void push(llvm::SUnit* U)
void push(llvm::SUnit* U)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:116
Parameters
- llvm::SUnit* U
¶int rawRegPressureDelta(llvm::SUnit* SU,
unsigned int RCId)
int rawRegPressureDelta(llvm::SUnit* SU,
unsigned int RCId)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:112
Parameters
- llvm::SUnit* SU
- unsigned int RCId
¶int regPressureDelta(llvm::SUnit* SU,
bool RawPressure = false)
int regPressureDelta(llvm::SUnit* SU,
bool RawPressure = false)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:111
Parameters
- llvm::SUnit* SU
- bool RawPressure = false
¶void releaseState()
void releaseState()
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:89
¶void remove(llvm::SUnit* SU)
void remove(llvm::SUnit* SU)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:120
Parameters
- llvm::SUnit* SU
¶void reserveResources(llvm::SUnit* SU)
void reserveResources(llvm::SUnit* SU)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:125
Parameters
- llvm::SUnit* SU
¶void scheduledNode(llvm::SUnit* SU)
void scheduledNode(llvm::SUnit* SU)
Description
scheduledNode - Main resource tracking point.
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:123
Parameters
- llvm::SUnit* SU
¶void updateNode(const llvm::SUnit* SU)
void updateNode(const llvm::SUnit* SU)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:87
Parameters
- const llvm::SUnit* SU
¶void updateNumRegDefsLeft(llvm::SUnit* SU)
void updateNumRegDefsLeft(llvm::SUnit* SU)
Declared at: llvm/include/llvm/CodeGen/ResourcePriorityQueue.h:110
Parameters
- llvm::SUnit* SU