LLVM  14.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]
Collaboration diagram for llvm::VEInstrInfo:
Collaboration graph
[legend]

Public Member Functions

 VEInstrInfo (VESubtarget &ST)
 
const VERegisterInfogetRegisterInfo () const
 getRegisterInfo - TargetInstrInfo is a superset of MRegister info. More...
 
bool analyzeBranch (MachineBasicBlock &MBB, MachineBasicBlock *&TBB, MachineBasicBlock *&FBB, SmallVectorImpl< MachineOperand > &Cond, bool AllowModify=false) const override
 Branch Analysis & Modification {. More...
 
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) const override
 } Branch Analysis & Modification More...
 
unsigned isLoadFromStackSlot (const MachineInstr &MI, int &FrameIndex) const override
 Stack Spill & Reload {. More...
 
unsigned 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. More...
 
void storeRegToStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register SrcReg, bool isKill, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const override
 
void loadRegFromStackSlot (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register DestReg, int FrameIndex, const TargetRegisterClass *RC, const TargetRegisterInfo *TRI) const override
 
bool FoldImmediate (MachineInstr &UseMI, MachineInstr &DefMI, Register Reg, MachineRegisterInfo *MRI) const override
 } Stack Spill & Reload More...
 
Register getGlobalBaseReg (MachineFunction *MF) const
 } Optimization More...
 
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 38 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 
) 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()

unsigned 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 llvm::ISD::FrameIndex, and MI.

◆ isStoreToStackSlot()

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

References llvm::ISD::FrameIndex, and MI.

◆ loadRegFromStackSlot()

void VEInstrInfo::loadRegFromStackSlot ( MachineBasicBlock MBB,
MachineBasicBlock::iterator  MBBI,
Register  DestReg,
int  FrameIndex,
const TargetRegisterClass RC,
const TargetRegisterInfo TRI 
) 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 314 of file VEInstrInfo.cpp.

References Cond, and GetOppositeBranchCondition().

◆ storeRegToStackSlot()

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

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