LLVM: include/llvm/MCA/Stages/InOrderIssueStage.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_MCA_STAGES_INORDERISSUESTAGE_H

15#define LLVM_MCA_STAGES_INORDERISSUESTAGE_H

16

21

22namespace llvm {

23namespace mca {

26

36

40

42

47

50 void update(const InstRef &Inst, unsigned Cycles, StallKind SK);

52};

53

54class InOrderIssueStage final : public Stage {

60

61

63

64

65 unsigned NumIssued;

66

68

69

71

72 unsigned CarryOver;

73

74

75 unsigned Bandwidth;

76

77

78

79

80 unsigned LastWriteBackCycle;

81

82 InOrderIssueStage(const InOrderIssueStage &Other) = delete;

83 InOrderIssueStage &operator=(const InOrderIssueStage &Other) = delete;

84

85

86

87

88 bool canExecute(const InstRef &IR);

89

90

92

93

94 void updateIssuedInst();

95

96

97 void updateCarriedOver();

98

99

100

101 void notifyStallEvent();

102

103 void notifyInstructionIssued(const InstRef &IR,

105 void notifyInstructionDispatched(const InstRef &IR, unsigned Ops,

107 void notifyInstructionExecuted(const InstRef &IR);

108 void notifyInstructionRetired(const InstRef &IR,

110

111

112 void retireInstruction(InstRef &IR);

113

114public:

117

124};

125

126}

127}

128

129#endif

This file defines the base class CustomBehaviour which can be inherited from by specific targets (ex.

const AbstractManglingParser< Derived, Alloc >::OperatorInfo AbstractManglingParser< Derived, Alloc >::Ops[]

Legalize the Machine IR a function s Machine IR

This file contains abstract class SourceMgr and the default implementation, CircularSourceMgr.

The classes here represent processor resource units and their management strategy.

This file defines a stage.

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

Lightweight error class with error context and mandatory checking.

Generic base class for all target subtargets.

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

Class which can be overriden by targets to enforce instruction dependencies and behaviours that aren'...

bool hasWorkToComplete() const override

Returns true if some instructions are still executing this stage.

Error cycleEnd() override

Called once at the end of each cycle.

Error execute(InstRef &IR) override

The primary action that this stage performs on instruction IR.

bool isAvailable(const InstRef &) const override

Returns true if it can execute IR during this cycle.

unsigned getIssueWidth() const

Error cycleStart() override

Called once at the start of each cycle.

An InstRef contains both a SourceMgr index and Instruction pair.

Abstract base interface for LS (load/store) units in llvm-mca.

Manages hardware register files, and tracks register definitions for register renaming purposes.

This is an optimization pass for GlobalISel generic memory operations.

Definition InOrderIssueStage.h:27

StallKind getStallKind() const

Definition InOrderIssueStage.h:43

InstRef & getInstruction()

Definition InOrderIssueStage.h:46

const InstRef & getInstruction() const

Definition InOrderIssueStage.h:45

unsigned CyclesLeft

Definition InOrderIssueStage.h:38

StallKind Kind

Definition InOrderIssueStage.h:39

StallKind

Definition InOrderIssueStage.h:28

@ REGISTER_DEPS

Definition InOrderIssueStage.h:30

@ CUSTOM_STALL

Definition InOrderIssueStage.h:34

@ DEFAULT

Definition InOrderIssueStage.h:29

@ DELAY

Definition InOrderIssueStage.h:32

@ DISPATCH

Definition InOrderIssueStage.h:31

@ LOAD_STORE

Definition InOrderIssueStage.h:33

unsigned getCyclesLeft() const

Definition InOrderIssueStage.h:44

void update(const InstRef &Inst, unsigned Cycles, StallKind SK)

InstRef IR

Definition InOrderIssueStage.h:37

bool isValid() const

Definition InOrderIssueStage.h:48