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_l32 : subreg_h64;
29inline unsigned odd128(
bool Is32bit) {
30 return Is32bit ? subreg_ll32 : subreg_l64;
139 unsigned Kind=0)
const override {
140 return &SystemZ::ADDR64BitRegClass;
167 int SPAdj,
unsigned FIOperandNum,
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
SI optimize exec mask operations pre RA
static bool contains(SmallPtrSetImpl< ConstantExpr * > &Cache, ConstantExpr *Expr, Constant *C)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Representation of each machine instruction.
Wrapper class representing virtual and physical registers.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
A SystemZ-specific class detailing special use registers particular for calling conventions.
virtual ~SystemZCallingConventionRegisters()=default
Destroys the object.
virtual const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const =0
virtual int getStackPointerBias()=0
virtual const uint32_t * getCallPreservedMask(const MachineFunction &MF, CallingConv::ID CC) const =0
virtual int getFramePointerRegister()=0
virtual int getReturnFunctionAddressRegister()=0
virtual int getCallFrameSize()=0
virtual int getStackPointerRegister()=0
ELF calling convention specific use registers Particular when on zLinux in 64 bit mode.
~SystemZELFRegisters()=default
Destroys the object. Bogus destructor overriding base class destructor.
int getStackPointerRegister() final
int getStackPointerBias() final
int getReturnFunctionAddressRegister() final
const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const final
int getFramePointerRegister() final
int getCallFrameSize() final
const uint32_t * getCallPreservedMask(const MachineFunction &MF, CallingConv::ID CC) const final
XPLINK64 calling convention specific use registers Particular to z/OS when in 64 bit mode.
int getCallFrameSize() final
const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const final
int getAddressOfCalleeRegister()
int getStackPointerBias() final
int getReturnFunctionAddressRegister() final
int getStackPointerRegister() final
~SystemZXPLINK64Registers()=default
Destroys the object. Bogus destructor overriding base class destructor.
int getFramePointerRegister() final
const uint32_t * getCallPreservedMask(const MachineFunction &MF, CallingConv::ID CC) const final
const int64_t ELFCallFrameSize
unsigned odd128(bool Is32bit)
unsigned even128(bool Is32bit)
bool isHighReg(unsigned int Reg)
This is an optimization pass for GlobalISel generic memory operations.
const uint32_t * getNoPreservedMask() const override
const uint32_t * getCallPreservedMask(const MachineFunction &MF, CallingConv::ID CC) const override
bool eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj, unsigned FIOperandNum, RegScavenger *RS) const override
BitVector getReservedRegs(const MachineFunction &MF) const override
const TargetRegisterClass * getPointerRegClass(const MachineFunction &MF, unsigned Kind=0) const override
getPointerRegClass - Return the register class to use to hold pointers.
bool requiresRegisterScavenging(const MachineFunction &MF) const override
bool getRegAllocationHints(Register VirtReg, ArrayRef< MCPhysReg > Order, SmallVectorImpl< MCPhysReg > &Hints, const MachineFunction &MF, const VirtRegMap *VRM, const LiveRegMatrix *Matrix) const override
const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const override
bool requiresFrameIndexScavenging(const MachineFunction &MF) const override
Register getFrameRegister(const MachineFunction &MF) const override
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.
const TargetRegisterClass * getCrossCopyRegClass(const TargetRegisterClass *RC) const override
getCrossCopyRegClass - Returns a legal register class to copy a register in the specified class to or...