LLVM: lib/CodeGen/CriticalAntiDepBreaker.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15#ifndef LLVM_LIB_CODEGEN_CRITICALANTIDEPBREAKER_H

16#define LLVM_LIB_CODEGEN_CRITICALANTIDEPBREAKER_H

17

21#include

22#include

23

24namespace llvm {

25

35

42

43

44

45

47

48

49

50

51

52

53 std::vector<const TargetRegisterClass *> Classes;

54

55

56 std::multimap<MCRegister, MachineOperand *> RegRefs;

57

58 using RegRefIter =

59 std::multimap<MCRegister, MachineOperand *>::const_iterator;

60

61

62

63 std::vector KillIndices;

64

65

66

67 std::vector DefIndices;

68

69

70

72

73 public:

76

77

79

80

81

85 unsigned InsertPosIndex,

87

88

89

91 unsigned InsertPosIndex) override;

92

93

95

96 private:

99 bool isNewRegClobberedByRefs(RegRefIter RegRefBegin, RegRefIter RegRefEnd,

102 findSuitableFreeRegister(RegRefIter RegRefBegin, RegRefIter RegRefEnd,

106 };

107

108}

109

110#endif

This file implements the BitVector class.

#define LLVM_LIBRARY_VISIBILITY

This class works in conjunction with the post-RA scheduler to rename registers to break register anti...

std::vector< std::pair< MachineInstr *, MachineInstr * > > DbgValueVector

~CriticalAntiDepBreaker() override

unsigned BreakAntiDependencies(const std::vector< SUnit > &SUnits, MachineBasicBlock::iterator Begin, MachineBasicBlock::iterator End, unsigned InsertPosIndex, DbgValueVector &DbgValues) override

Identifiy anti-dependencies along the critical path of the ScheduleDAG and break them by renaming reg...

void FinishBlock() override

Finish anti-dep breaking for a basic block.

void Observe(MachineInstr &MI, unsigned Count, unsigned InsertPosIndex) override

Update liveness information to account for the current instruction, which will not be scheduled.

void StartBlock(MachineBasicBlock *BB) override

Initialize anti-dep breaking for a new basic block.

CriticalAntiDepBreaker(MachineFunction &MFi, const RegisterClassInfo &RCI)

Wrapper class representing physical registers. Should be passed by value.

MachineInstrBundleIterator< MachineInstr > iterator

Representation of each machine instruction.

MachineOperand class - Representation of each machine instruction operand.

MachineRegisterInfo - Keep track of information for virtual and physical registers,...

This class consists of common code factored out of the SmallVector class to reduce code duplication b...

TargetInstrInfo - Interface to description of machine instruction set.

TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...

This is an optimization pass for GlobalISel generic memory operations.

FunctionAddr VTableAddr Count