|
LLVM 24.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 | ShadowStackKind { None = 0 , Hardware , Software } |
| 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 48 of file RISCVMachineFunctionInfo.h.
|
strong |
| Enumerator | |
|---|---|
| None | |
| QCINest | |
| QCINoNest | |
| SiFiveCLICPreemptible | |
| SiFiveCLICStackSwap | |
| SiFiveCLICPreemptibleStackSwap | |
Definition at line 187 of file RISCVMachineFunctionInfo.h.
|
strong |
| Enumerator | |
|---|---|
| None | |
| StdExtZcmp | |
| VendorXqccmp | |
Definition at line 173 of file RISCVMachineFunctionInfo.h.
|
strong |
| Enumerator | |
|---|---|
| None | |
| Hardware | |
| Software | |
Definition at line 166 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 162 of file RISCVMachineFunctionInfo.cpp.
Referenced by markSExt32Registers(), and 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 122 of file RISCVMachineFunctionInfo.h.
Referenced by llvm::RISCVInstrInfo::insertIndirectBranch().
|
inline |
Definition at line 154 of file RISCVMachineFunctionInfo.h.
Definition at line 160 of file RISCVMachineFunctionInfo.h.
References assert().
Referenced by llvm::RISCVTargetLowering::LowerCall().
|
inline |
Definition at line 229 of file RISCVMachineFunctionInfo.h.
| RISCVMachineFunctionInfo::InterruptStackKind RISCVMachineFunctionInfo::getInterruptStackKind | ( | const MachineFunction & | MF | ) | const |
Definition at line 63 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 133 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 115 of file RISCVMachineFunctionInfo.h.
References llvm::MachineFrameInfo::CreateStackObject(), and llvm::MachineFunction::getFrameInfo().
| RISCVMachineFunctionInfo::PushPopKind RISCVMachineFunctionInfo::getPushPopKind | ( | const MachineFunction & | MF | ) | const |
Definition at line 109 of file RISCVMachineFunctionInfo.cpp.
References llvm::MachineFunction::disableFramePointerElim(), llvm::MachineFunction::getSubtarget(), None, StdExtZcmp, useSiFiveInterrupt(), and VendorXqccmp.
Referenced by hasImplicitFPUpdates(), isPushable(), llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), and llvm::RISCVFrameLowering::spillCalleeSavedRegisters().
|
inline |
Definition at line 204 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 129 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 181 of file RISCVMachineFunctionInfo.h.
Referenced by llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), and llvm::RISCVFrameLowering::spillCalleeSavedRegisters().
|
inline |
Definition at line 184 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 151 of file RISCVMachineFunctionInfo.h.
References uint64_t.
|
inline |
Definition at line 148 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 145 of file RISCVMachineFunctionInfo.h.
References uint64_t.
| RISCVMachineFunctionInfo::ShadowStackKind RISCVMachineFunctionInfo::getShadowStackKind | ( | const MachineFunction & | MF | ) | const |
Definition at line 91 of file RISCVMachineFunctionInfo.cpp.
References llvm::MachineFunction::getFunction(), llvm::MachineFunction::getSubtarget(), Hardware, llvm::Function::hasFnAttribute(), None, and Software.
Referenced by hasShadowStack().
|
inline |
Definition at line 109 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 112 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 250 of file RISCVMachineFunctionInfo.h.
Referenced by llvm::RISCVInstrInfo::analyzeCandidate(), cannotInsertTailCall(), llvm::RISCVTargetLowering::expandIndirectJTBranch(), llvm::RISCVInstrInfo::insertOutlinedCall(), and llvm::RISCVTargetLowering::LowerCall().
|
inline |
Definition at line 247 of file RISCVMachineFunctionInfo.h.
| bool RISCVMachineFunctionInfo::hasImplicitFPUpdates | ( | const MachineFunction & | MF | ) | const |
Definition at line 133 of file RISCVMachineFunctionInfo.cpp.
References getInterruptStackKind(), getPushPopKind(), QCINest, QCINoNest, and VendorXqccmp.
|
inline |
Definition at line 169 of file RISCVMachineFunctionInfo.h.
References getShadowStackKind(), and None.
Referenced by llvm::RISCVFrameLowering::canUseAsEpilogue(), and llvm::RISCVFrameLowering::restoreCalleeSavedRegisters().
| void RISCVMachineFunctionInfo::initializeBaseYamlFields | ( | const yaml::RISCVMachineFunctionInfo & | YamlMFI | ) |
Definition at line 156 of file RISCVMachineFunctionInfo.cpp.
References llvm::yaml::RISCVMachineFunctionInfo::VarArgsFrameIndex, and llvm::yaml::RISCVMachineFunctionInfo::VarArgsSaveSize.
|
inline |
Definition at line 177 of file RISCVMachineFunctionInfo.h.
References getPushPopKind(), and None.
Referenced by llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), llvm::RISCVFrameLowering::spillCalleeSavedRegisters(), and useSaveRestoreLibCalls().
Definition at line 166 of file RISCVMachineFunctionInfo.cpp.
References llvm::is_contained().
Referenced by isSignExtendedW().
|
inline |
Definition at line 214 of file RISCVMachineFunctionInfo.h.
References getInterruptStackKind(), SiFiveCLICPreemptible, and SiFiveCLICPreemptibleStackSwap.
Referenced by createSiFivePreemptibleInterruptFrameEntries(), and getUnmanagedInterruptCSI().
|
inline |
Definition at line 220 of file RISCVMachineFunctionInfo.h.
References getInterruptStackKind(), SiFiveCLICPreemptibleStackSwap, and SiFiveCLICStackSwap.
|
inline |
Definition at line 244 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 226 of file RISCVMachineFunctionInfo.h.
Referenced by createSiFivePreemptibleInterruptFrameEntries().
|
inline |
Definition at line 125 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 155 of file RISCVMachineFunctionInfo.h.
References Size.
|
inline |
Definition at line 248 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 157 of file RISCVMachineFunctionInfo.h.
References Reg.
Referenced by llvm::RISCVTargetLowering::LowerFormalArguments().
|
inline |
Definition at line 245 of file RISCVMachineFunctionInfo.h.
Referenced by llvm::RISCVTargetLowering::LowerFormalArguments(), llvm::RISCVCallLowering::lowerFormalArguments(), llvm::RISCVTargetLowering::LowerReturn(), and llvm::RISCVCallLowering::lowerReturn().
|
inline |
Definition at line 134 of file RISCVMachineFunctionInfo.h.
References Size.
|
inline |
Definition at line 205 of file RISCVMachineFunctionInfo.h.
References Size.
|
inline |
Definition at line 182 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 185 of file RISCVMachineFunctionInfo.h.
References Size.
|
inline |
Definition at line 152 of file RISCVMachineFunctionInfo.h.
References uint64_t.
|
inline |
Definition at line 149 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 146 of file RISCVMachineFunctionInfo.h.
|
inline |
Definition at line 110 of file RISCVMachineFunctionInfo.h.
Referenced by llvm::RISCVTargetLowering::LowerFormalArguments().
|
inline |
Definition at line 113 of file RISCVMachineFunctionInfo.h.
References Size.
Referenced by llvm::RISCVTargetLowering::LowerFormalArguments().
|
inline |
Definition at line 198 of file RISCVMachineFunctionInfo.h.
References getInterruptStackKind(), QCINest, and QCINoNest.
Referenced by llvm::RISCVFrameLowering::enableShrinkWrapping(), llvm::RISCVFrameLowering::restoreCalleeSavedRegisters(), and llvm::RISCVFrameLowering::spillCalleeSavedRegisters().
|
inline |
Definition at line 136 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 207 of file RISCVMachineFunctionInfo.h.
References getInterruptStackKind(), SiFiveCLICPreemptible, SiFiveCLICPreemptibleStackSwap, and SiFiveCLICStackSwap.
Referenced by llvm::RISCVFrameLowering::enableShrinkWrapping(), and getPushPopKind().