13#ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSUBTARGET_H
14#define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZSUBTARGET_H
26#define GET_SUBTARGETINFO_HEADER
27#include "SystemZGenSubtargetInfo.inc"
34 virtual void anchor();
37#define GET_SUBTARGETINFO_MACRO(ATTRIBUTE, DEFAULT, GETTER) \
38 bool ATTRIBUTE = DEFAULT;
39#include "SystemZGenSubtargetInfo.inc"
43 std::unique_ptr<SystemZCallingConventionRegisters> SpecialRegisters;
44 SystemZInstrInfo InstrInfo;
45 SystemZTargetLowering TLInfo;
46 SystemZSelectionDAGInfo TSInfo;
47 std::unique_ptr<const SystemZFrameLowering> FrameLowering;
52 SystemZCallingConventionRegisters *initializeSpecialRegisters();
56 const std::string &TuneCPU,
const std::string &FS,
57 const TargetMachine &TM);
60 assert(SpecialRegisters &&
"Unsupported SystemZ calling convention");
61 return SpecialRegisters.get();
69 return FrameLowering.get();
78 return &InstrInfo.getRegisterInfo();
93 bool useAA()
const override {
return true; }
105#define GET_SUBTARGETINFO_MACRO(ATTRIBUTE, DEFAULT, GETTER) \
106 bool GETTER() const { return ATTRIBUTE; }
107#include "SystemZGenSubtargetInfo.inc"
117 bool isTargetELF()
const {
return TargetTriple.isOSBinFormatELF(); }
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
bool isPC32DBLSymbol(const GlobalValue *GV, CodeModel::Model CM) const
bool isTargetGOFF() const
SR & getSpecialRegisters() const
const TargetFrameLowering * getFrameLowering() const override
bool isXRaySupported() const override
const SystemZTargetLowering * getTargetLowering() const override
bool isTargetXPLINK64() const
bool enableMachineScheduler() const override
SystemZCallingConventionRegisters * getSpecialRegisters() const
bool enableSubRegLiveness() const override
bool isAddressedViaADA(const GlobalValue *GV) const
bool enableEarlyIfConversion() const override
const SystemZRegisterInfo * getRegisterInfo() const override
const SelectionDAGTargetInfo * getSelectionDAGInfo() const override
SystemZSubtarget(const Triple &TT, const std::string &CPU, const std::string &TuneCPU, const std::string &FS, const TargetMachine &TM)
const TFL * getFrameLowering() const
void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS)
bool useAA() const override
Information about stack frame layout on the target.
This is an optimization pass for GlobalISel generic memory operations.