LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
llvm::MipsInstrInfo Class Referenceabstract

#include <MipsInstrInfo.h>

Inheritance diagram for llvm::MipsInstrInfo:
Inheritance graph
[legend]
Collaboration diagram for llvm::MipsInstrInfo:
Collaboration graph
[legend]

Public Types

enum  BranchType {
  BT_None, BT_NoBranch, BT_Uncond, BT_Cond,
  BT_CondUncond, BT_Indirect
}
 

Public Member Functions

 MipsInstrInfo (MipsTargetMachine &TM, unsigned UncondBrOpc)
 
virtual bool AnalyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify) const
 Branch Analysis. More...
 
virtual unsigned RemoveBranch (MachineBasicBlock &MBB) const
 
virtual unsigned InsertBranch (MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, const SmallVectorImpl< MachineOperand > &Cond, DebugLoc DL) const
 
virtual bool ReverseBranchCondition (SmallVectorImpl< MachineOperand > &Cond) const
 
BranchType AnalyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify, SmallVectorImpl< MachineInstr * > &BranchInstrs) const
 
virtual void insertNoop (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI) const
 Insert nop instruction when hazard condition is found. More...
 
virtual const MipsRegisterInfogetRegisterInfo () const =0
 
virtual unsigned getOppositeBranchOpc (unsigned Opc) const =0
 
unsigned GetInstSizeInBytes (const MachineInstr *MI) const
 Return the number of bytes of code the specified instruction may be. More...
 
virtual void storeRegToStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const
 
virtual void loadRegFromStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned DestReg, 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 void loadRegFromStack (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, unsigned DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, int64_t Offset) const =0
 
MachineInstrBuilder genInstrWithNewOpc (unsigned NewOpc, MachineBasicBlock::iterator I) const
 

Static Public Member Functions

static const MipsInstrInfocreate (MipsTargetMachine &TM)
 

Protected Member Functions

bool isZeroImm (const MachineOperand &op) const
 
MachineMemOperandGetMemOperand (MachineBasicBlock &MBB, int FI, unsigned Flag) const
 

Protected Attributes

MipsTargetMachineTM
 
unsigned UncondBrOpc
 

Detailed Description

Definition at line 29 of file MipsInstrInfo.h.

Member Enumeration Documentation

Enumerator
BT_None 
BT_NoBranch 
BT_Uncond 
BT_Cond 
BT_CondUncond 
BT_Indirect 

Definition at line 36 of file MipsInstrInfo.h.

Constructor & Destructor Documentation

MipsInstrInfo::MipsInstrInfo ( MipsTargetMachine TM,
unsigned  UncondBrOpc 
)
explicit

Definition at line 33 of file MipsInstrInfo.cpp.

Member Function Documentation

bool MipsInstrInfo::AnalyzeBranch ( MachineBasicBlock MBB,
MachineBasicBlock *&  TBB,
MachineBasicBlock *&  FBB,
SmallVectorImpl< MachineOperand > &  Cond,
bool  AllowModify 
) const
virtual

Branch Analysis.

Definition at line 86 of file MipsInstrInfo.cpp.

References llvm::X86ISD::BT, BT_Indirect, and BT_None.

MipsInstrInfo::BranchType MipsInstrInfo::AnalyzeBranch ( MachineBasicBlock MBB,
MachineBasicBlock *&  TBB,
MachineBasicBlock *&  FBB,
SmallVectorImpl< MachineOperand > &  Cond,
bool  AllowModify,
SmallVectorImpl< MachineInstr * > &  BranchInstrs 
) const
const MipsInstrInfo * MipsInstrInfo::create ( MipsTargetMachine TM)
static
MachineInstrBuilder MipsInstrInfo::genInstrWithNewOpc ( unsigned  NewOpc,
MachineBasicBlock::iterator  I 
) const

Create an instruction which has the same operands and memory operands as MI but has a new opcode.

Definition at line 285 of file MipsInstrInfo.cpp.

References llvm::MachineInstrBuilder::addOperand(), llvm::BuildMI(), I, and llvm::MachineInstrBuilder::setMemRefs().

unsigned MipsInstrInfo::GetInstSizeInBytes ( const MachineInstr MI) const
MachineMemOperand * MipsInstrInfo::GetMemOperand ( MachineBasicBlock MBB,
int  FI,
unsigned  Flag 
) const
protected
virtual unsigned llvm::MipsInstrInfo::getOppositeBranchOpc ( unsigned  Opc) const
pure virtual
virtual const MipsRegisterInfo& llvm::MipsInstrInfo::getRegisterInfo ( ) const
pure virtual

getRegisterInfo - TargetInstrInfo is a superset of MRegister info. As such, whenever a client has an instance of instruction info, it should always be able to get register info as well (through this method).

Implemented in llvm::MipsSEInstrInfo, and llvm::Mips16InstrInfo.

unsigned MipsInstrInfo::InsertBranch ( MachineBasicBlock MBB,
MachineBasicBlock TBB,
MachineBasicBlock FBB,
const SmallVectorImpl< MachineOperand > &  Cond,
DebugLoc  DL 
) const
virtual
void MipsInstrInfo::insertNoop ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI 
) const
virtual

Insert nop instruction when hazard condition is found.

insertNoop - If data hazard condition is found insert the target nop instruction.

Definition at line 51 of file MipsInstrInfo.cpp.

References llvm::BuildMI().

bool MipsInstrInfo::isZeroImm ( const MachineOperand op) const
protected
virtual void llvm::MipsInstrInfo::loadRegFromStack ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI,
unsigned  DestReg,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI,
int64_t  Offset 
) const
pure virtual
virtual void llvm::MipsInstrInfo::loadRegFromStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
unsigned  DestReg,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI 
) const
inlinevirtual

Definition at line 94 of file MipsInstrInfo.h.

References loadRegFromStack().

unsigned MipsInstrInfo::RemoveBranch ( MachineBasicBlock MBB) const
virtual
bool MipsInstrInfo::ReverseBranchCondition ( SmallVectorImpl< MachineOperand > &  Cond) const
virtual

ReverseBranchCondition - Return the inverse opcode of the specified Branch instruction.

Definition at line 175 of file MipsInstrInfo.cpp.

References getOppositeBranchOpc(), and llvm::SmallVectorTemplateCommon< T >::size().

virtual void llvm::MipsInstrInfo::storeRegToStack ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI,
unsigned  SrcReg,
bool  isKill,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI,
int64_t  Offset 
) const
pure virtual
virtual void llvm::MipsInstrInfo::storeRegToStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
unsigned  SrcReg,
bool  isKill,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI 
) const
inlinevirtual

Definition at line 86 of file MipsInstrInfo.h.

References storeRegToStack().

Member Data Documentation

MipsTargetMachine& llvm::MipsInstrInfo::TM
protected
unsigned llvm::MipsInstrInfo::UncondBrOpc
protected

Definition at line 33 of file MipsInstrInfo.h.

Referenced by AnalyzeBranch(), and InsertBranch().


The documentation for this class was generated from the following files: