LLVM: lib/Target/M68k/M68kFrameLowering.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_LIB_TARGET_M68K_M68KFRAMELOWERING_H

15#define LLVM_LIB_TARGET_M68K_M68KFRAMELOWERING_H

16

18

20

21namespace llvm {

27

29

33

34

35 unsigned SlotSize;

36

37 unsigned StackPtr;

38

39

40

41

42

44

45

49 bool InEpilogue) const;

50

51

55

56

59

63

64 unsigned getPSPSlotOffsetFromSP(const MachineFunction &MF) const;

65

66public:

68

70

71

72

73

74

75

76

80

81

83

84

86

87

88

89

90

91

92

93

96

97

98

99

100

101

102 bool

105 std::vector &CSI) const override;

106

107

108

109

114

115

116

117

118 bool

123

124

125

126

127

128

130

131

132

133

134

136

137

138

139

140

141

142

143

145

146

147

148

150 Register &FrameReg) const override;

151

152

153

154

155

157 bool doMergeWithPrevious) const;

158

159

160

162 int64_t NumBytes, bool InEpilogue) const;

163

164protected:

165

166

167

168

170};

171}

172

173#endif

MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL

MachineBasicBlock MachineBasicBlock::iterator MBBI

This file contains the entry points for global functions defined in the M68k target library,...

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

bool hasFPImpl(const MachineFunction &MF) const override

Return true if the specified function should have a dedicated frame pointer register.

void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs, RegScavenger *RS=nullptr) const override

This method determines which of the registers reported by TargetRegisterInfo::getCalleeSavedRegs() sh...

void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override

Insert epilog code into the function.

void emitSPUpdate(MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, int64_t NumBytes, bool InEpilogue) const

Emit a series of instructions to increment / decrement the stack pointer by a constant value.

bool assignCalleeSavedSpillSlots(MachineFunction &MF, const TargetRegisterInfo *TRI, std::vector< CalleeSavedInfo > &CSI) const override

Allows target to override spill slot assignment logic.

bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, ArrayRef< CalleeSavedInfo > CSI, const TargetRegisterInfo *TRI) const override

Issues instruction(s) to spill all callee saved registers and returns true if it isn't possible / pro...

bool hasReservedCallFrame(const MachineFunction &MF) const override

Under normal circumstances, when a frame pointer is not required, we reserve argument space for call ...

M68kFrameLowering(const M68kSubtarget &sti, Align Alignment)

int mergeSPUpdates(MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, bool doMergeWithPrevious) const

Check the instruction before/after the passed instruction.

StackOffset getFrameIndexReference(const MachineFunction &MF, int FI, Register &FrameReg) const override

This method should return the base register and offset used to reference a frame index location.

static const M68kFrameLowering * create(const M68kSubtarget &ST)

MachineBasicBlock::iterator eliminateCallFramePseudoInstr(MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator MI) const override

This method is called during prolog/epilog code insertion to eliminate call frame setup and destroy p...

void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override

Insert prolog code into the function.

bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, MutableArrayRef< CalleeSavedInfo > CSI, const TargetRegisterInfo *TRI) const override

Issues instruction(s) to restore all callee saved registers and returns true if it isn't possible / p...

bool canSimplifyCallFramePseudos(const MachineFunction &MF) const override

If there is a reserved call frame, the call frame pseudos can be simplified.

bool needsFrameIndexResolution(const MachineFunction &MF) const override

MachineInstrBundleIterator< MachineInstr > iterator

MutableArrayRef - Represent a mutable reference to an array (0 or more elements consecutively in memo...

Wrapper class representing virtual and physical registers.

StackOffset holds a fixed and a scalable offset in bytes.

TargetFrameLowering(StackDirection D, Align StackAl, int LAO, Align TransAl=Align(1), bool StackReal=true)

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.

This struct is a compact representation of a valid (non-zero power of two) alignment.