27 #define GET_REGINFO_TARGET_DESC
28 #include "AArch64GenRegisterInfo.inc"
38 return CSR_PCS_SaveList;
43 return CSR_PCS_RegMask;
47 return TLSDesc_RegMask;
52 if (RC == &AArch64::FlagClassRegClass)
53 return &AArch64::GPR64RegClass;
65 Reserved.
set(AArch64::XSP);
66 Reserved.
set(AArch64::WSP);
68 Reserved.
set(AArch64::XZR);
69 Reserved.
set(AArch64::WZR);
72 Reserved.
set(AArch64::X29);
73 Reserved.
set(AArch64::W29);
82 unsigned FIOperandNum,
84 assert(SPAdj == 0 &&
"Cannot deal with nonzero SPAdj yet");
102 MinCSFI = CSI[0].getFrameIdx();
103 MaxCSFI = CSI[CSI.size() - 1].getFrameIdx();
107 bool IsCalleeSaveOp = FrameIndex >= MinCSFI && FrameIndex <= MaxCSFI;
127 if (MI.
getOpcode() == AArch64::ADDxxi_lsl0_s) {
139 if (Offset % OffsetScale != 0 || Offset < MinOffset || Offset > MaxOffset) {
143 BaseReg, FrameReg, BaseReg, Offset);
150 assert(Offset >= 0 &&
"Unexpected negative offset from SP");
const MachineFunction * getParent() const
void ChangeToRegister(unsigned Reg, bool isDef, bool isImp=false, bool isKill=false, bool isDead=false, bool isUndef=false, bool isDebug=false)
unsigned createVirtualRegister(const TargetRegisterClass *RegClass)
const uint16_t * getCalleeSavedRegs(const MachineFunction *MF=0) const
const uint32_t * getCallPreservedMask(CallingConv::ID) const
const std::vector< CalleeSavedInfo > & getCalleeSavedInfo() const
unsigned getFrameRegister(const MachineFunction &MF) const
const HexagonInstrInfo * TII
virtual bool hasFP(const MachineFunction &MF) const =0
Abstract Stack Frame Information.
ID
LLVM Calling Convention Representation.
BitVector getReservedRegs(const MachineFunction &MF) const
const uint32_t * getTLSDescCallPreservedMask() const
void eliminateFrameIndex(MachineBasicBlock::iterator II, int SPAdj, unsigned FIOperandNum, RegScavenger *Rs=NULL) const
void ChangeToImmediate(int64_t ImmVal)
const MachineBasicBlock * getParent() const
bool isDebugValue() const
bundle_iterator< MachineInstr, instr_iterator > iterator
const MachineOperand & getOperand(unsigned i) const
int64_t resolveFrameIndexReference(MachineFunction &MF, int FrameIndex, unsigned &FrameReg, int SPAdj, bool IsCalleeSaveOp) const
virtual const TargetFrameLowering * getFrameLowering() const
virtual bool useFPForAddressing(const MachineFunction &MF) const
virtual const TargetInstrInfo * getInstrInfo() const
MachineFrameInfo * getFrameInfo()
MachineRegisterInfo & getRegInfo()
void getAddressConstraints(const MachineInstr &MI, int &AccessScale, int &MinOffset, int &MaxOffset) const
const TargetMachine & getTarget() const
bool useFPForScavengingIndex(const MachineFunction &MF) const
void emitRegUpdate(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, DebugLoc dl, const TargetInstrInfo &TII, unsigned DstReg, unsigned SrcReg, unsigned ScratchReg, int64_t NumBytes, MachineInstr::MIFlag MIFlags=MachineInstr::NoFlags)
const TargetRegisterClass * getCrossCopyRegClass(const TargetRegisterClass *RC) const