14 #ifndef LLVM_TARGET_AARCH64INSTRINFO_H
15 #define LLVM_TARGET_AARCH64INSTRINFO_H
20 #define GET_INSTRINFO_HEADER
21 #include "AArch64GenInstrInfo.inc"
25 class AArch64Subtarget;
43 unsigned DestReg,
unsigned SrcReg,
53 unsigned DestReg,
int FrameIdx,
60 bool AllowModify =
false)
const;
91 unsigned FrameReg,
int &Offset,
92 const AArch64InstrInfo &
TII);
96 DebugLoc dl,
const TargetInstrInfo &
TII,
97 unsigned DstReg,
unsigned SrcReg,
unsigned ScratchReg,
102 DebugLoc dl,
const TargetInstrInfo &
TII,
103 unsigned ScratchReg, int64_t NumBytes,
bool ReverseBranchCondition(SmallVectorImpl< MachineOperand > &Cond) const
bool expandPostRAPseudo(MachineBasicBlock::iterator MI) const
const HexagonInstrInfo * TII
unsigned estimateRSStackLimit(MachineFunction &MF) const
void storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const
void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, DebugLoc DL, unsigned DestReg, unsigned SrcReg, bool KillSrc) const
bool rewriteA64FrameIndex(MachineInstr &MI, unsigned FrameRegIdx, unsigned FrameReg, int &Offset, const AArch64InstrInfo &TII)
const TargetRegisterInfo & getRegisterInfo() const
unsigned InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, const SmallVectorImpl< MachineOperand > &Cond, DebugLoc DL) const
bundle_iterator< MachineInstr, instr_iterator > iterator
void emitSPUpdate(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, DebugLoc dl, const TargetInstrInfo &TII, unsigned ScratchReg, int64_t NumBytes, MachineInstr::MIFlag MIFlags=MachineInstr::NoFlags)
unsigned getInstSizeInBytes(const MachineInstr &MI) const
unsigned RemoveBranch(MachineBasicBlock &MBB) const
bool AnalyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify=false) const
AArch64InstrInfo(const AArch64Subtarget &TM)
void loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned DestReg, int FrameIdx, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const
const AArch64Subtarget & getSubTarget() const
void getAddressConstraints(const MachineInstr &MI, int &AccessScale, int &MinOffset, int &MaxOffset) 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)
unsigned getInstBundleLength(const MachineInstr &MI) const