LLVM 22.0.0git
|
RISCVMachineFunctionInfo - This class is derived from MachineFunctionInfo and contains private RISCV-specific information for each MachineFunction. More...
#include "Target/RISCV/RISCVMachineFunctionInfo.h"
Public Types | |
enum class | PushPopKind { None = 0 , StdExtZcmp , VendorXqccmp } |
enum class | InterruptStackKind { None = 0 , QCINest , QCINoNest , SiFiveCLICPreemptible , SiFiveCLICStackSwap , SiFiveCLICPreemptibleStackSwap } |
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) |
RISCVMachineFunctionInfo - This class is derived from MachineFunctionInfo and contains private RISCV-specific information for each MachineFunction.
Definition at line 47 of file RISCVMachineFunctionInfo.h.
|
strong |
Enumerator | |
---|---|
None | |
QCINest | |
QCINoNest | |
SiFiveCLICPreemptible | |
SiFiveCLICStackSwap | |
SiFiveCLICPreemptibleStackSwap |
Definition at line 159 of file RISCVMachineFunctionInfo.h.
|
strong |
Enumerator | |
---|---|
None | |
StdExtZcmp | |
VendorXqccmp |
Definition at line 145 of file RISCVMachineFunctionInfo.h.
RISCVMachineFunctionInfo::RISCVMachineFunctionInfo | ( | const Function & | F, |
const RISCVSubtarget * | STI ) |
Definition at line 30 of file RISCVMachineFunctionInfo.cpp.
References llvm::alignDown(), assert(), llvm::dyn_cast_or_null(), llvm::mdconst::extract_or_null(), F, llvm::RISCVSubtarget::getFrameLowering(), llvm::TargetFrameLowering::getTransientStackAlign(), llvm::StringRef::size(), and llvm::Align::value().
Referenced by clone().
void RISCVMachineFunctionInfo::addSExt32Register | ( | Register | Reg | ) |
Definition at line 141 of file RISCVMachineFunctionInfo.cpp.
Referenced by unpackFromRegLoc().
|
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().
|
inline |
Definition at line 110 of file RISCVMachineFunctionInfo.h.
Referenced by llvm::RISCVInstrInfo::insertIndirectBranch().
|
inline |
Definition at line 142 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 201 of file RISCVMachineFunctionInfo.h.
RISCVMachineFunctionInfo::InterruptStackKind RISCVMachineFunctionInfo::getInterruptStackKind | ( | const MachineFunction & | MF | ) | const |
Definition at line 60 of file RISCVMachineFunctionInfo.cpp.
References assert(), llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), llvm::Function::getFnAttribute(), llvm::MachineFunction::getFunction(), llvm::Attribute::getValueAsString(), llvm::Function::hasFnAttribute(), None, QCINest, QCINoNest, SiFiveCLICPreemptible, SiFiveCLICPreemptibleStackSwap, and SiFiveCLICStackSwap.
Referenced by hasImplicitFPUpdates(), isSiFivePreemptibleInterrupt(), isSiFiveStackSwapInterrupt(), llvm::RISCVFrameLowering::spillCalleeSavedRegisters(), useQCIInterrupt(), and useSiFiveInterrupt().
|
inline |
Definition at line 121 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 103 of file RISCVMachineFunctionInfo.h.
References llvm::MachineFrameInfo::CreateStackObject(), and llvm::MachineFunction::getFrameInfo().
RISCVMachineFunctionInfo::PushPopKind RISCVMachineFunctionInfo::getPushPopKind | ( | const MachineFunction & | MF | ) | const |
Definition at line 88 of file RISCVMachineFunctionInfo.cpp.
References llvm::TargetOptions::DisableFramePointerElim(), llvm::MachineFunction::getSubtarget(), llvm::MachineFunction::getTarget(), None, llvm::TargetMachine::Options, StdExtZcmp, useSiFiveInterrupt(), and VendorXqccmp.
Referenced by hasImplicitFPUpdates(), isPushable(), llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), and llvm::RISCVFrameLowering::spillCalleeSavedRegisters().
|
inline |
Definition at line 176 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 117 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 153 of file RISCVMachineFunctionInfo.h.
Referenced by llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), and llvm::RISCVFrameLowering::spillCalleeSavedRegisters().
|
inline |
Definition at line 156 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 139 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 136 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 133 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 97 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 100 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 219 of file RISCVMachineFunctionInfo.h.
bool RISCVMachineFunctionInfo::hasImplicitFPUpdates | ( | const MachineFunction & | MF | ) | const |
Definition at line 112 of file RISCVMachineFunctionInfo.cpp.
References getInterruptStackKind(), getPushPopKind(), QCINest, QCINoNest, and VendorXqccmp.
void RISCVMachineFunctionInfo::initializeBaseYamlFields | ( | const yaml::RISCVMachineFunctionInfo & | YamlMFI | ) |
Definition at line 135 of file RISCVMachineFunctionInfo.cpp.
References llvm::yaml::RISCVMachineFunctionInfo::VarArgsFrameIndex, and llvm::yaml::RISCVMachineFunctionInfo::VarArgsSaveSize.
|
inline |
Definition at line 149 of file RISCVMachineFunctionInfo.h.
References getPushPopKind(), and None.
Referenced by llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), llvm::RISCVFrameLowering::spillCalleeSavedRegisters(), and useSaveRestoreLibCalls().
Definition at line 145 of file RISCVMachineFunctionInfo.cpp.
References llvm::is_contained().
Referenced by isSignExtendedW().
|
inline |
Definition at line 186 of file RISCVMachineFunctionInfo.h.
References getInterruptStackKind(), SiFiveCLICPreemptible, and SiFiveCLICPreemptibleStackSwap.
Referenced by createSiFivePreemptibleInterruptFrameEntries().
|
inline |
Definition at line 192 of file RISCVMachineFunctionInfo.h.
References getInterruptStackKind(), SiFiveCLICPreemptibleStackSwap, and SiFiveCLICStackSwap.
|
inline |
Definition at line 216 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 198 of file RISCVMachineFunctionInfo.h.
Referenced by createSiFivePreemptibleInterruptFrameEntries().
|
inline |
Definition at line 113 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 143 of file RISCVMachineFunctionInfo.h.
References Size.
|
inline |
Definition at line 220 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 217 of file RISCVMachineFunctionInfo.h.
Referenced by llvm::RISCVTargetLowering::LowerFormalArguments(), and llvm::RISCVTargetLowering::LowerReturn().
|
inline |
Definition at line 122 of file RISCVMachineFunctionInfo.h.
References Size.
|
inline |
Definition at line 177 of file RISCVMachineFunctionInfo.h.
References Size.
|
inline |
Definition at line 154 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 157 of file RISCVMachineFunctionInfo.h.
References Size.
|
inline |
Definition at line 140 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 137 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 134 of file RISCVMachineFunctionInfo.h.
References Size.
|
inline |
Definition at line 98 of file RISCVMachineFunctionInfo.h.
Referenced by llvm::RISCVTargetLowering::LowerFormalArguments().
|
inline |
Definition at line 101 of file RISCVMachineFunctionInfo.h.
References Size.
Referenced by llvm::RISCVTargetLowering::LowerFormalArguments().
|
inline |
Definition at line 170 of file RISCVMachineFunctionInfo.h.
References getInterruptStackKind(), QCINest, and QCINoNest.
Referenced by llvm::RISCVFrameLowering::canUseAsEpilogue(), llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), and llvm::RISCVFrameLowering::spillCalleeSavedRegisters().
|
inline |
Definition at line 124 of file RISCVMachineFunctionInfo.h.
References llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), llvm::Function::hasFnAttribute(), llvm::MachineFrameInfo::hasTailCall(), and isPushable().
Referenced by llvm::RISCVFrameLowering::canUseAsEpilogue(), and llvm::RISCVFrameLowering::canUseAsPrologue().
|
inline |
Definition at line 179 of file RISCVMachineFunctionInfo.h.
References getInterruptStackKind(), SiFiveCLICPreemptible, SiFiveCLICPreemptibleStackSwap, and SiFiveCLICStackSwap.
Referenced by getPushPopKind().