LLVM 22.0.0git
llvm::LoongArchInstrInfo Class Reference

#include "Target/LoongArch/LoongArchInstrInfo.h"

Inheritance diagram for llvm::LoongArchInstrInfo:
[legend]

Public Member Functions

 LoongArchInstrInfo (const LoongArchSubtarget &STI)
MCInst getNop () const override
void copyPhysReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, const DebugLoc &DL, Register DstReg, Register SrcReg, bool KillSrc, bool RenamableDest=false, bool RenamableSrc=false) const override
void storeRegToStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register SrcReg, bool IsKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, Register VReg, MachineInstr::MIFlag Flags=MachineInstr::NoFlags) const override
void loadRegFromStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register DstReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, Register VReg, MachineInstr::MIFlag Flags=MachineInstr::NoFlags) const override
void movImm (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, const DebugLoc &DL, Register DstReg, uint64_t Val, MachineInstr::MIFlag Flag=MachineInstr::NoFlags) const
unsigned getInstSizeInBytes (const MachineInstr &MI) const override
bool isAsCheapAsAMove (const MachineInstr &MI) const override
MachineBasicBlockgetBranchDestBlock (const MachineInstr &MI) const override
bool analyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify) const override
bool isBranchOffsetInRange (unsigned BranchOpc, int64_t BrOffset) const override
bool isSchedulingBoundary (const MachineInstr &MI, const MachineBasicBlock *MBB, const MachineFunction &MF) const override
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 insertIndirectBranch (MachineBasicBlock &MBB, MachineBasicBlock &NewDestBB, MachineBasicBlock &RestoreBB, const DebugLoc &DL, int64_t BrOffset, RegScavenger *RS) const override
bool reverseBranchCondition (SmallVectorImpl< MachineOperand > &Cond) const override
std::pair< unsigned, unsigneddecomposeMachineOperandsTargetFlags (unsigned TF) const override
ArrayRef< std::pair< unsigned, const char * > > getSerializableDirectMachineOperandTargetFlags () const override
ArrayRef< std::pair< unsigned, const char * > > getSerializableBitmaskMachineOperandTargetFlags () const override

Protected Attributes

const LoongArchSubtargetSTI

Detailed Description

Definition at line 26 of file LoongArchInstrInfo.h.

Constructor & Destructor Documentation

◆ LoongArchInstrInfo()

LoongArchInstrInfo::LoongArchInstrInfo ( const LoongArchSubtarget & STI)
explicit

Definition at line 28 of file LoongArchInstrInfo.cpp.

References STI.

Member Function Documentation

◆ analyzeBranch()

bool LoongArchInstrInfo::analyzeBranch ( MachineBasicBlock & MBB,
MachineBasicBlock *& TBB,
MachineBasicBlock *& FBB,
SmallVectorImpl< MachineOperand > & Cond,
bool AllowModify ) const
override

◆ copyPhysReg()

void LoongArchInstrInfo::copyPhysReg ( MachineBasicBlock & MBB,
MachineBasicBlock::iterator MBBI,
const DebugLoc & DL,
Register DstReg,
Register SrcReg,
bool KillSrc,
bool RenamableDest = false,
bool RenamableSrc = false ) const
override

◆ decomposeMachineOperandsTargetFlags()

std::pair< unsigned, unsigned > LoongArchInstrInfo::decomposeMachineOperandsTargetFlags ( unsigned TF) const
override

Definition at line 708 of file LoongArchInstrInfo.cpp.

References llvm::LoongArchII::MO_DIRECT_FLAG_MASK.

◆ getBranchDestBlock()

MachineBasicBlock * LoongArchInstrInfo::getBranchDestBlock ( const MachineInstr & MI) const
override

Definition at line 279 of file LoongArchInstrInfo.cpp.

References assert(), and MI.

Referenced by analyzeBranch().

◆ getInstSizeInBytes()

unsigned LoongArchInstrInfo::getInstSizeInBytes ( const MachineInstr & MI) const
override

◆ getNop()

MCInst LoongArchInstrInfo::getNop ( ) const
override

◆ getSerializableBitmaskMachineOperandTargetFlags()

ArrayRef< std::pair< unsigned, const char * > > LoongArchInstrInfo::getSerializableBitmaskMachineOperandTargetFlags ( ) const
override

Definition at line 752 of file LoongArchInstrInfo.cpp.

References llvm::ArrayRef().

◆ getSerializableDirectMachineOperandTargetFlags()

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

Definition at line 714 of file LoongArchInstrInfo.cpp.

References llvm::ArrayRef().

◆ insertBranch()

unsigned LoongArchInstrInfo::insertBranch ( MachineBasicBlock & MBB,
MachineBasicBlock * TBB,
MachineBasicBlock * FBB,
ArrayRef< MachineOperand > Cond,
const DebugLoc & dl,
int * BytesAdded = nullptr ) const
override

◆ insertIndirectBranch()

◆ isAsCheapAsAMove()

bool LoongArchInstrInfo::isAsCheapAsAMove ( const MachineInstr & MI) const
override

Definition at line 263 of file LoongArchInstrInfo.cpp.

References MI.

◆ isBranchOffsetInRange()

bool LoongArchInstrInfo::isBranchOffsetInRange ( unsigned BranchOpc,
int64_t BrOffset ) const
override

Definition at line 358 of file LoongArchInstrInfo.cpp.

References llvm::isInt(), and llvm_unreachable.

◆ isSchedulingBoundary()

◆ loadRegFromStackSlot()

◆ movImm()

◆ removeBranch()

unsigned LoongArchInstrInfo::removeBranch ( MachineBasicBlock & MBB,
int * BytesRemoved = nullptr ) const
override

Definition at line 537 of file LoongArchInstrInfo.cpp.

References getInstSizeInBytes(), I, and MBB.

◆ reverseBranchCondition()

bool LoongArchInstrInfo::reverseBranchCondition ( SmallVectorImpl< MachineOperand > & Cond) const
override

Definition at line 700 of file LoongArchInstrInfo.cpp.

References assert(), Cond, llvm::getImm(), and getOppositeBranchOpc().

◆ storeRegToStackSlot()

Member Data Documentation

◆ STI

const LoongArchSubtarget& llvm::LoongArchInstrInfo::STI
protected

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