LLVM: include/llvm/MCA/HardwareUnits/RetireControlUnit.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_MCA_HARDWAREUNITS_RETIRECONTROLUNIT_H

15#define LLVM_MCA_HARDWAREUNITS_RETIRECONTROLUNIT_H

16

20#include

21

22namespace llvm {

23namespace mca {

24

25

26

27

28

29

30

31

32

33

34

35

37

38

39

40

41

42

43

44

45

46

47

48

49

50

56

57private:

58 unsigned NextAvailableSlotIdx;

59 unsigned CurrentInstructionSlotIdx;

60 unsigned NumROBEntries;

61 unsigned AvailableEntries;

62 unsigned MaxRetirePerCycle;

63 std::vector Queue;

64

65 unsigned normalizeQuantity(unsigned Quantity) const {

66

67

68

69 Quantity = std::min(Quantity, NumROBEntries);

70

71

72

73

74 return std::max(Quantity, 1U);

75 }

76

77 unsigned computeNextSlotIdx() const;

78

79public:

81

82 bool isEmpty() const { return AvailableEntries == NumROBEntries; }

83

85 return AvailableEntries >= normalizeQuantity(Quantity);

86 }

87

89

90

92

93

95

97

98

100

101

103

104#ifndef NDEBUG

105 void dump() const;

106#endif

107

108

110};

111

112}

113}

114

115#endif

This file defines a base class for describing a simulated hardware unit.

This file defines abstractions used by the Pipeline to model register reads, register writes and inst...

An InstRef contains both a SourceMgr index and Instruction pair.

This is an optimization pass for GlobalISel generic memory operations.

Machine model for scheduling, bundling, and heuristics.

Definition RetireControlUnit.h:51

InstRef IR

Definition RetireControlUnit.h:52

unsigned NumSlots

Definition RetireControlUnit.h:53

bool Executed

Definition RetireControlUnit.h:54

bool isAvailable(unsigned Quantity=1) const

Definition RetireControlUnit.h:84

unsigned getMaxRetirePerCycle() const

Definition RetireControlUnit.h:88

static const unsigned UnhandledTokenID

Definition RetireControlUnit.h:109

bool isEmpty() const

Definition RetireControlUnit.h:82

RetireControlUnit(const MCSchedModel &SM)

void onInstructionExecuted(unsigned TokenID)

const RUToken & getCurrentToken() const

unsigned dispatch(const InstRef &IS)

const RUToken & peekNextToken() const

void consumeCurrentToken()