Go to the documentation of this file.
9 #ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZREGISTERINFO_H
10 #define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZREGISTERINFO_H
16 #define GET_REGINFO_HEADER
17 #include "SystemZGenRegisterInfo.inc"
27 return Is32bit ? subreg_hl32 : subreg_h64;
29 inline unsigned odd128(
bool Is32bit) {
30 return Is32bit ? subreg_l32 : subreg_l64;
113 return SystemZ::R14D;
143 unsigned Kind=0)
const override {
144 return &SystemZ::ADDR64BitRegClass;
170 int SPAdj,
unsigned FIOperandNum,
int getFramePointerRegister() override final
This is an optimization pass for GlobalISel generic memory operations.
int getStackPointerRegister() override final
virtual ~SystemZCallingConventionRegisters()=default
Destroys the object.
virtual int getReturnFunctionAddressRegister()=0
const uint32_t * getCallPreservedMask(const MachineFunction &MF, CallingConv::ID CC) const override final
SystemZRegisterInfo(unsigned int RA)
return AArch64::GPR64RegClass contains(Reg)
int getStackPointerBias() override final
int getCallFrameSize() override final
Reg
All possible values of the reg field in the ModR/M byte.
Register getFrameRegister(const MachineFunction &MF) const override
void eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj, unsigned FIOperandNum, RegScavenger *RS) const override
int getStackPointerRegister() override final
BitVector getReservedRegs(const MachineFunction &MF) const override
XPLINK64 calling convention specific use registers Particular to z/OS when in 64 bit mode.
bool shouldCoalesce(MachineInstr *MI, const TargetRegisterClass *SrcRC, unsigned SubReg, const TargetRegisterClass *DstRC, unsigned DstSubReg, const TargetRegisterClass *NewRC, LiveIntervals &LIS) const override
SrcRC and DstRC will be morphed into NewRC if this returns true.
int getReturnFunctionAddressRegister() override final
const uint32_t * getCallPreservedMask(const MachineFunction &MF, CallingConv::ID CC) const override final
virtual const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const =0
const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const override final
~SystemZXPLINK64Registers()=default
Destroys the object. Bogus destructor overriding base class destructor.
bool isHighReg(unsigned int Reg)
bool getRegAllocationHints(Register VirtReg, ArrayRef< MCPhysReg > Order, SmallVectorImpl< MCPhysReg > &Hints, const MachineFunction &MF, const VirtRegMap *VRM, const LiveRegMatrix *Matrix) const override
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
unsigned odd128(bool Is32bit)
bool requiresFrameIndexScavenging(const MachineFunction &MF) const override
Representation of each machine instruction.
const TargetRegisterClass * getCrossCopyRegClass(const TargetRegisterClass *RC) const override
getCrossCopyRegClass - Returns a legal register class to copy a register in the specified class to or...
const uint32_t * getCallPreservedMask(const MachineFunction &MF, CallingConv::ID CC) const override
virtual int getStackPointerRegister()=0
int getCallFrameSize() override final
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
virtual int getStackPointerBias()=0
SI optimize exec mask operations pre RA
virtual const uint32_t * getCallPreservedMask(const MachineFunction &MF, CallingConv::ID CC) const =0
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
int getFramePointerRegister() override final
const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const override
Wrapper class representing virtual and physical registers.
A SystemZ-specific class detailing special use registers particular for calling conventions.
unsigned even128(bool Is32bit)
virtual int getCallFrameSize()=0
~SystemZELFRegisters()=default
Destroys the object. Bogus destructor overriding base class destructor.
int getAddressOfCalleeRegister()
bool requiresRegisterScavenging(const MachineFunction &MF) const override
virtual int getFramePointerRegister()=0
ELF calling convention specific use registers Particular when on zLinux in 64 bit mode.
int getReturnFunctionAddressRegister() override final
const TargetRegisterClass * getPointerRegClass(const MachineFunction &MF, unsigned Kind=0) const override
getPointerRegClass - Return the register class to use to hold pointers.
const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const override final
int getStackPointerBias() override final
const int64_t ELFCallFrameSize