14 #ifndef MIPSINSTRUCTIONINFO_H
15 #define MIPSINSTRUCTIONINFO_H
24 #define GET_INSTRINFO_HEADER
25 #include "MipsGenInstrInfo.inc"
30 virtual void anchor();
53 bool AllowModify)
const;
107 int64_t Offset)
const = 0;
114 int64_t Offset)
const = 0;
125 unsigned Flag)
const;
128 virtual unsigned getAnalyzableBrOpc(
unsigned Opc)
const = 0;
130 void AnalyzeCondBr(
const MachineInstr *Inst,
unsigned Opc,
bool isZeroImm(const MachineOperand &op) const
virtual bool ReverseBranchCondition(SmallVectorImpl< MachineOperand > &Cond) const
const MipsInstrInfo * createMips16InstrInfo(MipsTargetMachine &TM)
Create MipsInstrInfo objects.
virtual void loadRegFromStack(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, int64_t Offset) const =0
static const MipsInstrInfo * create(MipsTargetMachine &TM)
virtual unsigned getOppositeBranchOpc(unsigned Opc) const =0
virtual bool AnalyzeBranch(MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify) const
Branch Analysis.
virtual const MipsRegisterInfo & getRegisterInfo() const =0
const MipsInstrInfo * createMipsSEInstrInfo(MipsTargetMachine &TM)
virtual void storeRegToStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const
virtual void storeRegToStack(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, int64_t Offset) const =0
virtual unsigned RemoveBranch(MachineBasicBlock &MBB) const
bundle_iterator< MachineInstr, instr_iterator > iterator
MipsInstrInfo(MipsTargetMachine &TM, unsigned UncondBrOpc)
virtual unsigned InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, const SmallVectorImpl< MachineOperand > &Cond, DebugLoc DL) const
virtual void insertNoop(MachineBasicBlock &MBB, MachineBasicBlock::iterator MI) const
Insert nop instruction when hazard condition is found.
virtual void loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const
unsigned GetInstSizeInBytes(const MachineInstr *MI) const
Return the number of bytes of code the specified instruction may be.
MachineMemOperand * GetMemOperand(MachineBasicBlock &MBB, int FI, unsigned Flag) const
MachineInstrBuilder genInstrWithNewOpc(unsigned NewOpc, MachineBasicBlock::iterator I) const