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.