LLVM 23.0.0git
llvm::RISCVMachineFunctionInfo Class Reference

RISCVMachineFunctionInfo - This class is derived from MachineFunctionInfo and contains private RISCV-specific information for each MachineFunction. More...

#include "Target/RISCV/RISCVMachineFunctionInfo.h"

Inheritance diagram for llvm::RISCVMachineFunctionInfo:
[legend]

Public Types

enum class  PushPopKind { None = 0 , StdExtZcmp , VendorXqccmp }
enum class  InterruptStackKind {
  None = 0 , QCINest , QCINoNest , SiFiveCLICPreemptible ,
  SiFiveCLICStackSwap , SiFiveCLICPreemptibleStackSwap
}

Public Member Functions

 RISCVMachineFunctionInfo (const Function &F, const RISCVSubtarget *STI)
MachineFunctionInfoclone (BumpPtrAllocator &Allocator, MachineFunction &DestMF, const DenseMap< MachineBasicBlock *, MachineBasicBlock * > &Src2DstMBB) const override
 Make a functionally equivalent copy of this MachineFunctionInfo in MF.
int getVarArgsFrameIndex () const
void setVarArgsFrameIndex (int Index)
unsigned getVarArgsSaveSize () const
void setVarArgsSaveSize (int Size)
int getMoveF64FrameIndex (MachineFunction &MF)
int getBranchRelaxationScratchFrameIndex () const
void setBranchRelaxationScratchFrameIndex (int Index)
unsigned getReservedSpillsSize () const
unsigned getLibCallStackSize () const
void setLibCallStackSize (unsigned Size)
bool useSaveRestoreLibCalls (const MachineFunction &MF) const
uint64_t getRVVStackSize () const
void setRVVStackSize (uint64_t Size)
Align getRVVStackAlign () const
void setRVVStackAlign (Align StackAlign)
uint64_t getRVVPadding () const
void setRVVPadding (uint64_t Padding)
unsigned getCalleeSavedStackSize () const
void setCalleeSavedStackSize (unsigned Size)
void setIncomingIndirectArg (unsigned ArgIndex, Register Reg)
Register getIncomingIndirectArg (unsigned ArgIndex) const
PushPopKind getPushPopKind (const MachineFunction &MF) const
bool isPushable (const MachineFunction &MF) const
unsigned getRVPushRegs () const
void setRVPushRegs (unsigned Regs)
unsigned getRVPushStackSize () const
void setRVPushStackSize (unsigned Size)
InterruptStackKind getInterruptStackKind (const MachineFunction &MF) const
bool useQCIInterrupt (const MachineFunction &MF) const
unsigned getQCIInterruptStackSize () const
void setQCIInterruptStackSize (unsigned Size)
bool useSiFiveInterrupt (const MachineFunction &MF) const
bool isSiFivePreemptibleInterrupt (const MachineFunction &MF) const
bool isSiFiveStackSwapInterrupt (const MachineFunction &MF) const
void pushInterruptCSRFrameIndex (int FI)
int getInterruptCSRFrameIndex (size_t Idx) const
bool hasImplicitFPUpdates (const MachineFunction &MF) const
void initializeBaseYamlFields (const yaml::RISCVMachineFunctionInfo &YamlMFI)
void addSExt32Register (Register Reg)
bool isSExt32Register (Register Reg) const
bool isVectorCall () const
void setIsVectorCall ()
bool hasDynamicAllocation () const
void setDynamicAllocation ()
bool hasCFProtectionBranch () const
Public Member Functions inherited from llvm::MachineFunctionInfo
virtual ~MachineFunctionInfo ()

Additional Inherited Members

Static Public Member Functions inherited from llvm::MachineFunctionInfo
template<typename FuncInfoTy, typename SubtargetTy = TargetSubtargetInfo>
static FuncInfoTy * create (BumpPtrAllocator &Allocator, const Function &F, const SubtargetTy *STI)
 Factory function: default behavior is to call new using the supplied allocator.
template<typename Ty>
static Ty * create (BumpPtrAllocator &Allocator, const Ty &MFI)

Detailed Description

RISCVMachineFunctionInfo - This class is derived from MachineFunctionInfo and contains private RISCV-specific information for each MachineFunction.

Definition at line 48 of file RISCVMachineFunctionInfo.h.

Member Enumeration Documentation

◆ InterruptStackKind

Enumerator
None 
QCINest 
QCINoNest 
SiFiveCLICPreemptible 
SiFiveCLICStackSwap 
SiFiveCLICPreemptibleStackSwap 

Definition at line 180 of file RISCVMachineFunctionInfo.h.

◆ PushPopKind

Enumerator
None 
StdExtZcmp 
VendorXqccmp 

Definition at line 166 of file RISCVMachineFunctionInfo.h.

Constructor & Destructor Documentation

◆ RISCVMachineFunctionInfo()

Member Function Documentation

◆ addSExt32Register()

void RISCVMachineFunctionInfo::addSExt32Register ( Register Reg)

Definition at line 144 of file RISCVMachineFunctionInfo.cpp.

Referenced by unpackFromRegLoc().

◆ clone()

MachineFunctionInfo * RISCVMachineFunctionInfo::clone ( BumpPtrAllocator & Allocator,
MachineFunction & DestMF,
const DenseMap< MachineBasicBlock *, MachineBasicBlock * > & Src2DstMBB ) const
overridevirtual

Make a functionally equivalent copy of this MachineFunctionInfo in MF.

This requires remapping MachineBasicBlock references from the original parent to values in the new function. Targets may assume that virtual register and frame index values are preserved in the new function.

Reimplemented from llvm::MachineFunctionInfo.

Definition at line 23 of file RISCVMachineFunctionInfo.cpp.

References llvm::MachineFunction::cloneInfo(), and RISCVMachineFunctionInfo().

◆ getBranchRelaxationScratchFrameIndex()

int llvm::RISCVMachineFunctionInfo::getBranchRelaxationScratchFrameIndex ( ) const
inline

◆ getCalleeSavedStackSize()

unsigned llvm::RISCVMachineFunctionInfo::getCalleeSavedStackSize ( ) const
inline

Definition at line 154 of file RISCVMachineFunctionInfo.h.

◆ getIncomingIndirectArg()

Register llvm::RISCVMachineFunctionInfo::getIncomingIndirectArg ( unsigned ArgIndex) const
inline

Definition at line 160 of file RISCVMachineFunctionInfo.h.

References assert().

Referenced by llvm::RISCVTargetLowering::LowerCall().

◆ getInterruptCSRFrameIndex()

int llvm::RISCVMachineFunctionInfo::getInterruptCSRFrameIndex ( size_t Idx) const
inline

Definition at line 222 of file RISCVMachineFunctionInfo.h.

◆ getInterruptStackKind()

◆ getLibCallStackSize()

unsigned llvm::RISCVMachineFunctionInfo::getLibCallStackSize ( ) const
inline

Definition at line 133 of file RISCVMachineFunctionInfo.h.

◆ getMoveF64FrameIndex()

int llvm::RISCVMachineFunctionInfo::getMoveF64FrameIndex ( MachineFunction & MF)
inline

◆ getPushPopKind()

◆ getQCIInterruptStackSize()

unsigned llvm::RISCVMachineFunctionInfo::getQCIInterruptStackSize ( ) const
inline

Definition at line 197 of file RISCVMachineFunctionInfo.h.

◆ getReservedSpillsSize()

unsigned llvm::RISCVMachineFunctionInfo::getReservedSpillsSize ( ) const
inline

Definition at line 129 of file RISCVMachineFunctionInfo.h.

◆ getRVPushRegs()

unsigned llvm::RISCVMachineFunctionInfo::getRVPushRegs ( ) const
inline

◆ getRVPushStackSize()

unsigned llvm::RISCVMachineFunctionInfo::getRVPushStackSize ( ) const
inline

Definition at line 177 of file RISCVMachineFunctionInfo.h.

◆ getRVVPadding()

uint64_t llvm::RISCVMachineFunctionInfo::getRVVPadding ( ) const
inline

Definition at line 151 of file RISCVMachineFunctionInfo.h.

◆ getRVVStackAlign()

Align llvm::RISCVMachineFunctionInfo::getRVVStackAlign ( ) const
inline

Definition at line 148 of file RISCVMachineFunctionInfo.h.

◆ getRVVStackSize()

uint64_t llvm::RISCVMachineFunctionInfo::getRVVStackSize ( ) const
inline

Definition at line 145 of file RISCVMachineFunctionInfo.h.

◆ getVarArgsFrameIndex()

int llvm::RISCVMachineFunctionInfo::getVarArgsFrameIndex ( ) const
inline

Definition at line 109 of file RISCVMachineFunctionInfo.h.

◆ getVarArgsSaveSize()

unsigned llvm::RISCVMachineFunctionInfo::getVarArgsSaveSize ( ) const
inline

Definition at line 112 of file RISCVMachineFunctionInfo.h.

◆ hasCFProtectionBranch()

bool llvm::RISCVMachineFunctionInfo::hasCFProtectionBranch ( ) const
inline

◆ hasDynamicAllocation()

bool llvm::RISCVMachineFunctionInfo::hasDynamicAllocation ( ) const
inline

Definition at line 240 of file RISCVMachineFunctionInfo.h.

◆ hasImplicitFPUpdates()

bool RISCVMachineFunctionInfo::hasImplicitFPUpdates ( const MachineFunction & MF) const

◆ initializeBaseYamlFields()

void RISCVMachineFunctionInfo::initializeBaseYamlFields ( const yaml::RISCVMachineFunctionInfo & YamlMFI)

◆ isPushable()

bool llvm::RISCVMachineFunctionInfo::isPushable ( const MachineFunction & MF) const
inline

◆ isSExt32Register()

bool RISCVMachineFunctionInfo::isSExt32Register ( Register Reg) const

Definition at line 148 of file RISCVMachineFunctionInfo.cpp.

References llvm::is_contained().

Referenced by isSignExtendedW().

◆ isSiFivePreemptibleInterrupt()

bool llvm::RISCVMachineFunctionInfo::isSiFivePreemptibleInterrupt ( const MachineFunction & MF) const
inline

◆ isSiFiveStackSwapInterrupt()

bool llvm::RISCVMachineFunctionInfo::isSiFiveStackSwapInterrupt ( const MachineFunction & MF) const
inline

◆ isVectorCall()

bool llvm::RISCVMachineFunctionInfo::isVectorCall ( ) const
inline

Definition at line 237 of file RISCVMachineFunctionInfo.h.

◆ pushInterruptCSRFrameIndex()

void llvm::RISCVMachineFunctionInfo::pushInterruptCSRFrameIndex ( int FI)
inline

◆ setBranchRelaxationScratchFrameIndex()

void llvm::RISCVMachineFunctionInfo::setBranchRelaxationScratchFrameIndex ( int Index)
inline

Definition at line 125 of file RISCVMachineFunctionInfo.h.

◆ setCalleeSavedStackSize()

void llvm::RISCVMachineFunctionInfo::setCalleeSavedStackSize ( unsigned Size)
inline

Definition at line 155 of file RISCVMachineFunctionInfo.h.

References Size.

◆ setDynamicAllocation()

void llvm::RISCVMachineFunctionInfo::setDynamicAllocation ( )
inline

Definition at line 241 of file RISCVMachineFunctionInfo.h.

◆ setIncomingIndirectArg()

void llvm::RISCVMachineFunctionInfo::setIncomingIndirectArg ( unsigned ArgIndex,
Register Reg )
inline

Definition at line 157 of file RISCVMachineFunctionInfo.h.

References Reg.

Referenced by llvm::RISCVTargetLowering::LowerFormalArguments().

◆ setIsVectorCall()

◆ setLibCallStackSize()

void llvm::RISCVMachineFunctionInfo::setLibCallStackSize ( unsigned Size)
inline

Definition at line 134 of file RISCVMachineFunctionInfo.h.

References Size.

◆ setQCIInterruptStackSize()

void llvm::RISCVMachineFunctionInfo::setQCIInterruptStackSize ( unsigned Size)
inline

Definition at line 198 of file RISCVMachineFunctionInfo.h.

References Size.

◆ setRVPushRegs()

void llvm::RISCVMachineFunctionInfo::setRVPushRegs ( unsigned Regs)
inline

Definition at line 175 of file RISCVMachineFunctionInfo.h.

◆ setRVPushStackSize()

void llvm::RISCVMachineFunctionInfo::setRVPushStackSize ( unsigned Size)
inline

Definition at line 178 of file RISCVMachineFunctionInfo.h.

References Size.

◆ setRVVPadding()

void llvm::RISCVMachineFunctionInfo::setRVVPadding ( uint64_t Padding)
inline

Definition at line 152 of file RISCVMachineFunctionInfo.h.

◆ setRVVStackAlign()

void llvm::RISCVMachineFunctionInfo::setRVVStackAlign ( Align StackAlign)
inline

Definition at line 149 of file RISCVMachineFunctionInfo.h.

◆ setRVVStackSize()

void llvm::RISCVMachineFunctionInfo::setRVVStackSize ( uint64_t Size)
inline

Definition at line 146 of file RISCVMachineFunctionInfo.h.

References Size.

◆ setVarArgsFrameIndex()

void llvm::RISCVMachineFunctionInfo::setVarArgsFrameIndex ( int Index)
inline

◆ setVarArgsSaveSize()

void llvm::RISCVMachineFunctionInfo::setVarArgsSaveSize ( int Size)
inline

Definition at line 113 of file RISCVMachineFunctionInfo.h.

References Size.

Referenced by llvm::RISCVTargetLowering::LowerFormalArguments().

◆ useQCIInterrupt()

◆ useSaveRestoreLibCalls()

◆ useSiFiveInterrupt()

bool llvm::RISCVMachineFunctionInfo::useSiFiveInterrupt ( const MachineFunction & MF) const
inline

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