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