LLVM API Documentation

Public Member Functions | Static Public Member Functions
llvm::Mips16InstrInfo Class Reference

#include <Mips16InstrInfo.h>

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

List of all members.

Public Member Functions

 Mips16InstrInfo (const MipsSubtarget &STI)
const MipsRegisterInfogetRegisterInfo () const override
unsigned isLoadFromStackSlot (const MachineInstr *MI, int &FrameIndex) const override
unsigned isStoreToStackSlot (const MachineInstr *MI, int &FrameIndex) const override
void copyPhysReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, DebugLoc DL, unsigned DestReg, unsigned SrcReg, bool KillSrc) const override
void storeRegToStack (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, int64_t Offset) const override
void loadRegFromStack (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, unsigned DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, int64_t Offset) const override
bool expandPostRAPseudo (MachineBasicBlock::iterator MI) const override
unsigned getOppositeBranchOpc (unsigned Opc) const override
void makeFrame (unsigned SP, int64_t FrameSize, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const
void restoreFrame (unsigned SP, int64_t FrameSize, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const
void adjustStackPtr (unsigned SP, int64_t Amount, MachineBasicBlock &MBB, MachineBasicBlock::iterator I) const
 Adjust SP by Amount bytes.
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 MCInstrDescAddiuSpImm (int64_t Imm) const
void BuildAddiuSpImm (MachineBasicBlock &MBB, MachineBasicBlock::iterator I, int64_t Imm) const
unsigned getInlineAsmLength (const char *Str, const MCAsmInfo &MAI) const override

Static Public Member Functions

static bool validImmediate (unsigned Opcode, unsigned Reg, int64_t Amount)
static bool validSpImm8 (int offset)

Detailed Description

Definition at line 22 of file Mips16InstrInfo.h.


Constructor & Destructor Documentation

Definition at line 34 of file Mips16InstrInfo.cpp.


Member Function Documentation

const MCInstrDesc & Mips16InstrInfo::AddiuSpImm ( int64_t  Imm) const

Definition at line 439 of file Mips16InstrInfo.cpp.

References validSpImm8().

void Mips16InstrInfo::adjustStackPtr ( unsigned  SP,
int64_t  Amount,
MachineBasicBlock MBB,
MachineBasicBlock::iterator  I 
) const

Adjust SP by Amount bytes.

Definition at line 295 of file Mips16InstrInfo.cpp.

References BuildAddiuSpImm(), and llvm::isInt< 16 >().

Referenced by llvm::Mips16FrameLowering::eliminateCallFramePseudoInstr().

void Mips16InstrInfo::copyPhysReg ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MI,
DebugLoc  DL,
unsigned  DestReg,
unsigned  SrcReg,
bool  KillSrc 
) const [override]
unsigned Mips16InstrInfo::getInlineAsmLength ( const char *  Str,
const MCAsmInfo MAI 
) const [override]

Measure the specified inline asm to determine an approximation of its length. Comments (which run till the next SeparatorString or newline) do not count as an instruction. Any other non-whitespace text is considered an instruction, with multiple instructions separated by SeparatorString or newlines. Variable-length instructions are not handled here; this function may be overloaded in the target code to do that. We implement the special case of the .space directive taking only an integer argument, which is the size in bytes. This is used for creating inline code spacing for testing purposes using inline assembly.

Definition at line 490 of file Mips16InstrInfo.cpp.

References llvm::dbgs(), DEBUG, llvm::MCAsmInfo::getCommentString(), llvm::MCAsmInfo::getMaxInstLength(), llvm::MCAsmInfo::getSeparatorString(), llvm::LibFunc::strlen, llvm::LibFunc::strncmp, and llvm::LibFunc::strtol.

unsigned Mips16InstrInfo::getOppositeBranchOpc ( unsigned  Opc) const [override, virtual]

GetOppositeBranchOpc - Return the inverse of the specified opcode, e.g. turning BEQ to BNE.

Implements llvm::MipsInstrInfo.

Definition at line 145 of file Mips16InstrInfo.cpp.

References llvm_unreachable.

const MipsRegisterInfo & Mips16InstrInfo::getRegisterInfo ( ) const [override, 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).

Implements llvm::MipsInstrInfo.

Definition at line 37 of file Mips16InstrInfo.cpp.

Referenced by llvm::Mips16FrameLowering::processFunctionBeforeCalleeSavedScan().

unsigned Mips16InstrInfo::isLoadFromStackSlot ( const MachineInstr MI,
int FrameIndex 
) const [override]

isLoadFromStackSlot - If the specified machine instruction is a direct load from a stack slot, return the virtual or physical register number of the destination along with the FrameIndex of the loaded stack slot. If not, return 0. This predicate must return 0 if the instruction has any side effects other than loading from the stack slot.

Definition at line 46 of file Mips16InstrInfo.cpp.

unsigned Mips16InstrInfo::isStoreToStackSlot ( const MachineInstr MI,
int FrameIndex 
) const [override]

isStoreToStackSlot - If the specified machine instruction is a direct store to a stack slot, return the virtual or physical register number of the source reg along with the FrameIndex of the loaded stack slot. If not, return 0. This predicate must return 0 if the instruction has any side effects other than storing to the stack slot.

Definition at line 56 of file Mips16InstrInfo.cpp.

unsigned Mips16InstrInfo::loadImmediate ( unsigned  FrameReg,
int64_t  Imm,
MachineBasicBlock MBB,
MachineBasicBlock::iterator  II,
DebugLoc  DL,
unsigned NewImm 
) const
void Mips16InstrInfo::loadRegFromStack ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
unsigned  DestReg,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI,
int64_t  Offset 
) const [override, virtual]
void Mips16InstrInfo::makeFrame ( unsigned  SP,
int64_t  FrameSize,
MachineBasicBlock MBB,
MachineBasicBlock::iterator  I 
) const
void Mips16InstrInfo::restoreFrame ( unsigned  SP,
int64_t  FrameSize,
MachineBasicBlock MBB,
MachineBasicBlock::iterator  I 
) const
void Mips16InstrInfo::storeRegToStack ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
unsigned  SrcReg,
bool  isKill,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI,
int64_t  Offset 
) const [override, virtual]
bool Mips16InstrInfo::validImmediate ( unsigned  Opcode,
unsigned  Reg,
int64_t  Amount 
) [static]

Definition at line 456 of file Mips16InstrInfo.cpp.

References llvm::isInt< 16 >(), and llvm_unreachable.

static bool llvm::Mips16InstrInfo::validSpImm8 ( int  offset) [inline, static]

Definition at line 93 of file Mips16InstrInfo.h.

Referenced by AddiuSpImm().


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