LLVM: lib/CodeGen/MultiHazardRecognizer.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

16#include

17#include

18#include

19

20using namespace llvm;

21

23 std::unique_ptr &&R) {

25 Recognizers.push_back(std::move(R));

26}

27

32

35 for (auto &R : Recognizers) {

36 auto res = R->getHazardType(SU, Stalls);

38 return res;

39 }

41}

42

44 for (auto &R : Recognizers)

45 R->Reset();

46}

47

49 for (auto &R : Recognizers)

50 R->EmitInstruction(SU);

51}

52

54 for (auto &R : Recognizers)

55 R->EmitInstruction(MI);

56}

57

59 auto MN = [=](unsigned a, std::unique_ptr &R) {

60 return std::max(a, R->PreEmitNoops(SU));

61 };

62 return std::accumulate(Recognizers.begin(), Recognizers.end(), 0u, MN);

63}

64

66 auto MN = [=](unsigned a, std::unique_ptr &R) {

67 return std::max(a, R->PreEmitNoops(MI));

68 };

69 return std::accumulate(Recognizers.begin(), Recognizers.end(), 0u, MN);

70}

71

73 auto SPA = [=](std::unique_ptr &R) {

74 return R->ShouldPreferAnother(SU);

75 };

77}

78

80 for (auto &R : Recognizers)

81 R->AdvanceCycle();

82}

83

85 for (auto &R : Recognizers)

86 R->RecedeCycle();

87}

88

90 for (auto &R : Recognizers)

91 R->EmitNoop();

92}

Representation of each machine instruction.

unsigned PreEmitNoops(SUnit *) override

PreEmitNoops - This callback is invoked prior to emitting an instruction.

Definition MultiHazardRecognizer.cpp:58

void EmitNoop() override

EmitNoop - This callback is invoked when a noop was added to the instruction stream.

Definition MultiHazardRecognizer.cpp:89

bool atIssueLimit() const override

atIssueLimit - Return true if no more instructions may be issued in this cycle.

Definition MultiHazardRecognizer.cpp:28

void AddHazardRecognizer(std::unique_ptr< ScheduleHazardRecognizer > &&)

Definition MultiHazardRecognizer.cpp:22

void Reset() override

Reset - This callback is invoked when a new block of instructions is about to be schedule.

Definition MultiHazardRecognizer.cpp:43

void EmitInstruction(SUnit *) override

EmitInstruction - This callback is invoked when an instruction is emitted, to advance the hazard stat...

Definition MultiHazardRecognizer.cpp:48

HazardType getHazardType(SUnit *, int Stalls=0) override

getHazardType - Return the hazard type of emitting this node.

Definition MultiHazardRecognizer.cpp:34

void RecedeCycle() override

RecedeCycle - This callback is invoked whenever the next bottom-up instruction to be scheduled cannot...

Definition MultiHazardRecognizer.cpp:84

void AdvanceCycle() override

AdvanceCycle - This callback is invoked whenever the next top-down instruction to be scheduled cannot...

Definition MultiHazardRecognizer.cpp:79

bool ShouldPreferAnother(SUnit *) override

ShouldPreferAnother - This callback may be invoked if getHazardType returns NoHazard.

Definition MultiHazardRecognizer.cpp:72

Scheduling unit. This is a node in the scheduling DAG.

unsigned MaxLookAhead

MaxLookAhead - Indicate the number of cycles in the scoreboard state.

virtual bool atIssueLimit() const

atIssueLimit - Return true if no more instructions may be issued in this cycle.

This is an optimization pass for GlobalISel generic memory operations.

bool any_of(R &&range, UnaryPredicate P)

Provide wrappers to std::any_of which take ranges instead of having to pass begin/end explicitly.