LLVM: llvm::M68kInstrInfo Class Reference (original) (raw)

#include "[Target/M68k/M68kInstrInfo.h](M68kInstrInfo%5F8h%5Fsource.html)"

Public Member Functions
M68kInstrInfo (const M68kSubtarget &STI)
const M68kRegisterInfo & getRegisterInfo () const
TargetInstrInfo is a superset of MRegister info.
bool analyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify) const override
bool AnalyzeBranchImpl (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify) const
unsigned removeBranch (MachineBasicBlock &MBB, int *BytesRemoved=nullptr) const override
unsigned insertBranch (MachineBasicBlock &MBB, MachineBasicBlock *TBB, MachineBasicBlock *FBB, ArrayRef< MachineOperand > Cond, const DebugLoc &DL, int *BytesAdded=nullptr) const override
void copyPhysReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const DebugLoc &DL, Register DestReg, Register SrcReg, bool KillSrc, bool RenamableDest=false, bool RenamableSrc=false) const override
bool getStackSlotRange (const TargetRegisterClass *RC, unsigned SubIdx, unsigned &Size, unsigned &Offset, const MachineFunction &MF) const override
void storeRegToStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, Register SrcReg, bool IsKill, int FrameIndex, const TargetRegisterClass *RC, Register VReg, MachineInstr::MIFlag Flags=MachineInstr::NoFlags) const override
void loadRegFromStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, Register DestReg, int FrameIndex, const TargetRegisterClass *RC, Register VReg, MachineInstr::MIFlag Flags=MachineInstr::NoFlags) const override
bool expandPostRAPseudo (MachineInstr &MI) const override
bool isPCRelRegisterOperandLegal (const MachineOperand &MO) const override
void AddSExt (MachineBasicBlock &MBB, MachineBasicBlock::iterator I, DebugLoc DL, unsigned Reg, MVT From, MVT To) const
Add appropriate SExt nodes.
void AddZExt (MachineBasicBlock &MBB, MachineBasicBlock::iterator I, DebugLoc DL, unsigned Reg, MVT From, MVT To) const
Add appropriate ZExt nodes.
bool ExpandMOVI (MachineInstrBuilder &MIB, MVT MVTSize) const
Move immediate to register.
bool ExpandMOVX_RR (MachineInstrBuilder &MIB, MVT MVTDst, MVT MVTSrc) const
Move across register classes without extension.
bool ExpandMOVSZX_RR (MachineInstrBuilder &MIB, bool IsSigned, MVT MVTDst, MVT MVTSrc) const
Move from register and extend.
bool ExpandMOVSZX_RM (MachineInstrBuilder &MIB, bool IsSigned, const MCInstrDesc &Desc, MVT MVTDst, MVT MVTSrc) const
Move from memory and extend.
bool ExpandPUSH_POP (MachineInstrBuilder &MIB, const MCInstrDesc &Desc, bool IsPush) const
Push/Pop to/from stack.
bool ExpandCCR (MachineInstrBuilder &MIB, bool IsToCCR) const
Moves to/from CCR.
bool ExpandMOVEM (MachineInstrBuilder &MIB, const MCInstrDesc &Desc, bool IsRM) const
Expand all MOVEM pseudos into real MOVEMs.
unsigned getGlobalBaseReg (MachineFunction *MF) const
Return a virtual register initialized with the global base register value.
std::pair< unsigned, unsigned > decomposeMachineOperandsTargetFlags (unsigned TF) const override
ArrayRef< std::pair< unsigned, const char * > > getSerializableDirectMachineOperandTargetFlags () const override

Definition at line 237 of file M68kInstrInfo.h.

AddSExt()

AddZExt()

analyzeBranch()

AnalyzeBranchImpl()

Definition at line 85 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(), llvm::make_scope_exit(), MBB, llvm::Ref, and TBB.

Referenced by analyzeBranch().

copyPhysReg()

Definition at line 706 of file M68kInstrInfo.cpp.

References llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), contains(), llvm::dbgs(), DL, llvm::get(), llvm::getKillRegState(), LLVM_DEBUG, llvm_unreachable, MBB, MI, Opc, and RI.

create()

decomposeMachineOperandsTargetFlags()

ExpandCCR()

ExpandMOVEM()

Expand all MOVEM pseudos into real MOVEMs.

Definition at line 593 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::RegState::Implicit, llvm::RegState::ImplicitDefine, MBB, MI, llvm::Offset, and RI.

ExpandMOVI()

Move immediate to register.

Definition at line 353 of file M68kInstrInfo.cpp.

References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), assert(), 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(), llvm::isUInt(), LLVM_DEBUG, MBB, Register, llvm::MachineInstr::removeFromParent(), RI, llvm::MachineInstr::setDesc(), llvm::MachineOperand::setReg(), SubReg, and llvm::RegState::Undef.

ExpandMOVSZX_RM()

Move from memory and extend.

Definition at line 522 of file M68kInstrInfo.cpp.

References AddSExt(), AddZExt(), assert(), llvm::dbgs(), DL, llvm::MachineInstr::getDebugLoc(), llvm::MachineInstrBuilder::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), I, LLVM_DEBUG, MBB, RI, llvm::MachineInstr::setDesc(), and llvm::MachineOperand::setReg().

ExpandMOVSZX_RR()

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 472 of file M68kInstrInfo.cpp.

References llvm::MachineInstrBuilder::addReg(), AddSExt(), AddZExt(), assert(), 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.

ExpandMOVX_RR()

Move across register classes without extension.

Definition at line 433 of file M68kInstrInfo.cpp.

References assert(), llvm::dbgs(), DL, llvm::MachineInstr::eraseFromParent(), llvm::get(), llvm::MachineInstr::getDebugLoc(), llvm::MachineInstrBuilder::getInstr(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), getRegisterInfo(), LLVM_DEBUG, RI, llvm::MachineInstr::setDesc(), llvm::MachineOperand::setReg(), and TRI.

expandPostRAPseudo()

ExpandPUSH_POP()

Push/Pop to/from stack.

Definition at line 559 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().

getGlobalBaseReg()

getRegisterInfo()

getSerializableDirectMachineOperandTargetFlags()

ArrayRef< std::pair< unsigned, const char * > > M68kInstrInfo::getSerializableDirectMachineOperandTargetFlags ( ) const override

getStackSlotRange()

insertBranch()

Definition at line 282 of file M68kInstrInfo.cpp.

References llvm::MachineInstrBuilder::addMBB(), assert(), llvm::BuildMI(), Cond, llvm::Count, DL, llvm::get(), GetCondBranchFromCond(), llvm::getImm(), MBB, Opc, and TBB.

isPCRelRegisterOperandLegal()

loadRegFromStackSlot()

Definition at line 855 of file M68kInstrInfo.cpp.

References llvm::M68k::addFrameReference(), assert(), llvm::BuildMI(), DL, llvm::get(), getLoadRegOpcode(), llvm::MachineFrameInfo::getObjectSize(), MBB, MI, Opc, Subtarget, and TRI.

removeBranch()

storeRegToStackSlot()

Definition at line 839 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.

RI

Subtarget


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