LLVM: lib/Target/SystemZ/SystemZSubtarget.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSUBTARGET_H

14#define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSUBTARGET_H

15

24#include

25

26#define GET_SUBTARGETINFO_HEADER

27#include "SystemZGenSubtargetInfo.inc"

28

29namespace llvm {

30class GlobalValue;

31class StringRef;

32

34 virtual void anchor();

35protected:

36

37#define GET_SUBTARGETINFO_MACRO(ATTRIBUTE, DEFAULT, GETTER) \

38 bool ATTRIBUTE = DEFAULT;

39#include "SystemZGenSubtargetInfo.inc"

40

41private:

42 Triple TargetTriple;

43 std::unique_ptr SpecialRegisters;

44 SystemZInstrInfo InstrInfo;

45 SystemZTargetLowering TLInfo;

46 SystemZSelectionDAGInfo TSInfo;

47 std::unique_ptr FrameLowering;

48

49 SystemZSubtarget &initializeSubtargetDependencies(StringRef CPU,

50 StringRef TuneCPU,

51 StringRef FS);

52 SystemZCallingConventionRegisters *initializeSpecialRegisters();

53

54public:

56 const std::string &TuneCPU, const std::string &FS,

57 const TargetMachine &TM);

58

60 assert(SpecialRegisters && "Unsupported SystemZ calling convention");

61 return SpecialRegisters.get();

62 }

63

67

69 return FrameLowering.get();

70 }

71

75

78 return &InstrInfo.getRegisterInfo();

79 }

86

87

88

89

91

92

93 bool useAA() const override { return true; }

94

95

97

98

100

101

103

104

105#define GET_SUBTARGETINFO_MACRO(ATTRIBUTE, DEFAULT, GETTER) \

106 bool GETTER() const { return ATTRIBUTE; }

107#include "SystemZGenSubtargetInfo.inc"

108

110

112

113

114

116

117 bool isTargetELF() const { return TargetTriple.isOSBinFormatELF(); }

118

119

120 bool isTargetGOFF() const { return TargetTriple.isOSBinFormatGOFF(); }

121

122

124

125

126 bool isTargetzOS() const { return TargetTriple.isOSzOS(); }

127};

128}

129

130#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

Targets can subclass this to parameterize the SelectionDAG lowering and instruction selection process...

StringRef - Represent a constant reference to a string, i.e.

A SystemZ-specific class detailing special use registers particular for calling conventions.

const SystemZInstrInfo * getInstrInfo() const override

Definition SystemZSubtarget.h:76

bool isPC32DBLSymbol(const GlobalValue *GV, CodeModel::Model CM) const

bool isTargetGOFF() const

Definition SystemZSubtarget.h:120

SR & getSpecialRegisters() const

Definition SystemZSubtarget.h:64

const TargetFrameLowering * getFrameLowering() const override

Definition SystemZSubtarget.h:68

bool isXRaySupported() const override

Definition SystemZSubtarget.h:109

const SystemZTargetLowering * getTargetLowering() const override

Definition SystemZSubtarget.h:80

bool isTargetXPLINK64() const

Definition SystemZSubtarget.h:123

bool enableMachineScheduler() const override

Definition SystemZSubtarget.h:90

SystemZCallingConventionRegisters * getSpecialRegisters() const

Definition SystemZSubtarget.h:59

bool enableSubRegLiveness() const override

bool isAddressedViaADA(const GlobalValue *GV) const

bool isTargetzOS() const

Definition SystemZSubtarget.h:126

bool enableEarlyIfConversion() const override

Definition SystemZSubtarget.h:96

const SystemZRegisterInfo * getRegisterInfo() const override

Definition SystemZSubtarget.h:77

bool isTargetELF() const

Definition SystemZSubtarget.h:117

const SelectionDAGTargetInfo * getSelectionDAGInfo() const override

Definition SystemZSubtarget.h:83

SystemZSubtarget(const Triple &TT, const std::string &CPU, const std::string &TuneCPU, const std::string &FS, const TargetMachine &TM)

const TFL * getFrameLowering() const

Definition SystemZSubtarget.h:72

void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS)

bool useAA() const override

Definition SystemZSubtarget.h:93

Information about stack frame layout on the target.

This is an optimization pass for GlobalISel generic memory operations.