14 #ifndef MIPS16INSTRUCTIONINFO_H
15 #define MIPS16INSTRUCTIONINFO_H
44 int &FrameIndex)
const;
48 unsigned DestReg,
unsigned SrcReg,
53 unsigned SrcReg,
bool isKill,
int FrameIndex,
56 int64_t Offset)
const;
60 unsigned DestReg,
int FrameIndex,
63 int64_t Offset)
const;
89 unsigned &NewImm)
const;
94 unsigned &NewImm)
const;
99 return ((offset & 7) == 0) && isInt<11>(offset);
114 virtual unsigned getAnalyzableBrOpc(
unsigned Opc)
const;
122 unsigned Reg1,
unsigned Reg2)
const;
125 void adjustStackPtrBigUnrestricted(
unsigned SP, int64_t Amount,
void makeFrame(unsigned SP, int64_t FrameSize, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const
unsigned loadImmediate(unsigned FrameReg, int64_t Imm, MachineBasicBlock &MBB, MachineBasicBlock::iterator II, DebugLoc DL, unsigned &NewImm) const
Emit a series of instructions to load an immediate.
const MCInstrDesc & AddiuSpImm(int64_t Imm) const
void adjustStackPtr(unsigned SP, int64_t Amount, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const
Adjust SP by Amount bytes.
virtual unsigned isStoreToStackSlot(const MachineInstr *MI, int &FrameIndex) const
static bool validImmediate(unsigned Opcode, unsigned Reg, int64_t Amount)
virtual bool expandPostRAPseudo(MachineBasicBlock::iterator MI) const
unsigned basicLoadImmediate(unsigned FrameReg, int64_t Imm, MachineBasicBlock &MBB, MachineBasicBlock::iterator II, DebugLoc DL, unsigned &NewImm) const
void BuildAddiuSpImm(MachineBasicBlock &MBB, MachineBasicBlock::iterator I, int64_t Imm) const
void restoreFrame(unsigned SP, int64_t FrameSize, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const
bundle_iterator< MachineInstr, instr_iterator > iterator
virtual void loadRegFromStack(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, int64_t Offset) const
unsigned getInlineAsmLength(const char *Str, const MCAsmInfo &MAI) const
virtual void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, DebugLoc DL, unsigned DestReg, unsigned SrcReg, bool KillSrc) const
virtual unsigned getOppositeBranchOpc(unsigned Opc) const
static bool validSpImm8(int offset)
virtual const MipsRegisterInfo & getRegisterInfo() const
Mips16InstrInfo(MipsTargetMachine &TM)
virtual void storeRegToStack(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, int64_t Offset) const
virtual unsigned isLoadFromStackSlot(const MachineInstr *MI, int &FrameIndex) const