16 #ifndef LLVM_CODEGEN_LATENCYPRIORITYQUEUE_H
17 #define LLVM_CODEGEN_LATENCYPRIORITYQUEUE_H
22 class LatencyPriorityQueue;
25 struct latency_sort :
public std::binary_function<SUnit*, SUnit*, bool> {
34 std::vector<SUnit> *SUnits;
40 std::vector<unsigned> NumNodesSolelyBlocking;
43 std::vector<SUnit*> Queue;
54 NumNodesSolelyBlocking.resize(SUnits->size(), 0);
58 NumNodesSolelyBlocking.resize(SUnits->size(), 0);
69 assert(NodeNum < (*SUnits).size());
70 return (*SUnits)[NodeNum].getHeight();
74 assert(NodeNum < NumNodesSolelyBlocking.size());
75 return NumNodesSolelyBlocking[NodeNum];
78 bool empty()
const {
return Queue.empty(); }
84 virtual void remove(
SUnit *SU);
95 void AdjustPriorityOfUnscheduledPreds(
SUnit *SU);
virtual void push(SUnit *U)
virtual void dump(ScheduleDAG *DAG) const
void addNode(const SUnit *SU)
latency_sort(LatencyPriorityQueue *pq)
bool operator()(const SUnit *left, const SUnit *right) const
unsigned getLatency(unsigned NodeNum) const
void updateNode(const SUnit *SU)
void initNodes(std::vector< SUnit > &sunits)
Sorting functions for the Available queue.
LatencyPriorityQueue * PQ
void scheduledNode(SUnit *Node)
unsigned getNumSolelyBlockNodes(unsigned NodeNum) const
SUnit - Scheduling unit. This is a node in the scheduling DAG.