LLVM 20.0.0git
Public Member Functions | List of all members
llvm::VEInstrInfo Class Reference

#include "Target/VE/VEInstrInfo.h"

Inheritance diagram for llvm::VEInstrInfo:
Inheritance graph
[legend]

Public Member Functions

 VEInstrInfo (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, MCRegister DestReg, MCRegister 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) const override
 
void loadRegFromStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI, Register VReg) 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 ( VESubtarget ST)
explicit

Definition at line 37 of file VEInstrInfo.cpp.

Member Function Documentation

◆ analyzeBranch()

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

◆ copyPhysReg()

void VEInstrInfo::copyPhysReg ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  I,
const DebugLoc DL,
MCRegister  DestReg,
MCRegister  SrcReg,
bool  KillSrc,
bool  RenamableDest = false,
bool  RenamableSrc = false 
) const
override

◆ expandExtendStackPseudo()

bool VEInstrInfo::expandExtendStackPseudo ( MachineInstr MI) const

◆ expandGetStackTopPseudo()

bool VEInstrInfo::expandGetStackTopPseudo ( MachineInstr MI) const

◆ expandPostRAPseudo()

bool VEInstrInfo::expandPostRAPseudo ( MachineInstr MI) const
override

◆ foldImmediate()

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

◆ getGlobalBaseReg()

Register VEInstrInfo::getGlobalBaseReg ( MachineFunction MF) const

◆ 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(), llvm::VESubtarget::getRegisterInfo(), and insertBranch().

◆ insertBranch()

unsigned VEInstrInfo::insertBranch ( MachineBasicBlock MBB,
MachineBasicBlock TBB,
MachineBasicBlock FBB,
ArrayRef< MachineOperand Cond,
const DebugLoc DL,
int *  BytesAdded = nullptr 
) const
override

◆ 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 416 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 440 of file VEInstrInfo.cpp.

References MI.

◆ loadRegFromStackSlot()

void VEInstrInfo::loadRegFromStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
Register  DestReg,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI,
Register  VReg 
) const
override

◆ 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 CC, Cond, and GetOppositeBranchCondition().

◆ storeRegToStackSlot()

void VEInstrInfo::storeRegToStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
Register  SrcReg,
bool  isKill,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI,
Register  VReg 
) const
override

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