LLVM API Documentation
#include <Mips16InstrInfo.h>
Definition at line 22 of file Mips16InstrInfo.h.
Mips16InstrInfo::Mips16InstrInfo | ( | const MipsSubtarget & | STI | ) | [explicit] |
Definition at line 34 of file Mips16InstrInfo.cpp.
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::BuildAddiuSpImm | ( | MachineBasicBlock & | MBB, |
MachineBasicBlock::iterator | I, | ||
int64_t | Imm | ||
) | const |
Definition at line 447 of file Mips16InstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::BuildMI(), and llvm::MachineBasicBlock::end().
Referenced by adjustStackPtr(), makeFrame(), and restoreFrame().
void Mips16InstrInfo::copyPhysReg | ( | MachineBasicBlock & | MBB, |
MachineBasicBlock::iterator | MI, | ||
DebugLoc | DL, | ||
unsigned | DestReg, | ||
unsigned | SrcReg, | ||
bool | KillSrc | ||
) | const [override] |
Definition at line 61 of file Mips16InstrInfo.cpp.
References llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), contains(), llvm::RegState::Define, and llvm::getKillRegState().
Referenced by loadImmediate().
bool Mips16InstrInfo::expandPostRAPseudo | ( | MachineBasicBlock::iterator | MI | ) | const [override] |
Definition at line 129 of file Mips16InstrInfo.cpp.
References llvm::MachineBasicBlock::erase(), and llvm::MachineBasicBlock::getParent().
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 |
Emit a series of instructions to load an immediate.
This function generates the sequence of instructions needed to get the result of adding register REG and immediate IMM.
Definition at line 306 of file Mips16InstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), copyPhysReg(), llvm::RegScavenger::enterBasicBlock(), llvm::BitVector::find_first(), llvm::RegScavenger::forward(), llvm::MachineOperand::getReg(), llvm::RegScavenger::getRegsAvailable(), llvm::MachineOperand::isDef(), llvm::MachineOperand::isReg(), llvm::TargetRegisterInfo::isVirtualRegister(), llvm::RegState::Kill, llvm::BitVector::reset(), and T1.
void Mips16InstrInfo::loadRegFromStack | ( | MachineBasicBlock & | MBB, |
MachineBasicBlock::iterator | MBBI, | ||
unsigned | DestReg, | ||
int | FrameIndex, | ||
const TargetRegisterClass * | RC, | ||
const TargetRegisterInfo * | TRI, | ||
int64_t | Offset | ||
) | const [override, virtual] |
Implements llvm::MipsInstrInfo.
Definition at line 111 of file Mips16InstrInfo.cpp.
References llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMemOperand(), llvm::BuildMI(), llvm::MachineBasicBlock::end(), llvm::MipsInstrInfo::GetMemOperand(), and llvm::MachineMemOperand::MOLoad.
void Mips16InstrInfo::makeFrame | ( | unsigned | SP, |
int64_t | FrameSize, | ||
MachineBasicBlock & | MBB, | ||
MachineBasicBlock::iterator | I | ||
) | const |
Definition at line 198 of file Mips16InstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), addSaveRestoreRegs(), BuildAddiuSpImm(), llvm::BuildMI(), llvm::MachineBasicBlock::end(), llvm::MachineFrameInfo::getCalleeSavedInfo(), llvm::MachineFunction::getFrameInfo(), llvm::MachineBasicBlock::getParent(), llvm::MipsRegisterInfo::getReservedRegs(), and llvm::isInt< 16 >().
Referenced by llvm::Mips16FrameLowering::emitPrologue().
void Mips16InstrInfo::restoreFrame | ( | unsigned | SP, |
int64_t | FrameSize, | ||
MachineBasicBlock & | MBB, | ||
MachineBasicBlock::iterator | I | ||
) | const |
Definition at line 228 of file Mips16InstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), addSaveRestoreRegs(), BuildAddiuSpImm(), llvm::BuildMI(), llvm::RegState::Define, llvm::MachineBasicBlock::end(), llvm::MachineFrameInfo::getCalleeSavedInfo(), llvm::MachineFunction::getFrameInfo(), llvm::MachineBasicBlock::getParent(), llvm::MipsRegisterInfo::getReservedRegs(), and llvm::isInt< 16 >().
Referenced by llvm::Mips16FrameLowering::emitEpilogue().
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] |
Implements llvm::MipsInstrInfo.
Definition at line 93 of file Mips16InstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMemOperand(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), llvm::MachineBasicBlock::end(), llvm::getKillRegState(), llvm::MipsInstrInfo::GetMemOperand(), and llvm::MachineMemOperand::MOStore.
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().