LLVM 22.0.0git
llvm::VEInstrInfo Class Reference

#include "Target/VE/VEInstrInfo.h"

Inheritance diagram for llvm::VEInstrInfo:
[legend]

Public Member Functions

 VEInstrInfo (const VESubtarget &ST)
const VERegisterInfogetRegisterInfo () const
 getRegisterInfo - TargetInstrInfo is a superset of MRegister info.
bool analyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify=false) const override
 Branch Analysis & Modification {.
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
bool reverseBranchCondition (SmallVectorImpl< MachineOperand > &Cond) const override
void copyPhysReg (MachineBasicBlock &MBB, MachineBasicBlock::iterator I, const DebugLoc &DL, Register DestReg, Register SrcReg, bool KillSrc, bool RenamableDest=false, bool RenamableSrc=false) const override
 } Branch Analysis & Modification
Register isLoadFromStackSlot (const MachineInstr &MI, int &FrameIndex) const override
 Stack Spill & Reload {.
Register 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.
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 DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, Register VReg, MachineInstr::MIFlag Flags=MachineInstr::NoFlags) const override
bool foldImmediate (MachineInstr &UseMI, MachineInstr &DefMI, Register Reg, MachineRegisterInfo *MRI) const override
 } Stack Spill & Reload
Register getGlobalBaseReg (MachineFunction *MF) const
 } Optimization
bool expandPostRAPseudo (MachineInstr &MI) const override
bool expandExtendStackPseudo (MachineInstr &MI) const
bool expandGetStackTopPseudo (MachineInstr &MI) const

Detailed Description

Definition at line 51 of file VEInstrInfo.h.

Constructor & Destructor Documentation

◆ VEInstrInfo()

VEInstrInfo::VEInstrInfo ( const VESubtarget & ST)
explicit

Definition at line 37 of file VEInstrInfo.cpp.

Referenced by expandExtendStackPseudo(), and expandGetStackTopPseudo().

Member Function Documentation

◆ analyzeBranch()

◆ copyPhysReg()

◆ expandExtendStackPseudo()

◆ expandGetStackTopPseudo()

◆ expandPostRAPseudo()

◆ foldImmediate()

bool VEInstrInfo::foldImmediate ( MachineInstr & UseMI,
MachineInstr & DefMI,
Register Reg,
MachineRegisterInfo * MRI ) const
override

} Stack Spill & Reload

Optimization {

Definition at line 576 of file VEInstrInfo.cpp.

References assert(), llvm::dbgs(), DefMI, llvm::get(), INSTRKIND, llvm::isInt(), llvm::isMImmVal(), LLVM_DEBUG, llvm::mimm2Val(), MRI, NCINSTRKIND, UseMI, and llvm::val2MImm().

◆ getGlobalBaseReg()

◆ getRegisterInfo()

const VERegisterInfo & llvm::VEInstrInfo::getRegisterInfo ( ) const
inline

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).

Definition at line 62 of file VEInstrInfo.h.

Referenced by copyPhysReg(), expandPostRAPseudo(), and insertBranch().

◆ insertBranch()

◆ isLoadFromStackSlot()

Register VEInstrInfo::isLoadFromStackSlot ( const MachineInstr & MI,
int & FrameIndex ) const
override

Stack Spill & Reload {.

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 415 of file VEInstrInfo.cpp.

References MI.

◆ isStoreToStackSlot()

Register VEInstrInfo::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 439 of file VEInstrInfo.cpp.

References MI.

◆ loadRegFromStackSlot()

◆ removeBranch()

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

◆ reverseBranchCondition()

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

Definition at line 313 of file VEInstrInfo.cpp.

References Cond, and GetOppositeBranchCondition().

◆ storeRegToStackSlot()


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