LLVM: lib/Target/VE/VEFrameLowering.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_LIB_TARGET_VE_VEFRAMELOWERING_H

14#define LLVM_LIB_TARGET_VE_VEFRAMELOWERING_H

15

16#include "VE.h"

19

20namespace llvm {

21

24public:

26

27

28

33 bool RequireFPUpdate) const;

36 bool RequireFPUpdate) const;

37

41

44

45

46

52

54 Register &FrameReg) const override;

55

56 const SpillSlot *

58 static const SpillSlot Offsets[] = {

59 {VE::SX17, 40}, {VE::SX18, 48}, {VE::SX19, 56}, {VE::SX20, 64},

60 {VE::SX21, 72}, {VE::SX22, 80}, {VE::SX23, 88}, {VE::SX24, 96},

61 {VE::SX25, 104}, {VE::SX26, 112}, {VE::SX27, 120}, {VE::SX28, 128},

62 {VE::SX29, 136}, {VE::SX30, 144}, {VE::SX31, 152}, {VE::SX32, 160},

63 {VE::SX33, 168}};

64 NumEntries = std::size(Offsets);

65 return Offsets;

66 }

67

68protected:

70

72

73private:

74

76

77

81

82

85};

86

87}

88

89#endif

MachineBasicBlock MachineBasicBlock::iterator MBBI

MachineInstrBundleIterator< MachineInstr > iterator

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)

void emitEpilogueInsns(MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, uint64_t NumBytes, bool RequireFPUpdate) const

bool hasBP(const MachineFunction &MF) const

const VESubtarget & STI

Definition VEFrameLowering.h:69

const SpillSlot * getCalleeSavedSpillSlots(unsigned &NumEntries) const override

getCalleeSavedSpillSlots - This method returns a pointer to an array of pairs, that contains an entry...

Definition VEFrameLowering.h:57

void emitPrologueInsns(MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, uint64_t NumBytes, bool RequireFPUpdate) const

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

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

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

getFrameIndexReference - This method should return the base register and offset used to reference a f...

bool hasFPImpl(const MachineFunction &MF) const override

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

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

emitProlog/emitEpilog - These methods insert prolog and epilog code into the function.

VEFrameLowering(const VESubtarget &ST)

bool hasGOT(const MachineFunction &MF) const

bool hasReservedCallFrame(const MachineFunction &MF) const override

hasReservedCallFrame - Under normal circumstances, when a frame pointer is not required,...

Definition VEFrameLowering.h:47

This is an optimization pass for GlobalISel generic memory operations.

This struct is a compact representation of a valid (power of two) or undefined (0) alignment.