LLVM: include/llvm/CodeGen/LatencyPriorityQueue.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef LLVM_CODEGEN_LATENCYPRIORITYQUEUE_H
16#define LLVM_CODEGEN_LATENCYPRIORITYQUEUE_H
17
19#include "llvm/Config/llvm-config.h"
20
21namespace llvm {
23
24
31
33
34 std::vector *SUnits = nullptr;
35
36
37
38
39
40 std::vector NumNodesSolelyBlocking;
41
42
43 std::vector<SUnit*> Queue;
45
46 public:
49
50 bool isBottomUp() const override { return false; }
51
52 void initNodes(std::vector &sunits) override {
53 SUnits = &sunits;
54 NumNodesSolelyBlocking.resize(SUnits->size(), 0);
55 }
56
58 NumNodesSolelyBlocking.resize(SUnits->size(), 0);
59 }
60
63
65 SUnits = nullptr;
66 }
67
69 assert(NodeNum < (*SUnits).size());
70 return (*SUnits)[NodeNum].getHeight();
71 }
72
74 assert(NodeNum < NumNodesSolelyBlocking.size());
75 return NumNodesSolelyBlocking[NodeNum];
76 }
77
78 bool empty() const override { return Queue.empty(); }
79
81
83
85
86#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
88#endif
89
90
91
92
93
95
96private:
97 void AdjustPriorityOfUnscheduledPreds(SUnit *SU);
98 SUnit *getSingleUnscheduledPred(SUnit *SU);
99 };
100}
101
102#endif
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
#define LLVM_DUMP_METHOD
Mark debug helper function definitions like dump() that should not be stripped from debug builds.
unsigned getNumSolelyBlockNodes(unsigned NodeNum) const
Definition LatencyPriorityQueue.h:73
void releaseState() override
Definition LatencyPriorityQueue.h:64
void push(SUnit *U) override
LLVM_DUMP_METHOD void dump(ScheduleDAG *DAG) const override
void remove(SUnit *SU) override
void scheduledNode(SUnit *SU) override
As each node is scheduled, this method is invoked.
void addNode(const SUnit *SU) override
Definition LatencyPriorityQueue.h:57
LatencyPriorityQueue()
Definition LatencyPriorityQueue.h:47
void initNodes(std::vector< SUnit > &sunits) override
Definition LatencyPriorityQueue.h:52
unsigned getLatency(unsigned NodeNum) const
Definition LatencyPriorityQueue.h:68
bool empty() const override
Definition LatencyPriorityQueue.h:78
void updateNode(const SUnit *SU) override
Definition LatencyPriorityQueue.h:61
bool isBottomUp() const override
Definition LatencyPriorityQueue.h:50
Scheduling unit. This is a node in the scheduling DAG.
SchedulingPriorityQueue(bool rf=false)
This is an optimization pass for GlobalISel generic memory operations.
Sorting functions for the Available queue.
Definition LatencyPriorityQueue.h:25
latency_sort(LatencyPriorityQueue *pq)
Definition LatencyPriorityQueue.h:27
LatencyPriorityQueue * PQ
Definition LatencyPriorityQueue.h:26
bool operator()(const SUnit *LHS, const SUnit *RHS) const