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

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_LIB_TARGET_VE_VEINSTRINFO_H

14#define LLVM_LIB_TARGET_VE_VEINSTRINFO_H

15

18

19#define GET_INSTRINFO_HEADER

20#include "VEGenInstrInfo.inc"

21

22namespace llvm {

23

24class VESubtarget;

25

26

27

28

30enum {

31

32

33

34

36

37

39

40

41

44};

45

46#define HAS_VLINDEX(TSF) ((TSF)&VEII::VE_VLInUse)

47#define GET_VLINDEX(TSF) \

48 (HAS_VLINDEX(TSF) ? (int)(((TSF)&VEII::VE_VLMask) >> VEII::VE_VLShift) : -1)

49}

50

53 virtual void anchor();

54

55public:

57

58

59

60

61

63

64

68 bool AllowModify = false) const override;

69

71 int *BytesRemoved = nullptr) const override;

72

76 int *BytesAdded = nullptr) const override;

77

78 bool

80

81

84 bool KillSrc, bool RenamableDest = false,

85 bool RenamableSrc = false) const override;

86

87

89 int &FrameIndex) const override;

91 int &FrameIndex) const override;

95

98

102

105

106

107

108

111

112

113

115

116

118

121};

122

123}

124

125#endif

unsigned const MachineRegisterInfo * MRI

MachineInstrBuilder & UseMI

MachineInstrBuilder MachineInstrBuilder & DefMI

MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL

MachineBasicBlock MachineBasicBlock::iterator MBBI

const SmallVectorImpl< MachineOperand > MachineBasicBlock * TBB

const SmallVectorImpl< MachineOperand > & Cond

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

MachineInstrBundleIterator< MachineInstr > iterator

Representation of each machine instruction.

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

Wrapper class representing virtual and physical registers.

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

bool foldImmediate(MachineInstr &UseMI, MachineInstr &DefMI, Register Reg, MachineRegisterInfo *MRI) const override

} Stack Spill & Reload

void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, const DebugLoc &DL, Register DestReg, Register SrcReg, bool KillSrc, bool RenamableDest=false, bool RenamableSrc=false) const override

} Branch Analysis & Modification

bool expandPostRAPseudo(MachineInstr &MI) const override

unsigned removeBranch(MachineBasicBlock &MBB, int *BytesRemoved=nullptr) const override

void loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register DestReg, int FrameIndex, const TargetRegisterClass *RC, Register VReg, MachineInstr::MIFlag Flags=MachineInstr::NoFlags) const override

void storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, Register VReg, MachineInstr::MIFlag Flags=MachineInstr::NoFlags) const override

Register getGlobalBaseReg(MachineFunction *MF) const

} Optimization

const VERegisterInfo & getRegisterInfo() const

getRegisterInfo - TargetInstrInfo is a superset of MRegister info.

Definition VEInstrInfo.h:62

unsigned insertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, ArrayRef< MachineOperand > Cond, const DebugLoc &DL, int *BytesAdded=nullptr) const override

Register isLoadFromStackSlot(const MachineInstr &MI, int &FrameIndex) const override

Stack Spill & Reload {.

bool analyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify=false) const override

Branch Analysis & Modification {.

Register isStoreToStackSlot(const MachineInstr &MI, int &FrameIndex) const override

isStoreToStackSlot - If the specified machine instruction is a direct store to a stack slot,...

bool reverseBranchCondition(SmallVectorImpl< MachineOperand > &Cond) const override

VEInstrInfo(const VESubtarget &ST)

bool expandExtendStackPseudo(MachineInstr &MI) const

bool expandGetStackTopPseudo(MachineInstr &MI) const

VEII - This namespace holds all of the Aurora VE target-specific per-instruction flags.

Definition VEInstrInfo.h:29

@ VE_VLShift

VE_VLMask/Shift - This is a bitmask that selects the index number where an instruction holds vector l...

Definition VEInstrInfo.h:42

@ VE_VLInUse

VE_VLInUse - This instruction has a vector register in its operands.

Definition VEInstrInfo.h:38

@ VE_Vector

VE_Vector - This instruction is Vector Instruction.

Definition VEInstrInfo.h:35

@ VE_VLMask

Definition VEInstrInfo.h:43

This is an optimization pass for GlobalISel generic memory operations.