|
LLVM 24.0.0git
|
#include "Target/M68k/M68kInstrInfo.h"
Static Public Member Functions | |
| static const M68kInstrInfo * | create (M68kSubtarget &STI) |
Protected Attributes | |
| const M68kSubtarget & | Subtarget |
| const M68kRegisterInfo | RI |
Definition at line 237 of file M68kInstrInfo.h.
|
explicit |
Definition at line 47 of file M68kInstrInfo.cpp.
Referenced by create().
| void M68kInstrInfo::AddSExt | ( | MachineBasicBlock & | MBB, |
| MachineBasicBlock::iterator | I, | ||
| DebugLoc | DL, | ||
| unsigned | Reg, | ||
| MVT | From, | ||
| MVT | To ) const |
Add appropriate SExt nodes.
Definition at line 317 of file M68kInstrInfo.cpp.
References llvm::MachineInstrBuilder::addReg(), assert(), llvm::BuildMI(), DL, llvm::get(), I, MBB, and RI.
Referenced by ExpandMOVSZX_RM(), and ExpandMOVSZX_RR().
| void M68kInstrInfo::AddZExt | ( | MachineBasicBlock & | MBB, |
| MachineBasicBlock::iterator | I, | ||
| DebugLoc | DL, | ||
| unsigned | Reg, | ||
| MVT | From, | ||
| MVT | To ) const |
Add appropriate ZExt nodes.
Definition at line 334 of file M68kInstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), DL, llvm::get(), I, MBB, RI, and Subtarget.
Referenced by ExpandMOVSZX_RM(), and ExpandMOVSZX_RR().
|
override |
Definition at line 253 of file M68kInstrInfo.cpp.
References AnalyzeBranchImpl(), Cond, MBB, and TBB.
| bool M68kInstrInfo::AnalyzeBranchImpl | ( | MachineBasicBlock & | MBB, |
| MachineBasicBlock *& | TBB, | ||
| MachineBasicBlock *& | FBB, | ||
| SmallVectorImpl< MachineOperand > & | Cond, | ||
| bool | AllowModify ) const |
Definition at line 87 of file M68kInstrInfo.cpp.
References llvm::MachineInstrBuilder::addMBB(), assert(), llvm::BuildMI(), Cond, llvm::M68k::COND_INVALID, llvm::MachineOperand::CreateImm(), llvm::get(), GetCondBranchFromCond(), llvm::M68k::GetCondFromBranchOpc(), GetOppositeBranchCondition(), MBB, llvm::Ref, and TBB.
Referenced by analyzeBranch().
|
override |
Definition at line 641 of file M68kInstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), contains(), DL, llvm::get(), MBB, llvm::reportFatalInternalError(), RI, and llvm::Undef.
Referenced by ExpandMOVI(), ExpandMOVSZX_RM(), and ExpandMOVSZX_RR().
|
override |
Definition at line 738 of file M68kInstrInfo.cpp.
References llvm::LiveRegUnits::addLiveOuts(), llvm::MachineInstrBuilder::addReg(), llvm::LiveRegUnits::available(), llvm::BuildMI(), contains(), llvm::dbgs(), DL, llvm::get(), llvm::getKillRegState(), llvm::MachineFunction::getSubtarget(), llvm::M68kSubtarget::isM68000(), LLVM_DEBUG, llvm_unreachable, MBB, MI, Opc, RI, llvm::BitVector::set_bits(), and llvm::LiveRegUnits::stepBackward().
|
static |
References M68kInstrInfo().
|
override |
Definition at line 989 of file M68kInstrInfo.cpp.
| bool M68kInstrInfo::ExpandMOVEM | ( | MachineInstrBuilder & | MIB, |
| const MCInstrDesc & | Desc, | ||
| bool | IsRM ) const |
Expand all MOVEM pseudos into real MOVEMs.
Definition at line 602 of file M68kInstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::sampleprof::Base, llvm::BuildMI(), llvm::MachineInstrBuilder::copyImplicitOps(), DL, llvm::MachineInstr::eraseFromParent(), llvm::MachineInstr::getDebugLoc(), llvm::MachineOperand::getImm(), llvm::MachineInstrBuilder::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::Implicit, llvm::ImplicitDefine, MBB, MI, llvm::Offset, and RI.
| bool M68kInstrInfo::ExpandMOVI | ( | MachineInstrBuilder & | MIB, |
| MVT | MVTSize ) const |
Move immediate to register.
Definition at line 366 of file M68kInstrInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), assert(), buildClearRegister(), llvm::BuildMI(), llvm::dbgs(), DL, llvm::get(), llvm::MachineInstr::getDebugLoc(), llvm::MachineOperand::getImm(), llvm::MachineInstrBuilder::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), Imm, llvm::isUInt(), LLVM_DEBUG, MBB, Register, llvm::MachineInstr::removeFromParent(), RI, llvm::MachineInstr::setDesc(), and llvm::MachineOperand::setReg().
| bool M68kInstrInfo::ExpandMOVSZX_RM | ( | MachineInstrBuilder & | MIB, |
| bool | IsSigned, | ||
| const MCInstrDesc & | Desc, | ||
| MVT | MVTDst, | ||
| MVT | MVTSrc ) const |
Move from memory and extend.
Definition at line 540 of file M68kInstrInfo.cpp.
References AddSExt(), AddZExt(), assert(), buildClearRegister(), llvm::dbgs(), DL, llvm::MachineInstr::getDebugLoc(), llvm::MachineInstrBuilder::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), I, LLVM_DEBUG, MBB, llvm::MachineInstr::readsRegister(), RI, llvm::MachineInstr::setDesc(), and llvm::MachineOperand::setReg().
| bool M68kInstrInfo::ExpandMOVSZX_RR | ( | MachineInstrBuilder & | MIB, |
| bool | IsSigned, | ||
| MVT | MVTDst, | ||
| MVT | MVTSrc ) const |
Move from register and extend.
Expand SExt MOVE pseudos into a MOV and a EXT if the operands are two different registers or just EXT if it is the same register.
Definition at line 474 of file M68kInstrInfo.cpp.
References llvm::MachineInstrBuilder::addReg(), AddSExt(), AddZExt(), assert(), buildClearRegister(), llvm::BuildMI(), llvm::dbgs(), DL, llvm::MachineInstr::eraseFromParent(), llvm::get(), llvm::MachineInstr::getDebugLoc(), llvm::MachineInstrBuilder::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), getRegisterInfo(), LLVM_DEBUG, MBB, RI, and TRI.
| bool M68kInstrInfo::ExpandMOVX_RR | ( | MachineInstrBuilder & | MIB, |
| MVT | MVTDst, | ||
| MVT | MVTSrc ) const |
Move across register classes without extension.
Definition at line 437 of file M68kInstrInfo.cpp.
References assert(), llvm::dbgs(), llvm::MachineInstr::eraseFromParent(), llvm::get(), llvm::MachineInstrBuilder::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), getRegisterInfo(), LLVM_DEBUG, RI, llvm::MachineInstr::setDesc(), llvm::MachineOperand::setReg(), and TRI.
|
override |
Definition at line 686 of file M68kInstrInfo.cpp.
References Expand2AddrUndef(), ExpandPUSH_POP(), llvm::get(), and MI.
| bool M68kInstrInfo::ExpandPUSH_POP | ( | MachineInstrBuilder & | MIB, |
| const MCInstrDesc & | Desc, | ||
| bool | IsPush ) const |
Push/Pop to/from stack.
Definition at line 586 of file M68kInstrInfo.cpp.
References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), DL, llvm::MachineInstr::eraseFromParent(), llvm::MachineInstr::getDebugLoc(), llvm::MachineInstrBuilder::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), I, MBB, and RI.
Referenced by expandPostRAPseudo().
| unsigned M68kInstrInfo::getGlobalBaseReg | ( | MachineFunction * | MF | ) | const |
Return a virtual register initialized with the global base register value.
Output instructions required to initialize the register in the function entry block, if necessary.
Output instructions required to initialize the register in the function entry block, if necessary.
TODO Move this function to M68kMachineFunctionInfo.
Definition at line 967 of file M68kInstrInfo.cpp.
References llvm::M68kMachineFunctionInfo::getGlobalBaseReg(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getRegInfo(), and llvm::M68kMachineFunctionInfo::setGlobalBaseReg().
|
inline |
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).
Definition at line 252 of file M68kInstrInfo.h.
References RI.
Referenced by ExpandMOVSZX_RR(), and ExpandMOVX_RR().
|
override |
Definition at line 994 of file M68kInstrInfo.cpp.
References llvm::ArrayRef().
|
override |
Definition at line 920 of file M68kInstrInfo.cpp.
References llvm::Offset, and Size.
|
override |
Definition at line 284 of file M68kInstrInfo.cpp.
References llvm::MachineInstrBuilder::addMBB(), assert(), llvm::BuildMI(), Cond, llvm::Count, DL, llvm::get(), GetCondBranchFromCond(), llvm::getImm(), MBB, Opc, and TBB.
|
override |
Definition at line 713 of file M68kInstrInfo.cpp.
References assert(), llvm::MachineOperand::getOperandNo(), llvm::MachineOperand::getParent(), llvm::MachineOperand::isReg(), llvm::Regex::match(), and MI.
|
override |
Definition at line 946 of file M68kInstrInfo.cpp.
References llvm::M68k::addFrameReference(), assert(), llvm::BuildMI(), DL, llvm::get(), getLoadRegOpcode(), llvm::MachineFrameInfo::getObjectSize(), MBB, MI, Opc, Subtarget, and TRI.
|
override |
Definition at line 261 of file M68kInstrInfo.cpp.
References assert(), llvm::M68k::COND_INVALID, llvm::Count, getCondFromBranchOpc(), I, and MBB.
|
override |
Definition at line 930 of file M68kInstrInfo.cpp.
References llvm::M68k::addFrameReference(), llvm::MachineInstrBuilder::addReg(), assert(), llvm::BuildMI(), DL, llvm::get(), llvm::getKillRegState(), llvm::MachineFrameInfo::getObjectSize(), getStoreRegOpcode(), MBB, MI, Opc, Subtarget, and TRI.
|
protected |
Definition at line 242 of file M68kInstrInfo.h.
Referenced by AddSExt(), AddZExt(), buildClearRegister(), copyPhysReg(), ExpandMOVEM(), ExpandMOVI(), ExpandMOVSZX_RM(), ExpandMOVSZX_RR(), ExpandMOVX_RR(), ExpandPUSH_POP(), getRegisterInfo(), and M68kInstrInfo().
|
protected |
Definition at line 241 of file M68kInstrInfo.h.
Referenced by AddZExt(), loadRegFromStackSlot(), M68kInstrInfo(), and storeRegToStackSlot().