LLVM 20.0.0git
|
#include "Target/ARM/MCTargetDesc/ARMUnwindOpAsm.h"
Public Member Functions | |
UnwindOpcodeAssembler () | |
void | Reset () |
Reset the unwind opcode assembler. | |
void | setPersonality (const MCSymbol *Per) |
Set the personality. | |
void | EmitRegSave (uint32_t RegSave) |
Emit unwind opcodes for .save directives. | |
void | EmitVFPRegSave (uint32_t VFPRegSave) |
Emit unwind opcodes for .vsave directives. | |
void | EmitSetSP (uint16_t Reg) |
Emit unwind opcodes to copy address from source register to $sp. | |
void | EmitSPOffset (int64_t Offset) |
Emit unwind opcodes to add $sp with an offset. | |
void | EmitRaw (const SmallVectorImpl< uint8_t > &Opcodes) |
Emit unwind raw opcodes. | |
void | Finalize (unsigned &PersonalityIndex, SmallVectorImpl< uint8_t > &Result) |
Finalize the unwind opcode sequence for emitBytes() | |
Definition at line 25 of file ARMUnwindOpAsm.h.
|
inline |
Definition at line 32 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
inline |
Emit unwind raw opcodes.
Definition at line 62 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::SmallVectorImpl< T >::insert(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::SmallVectorBase< Size_T >::size().
void UnwindOpcodeAssembler::EmitRegSave | ( | uint32_t | RegSave | ) |
Emit unwind opcodes for .save directives.
Definition at line 66 of file ARMUnwindOpAsm.cpp.
References llvm::countr_one(), Range, llvm::ARM::EHABI::UNWIND_OPCODE_POP_RA_AUTH_CODE, llvm::ARM::EHABI::UNWIND_OPCODE_POP_REG_MASK, llvm::ARM::EHABI::UNWIND_OPCODE_POP_REG_MASK_R4, llvm::ARM::EHABI::UNWIND_OPCODE_POP_REG_RANGE_R4, and llvm::ARM::EHABI::UNWIND_OPCODE_POP_REG_RANGE_R4_R14.
void UnwindOpcodeAssembler::EmitSetSP | ( | uint16_t | Reg | ) |
Emit unwind opcodes to copy address from source register to $sp.
Definition at line 130 of file ARMUnwindOpAsm.cpp.
References llvm::ARM::EHABI::UNWIND_OPCODE_SET_VSP.
void UnwindOpcodeAssembler::EmitSPOffset | ( | int64_t | Offset | ) |
Emit unwind opcodes to add $sp with an offset.
Definition at line 135 of file ARMUnwindOpAsm.cpp.
References llvm::encodeULEB128(), llvm::Offset, llvm::ARM::EHABI::UNWIND_OPCODE_DEC_VSP, llvm::ARM::EHABI::UNWIND_OPCODE_INC_VSP, and llvm::ARM::EHABI::UNWIND_OPCODE_INC_VSP_ULEB128.
void UnwindOpcodeAssembler::EmitVFPRegSave | ( | uint32_t | VFPRegSave | ) |
Emit unwind opcodes for .vsave directives.
Definition at line 107 of file ARMUnwindOpAsm.cpp.
References llvm::bit_width(), llvm::countl_one(), llvm::ARM::EHABI::UNWIND_OPCODE_POP_VFP_REG_RANGE_FSTMFDD, and llvm::ARM::EHABI::UNWIND_OPCODE_POP_VFP_REG_RANGE_FSTMFDD_D16.
void UnwindOpcodeAssembler::Finalize | ( | unsigned & | PersonalityIndex, |
SmallVectorImpl< uint8_t > & | Result | ||
) |
Finalize the unwind opcode sequence for emitBytes()
Definition at line 158 of file ARMUnwindOpAsm.cpp.
References llvm::ARM::EHABI::AEABI_UNWIND_CPP_PR0, llvm::ARM::EHABI::AEABI_UNWIND_CPP_PR1, assert(), llvm::ARM::EHABI::NUM_PERSONALITY_INDEX, Reset(), and llvm::SmallVectorBase< Size_T >::size().
|
inline |
Reset the unwind opcode assembler.
Definition at line 37 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorImpl< T >::clear(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by Finalize().
Set the personality.
Definition at line 45 of file ARMUnwindOpAsm.h.