15#ifndef LLVM_BINARYFORMAT_SFRAME_H
16#define LLVM_BINARYFORMAT_SFRAME_H
26template <
typename T>
struct EnumEntry;
35#define HANDLE_SFRAME_VERSION(CODE, NAME) NAME = CODE,
36#include "llvm/BinaryFormat/SFrameConstants.def"
40#define HANDLE_SFRAME_FLAG(CODE, NAME) NAME = CODE,
41#include "llvm/BinaryFormat/SFrameConstants.def"
42 V2AllFlags = FDESorted | FramePointer | FDEFuncStartPCRel,
47#define HANDLE_SFRAME_ABI(CODE, NAME) NAME = CODE,
48#include "llvm/BinaryFormat/SFrameConstants.def"
53#define HANDLE_SFRAME_FRE_TYPE(CODE, NAME) NAME = CODE,
54#include "llvm/BinaryFormat/SFrameConstants.def"
59#define HANDLE_SFRAME_FDE_TYPE(CODE, NAME) NAME = CODE,
60#include "llvm/BinaryFormat/SFrameConstants.def"
66#define HANDLE_SFRAME_AARCH64_PAUTH_KEY(CODE, NAME) NAME = CODE,
67#include "llvm/BinaryFormat/SFrameConstants.def"
72#define HANDLE_SFRAME_FRE_OFFSET(CODE, NAME) NAME = CODE,
73#include "llvm/BinaryFormat/SFrameConstants.def"
83template <
typename T, endianness E>
94template <endianness E>
struct Header {
117 Info = ((PAuthKey & 1) << 5) | ((
static_cast<uint8_t>(FDE) & 1) << 4) |
118 (
static_cast<uint8_t>(FRE) & 0xf);
155 Info = ((
RA & 1) << 7) | ((
static_cast<uint8_t>(Sz) & 3) << 5) |
156 ((
N & 0xf) << 1) | (
static_cast<uint8_t>(
Reg) & 1);
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
SI optimize exec mask operations pre RA
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
AArch64PAuthKey
Speficies key used for signing return addresses.
BaseReg
Stack frame base register. Bit 0 of FREInfo.Info.
@ LLVM_MARK_AS_BITMASK_ENUM
LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE()
LLVM_ABI ArrayRef< EnumEntry< ABI > > getABIs()
FREOffset
Size of stack offsets. Bits 6-7 of FREInfo.Info.
FDEType
SFrame FDE Types. Bit 4 of FuncDescEntry.Info.
LLVM_ABI ArrayRef< EnumEntry< BaseReg > > getBaseRegisters()
LLVM_ABI ArrayRef< EnumEntry< FREOffset > > getFREOffsets()
LLVM_ABI ArrayRef< EnumEntry< FDEType > > getFDETypes()
LLVM_ABI ArrayRef< EnumEntry< Flags > > getFlags()
LLVM_ABI ArrayRef< EnumEntry< AArch64PAuthKey > > getAArch64PAuthKeys()
LLVM_ABI ArrayRef< EnumEntry< FREType > > getFRETypes()
FREType
SFrame FRE Types. Bits 0-3 of FuncDescEntry.Info.
LLVM_ABI ArrayRef< EnumEntry< Version > > getVersions()
This is an optimization pass for GlobalISel generic memory operations.
uint8_t getPAuthKey() const
detail::packed< uint8_t, E > Info
void setPAuthKey(uint8_t P)
void setFREType(FREType R)
FREType getFREType() const
void setFDEType(FDEType D)
FDEType getFDEType() const
void setFuncInfo(uint8_t PAuthKey, FDEType FDE, FREType FRE)
FREOffset getOffsetSize() const
void setReturnAddressSigned(bool RA)
detail::packed< uint8_t, E > Info
BaseReg getBaseRegister() const
void setBaseRegister(BaseReg Reg)
void setFREInfo(bool RA, FREOffset Sz, uint8_t N, BaseReg Reg)
void setOffsetSize(FREOffset Sz)
void setOffsetCount(uint8_t N)
uint8_t getOffsetCount() const
bool isReturnAddressSigned() const
detail::packed< T, E > StartAddress
detail::packed< uint32_t, E > StartFREOff
detail::packed< uint32_t, E > Size
detail::packed< uint16_t, E > Padding2
detail::packed< uint32_t, E > NumFREs
detail::packed< int32_t, E > StartAddress
detail::packed< uint8_t, E > RepSize
detail::packed< uint16_t, E > Magic
detail::packed< enum Version, E > Version
detail::packed< enum Flags, E > Flags