LLVM
8.0.1
|
#include "Target/ARM/MCTargetDesc/ARMUnwindOpAsm.h"
Public Member Functions | |
UnwindOpcodeAssembler () | |
void | Reset () |
Reset the unwind opcode assembler. More... | |
void | setPersonality (const MCSymbol *Per) |
Set the personality. More... | |
void | EmitRegSave (uint32_t RegSave) |
Emit unwind opcodes for .save directives. More... | |
void | EmitVFPRegSave (uint32_t VFPRegSave) |
Emit unwind opcodes for .vsave directives. More... | |
void | EmitSetSP (uint16_t Reg) |
Emit unwind opcodes to copy address from source register to $sp. More... | |
void | EmitSPOffset (int64_t Offset) |
Emit unwind opcodes to add $sp with an offset. More... | |
void | EmitRaw (const SmallVectorImpl< uint8_t > &Opcodes) |
Emit unwind raw opcodes. More... | |
void | Finalize (unsigned &PersonalityIndex, SmallVectorImpl< uint8_t > &Result) |
Finalize the unwind opcode sequence for EmitBytes() More... | |
Definition at line 26 of file ARMUnwindOpAsm.h.
|
inline |
Definition at line 33 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
inline |
Emit unwind raw opcodes.
Definition at line 63 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), Finalize(), llvm::SmallVectorImpl< T >::insert(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Size, and llvm::SmallVectorBase::size().
void UnwindOpcodeAssembler::EmitRegSave | ( | uint32_t | RegSave | ) |
Emit unwind opcodes for .save directives.
Definition at line 67 of file ARMUnwindOpAsm.cpp.
References llvm::countTrailingOnes(), llvm::BitmaskEnumDetail::Mask(), 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.
Referenced by setPersonality().
void UnwindOpcodeAssembler::EmitSetSP | ( | uint16_t | Reg | ) |
Emit unwind opcodes to copy address from source register to $sp.
Definition at line 128 of file ARMUnwindOpAsm.cpp.
References llvm::ARM::EHABI::UNWIND_OPCODE_SET_VSP.
Referenced by setPersonality().
void UnwindOpcodeAssembler::EmitSPOffset | ( | int64_t | Offset | ) |
Emit unwind opcodes to add $sp with an offset.
Definition at line 133 of file ARMUnwindOpAsm.cpp.
References llvm::encodeULEB128(), llvm::ARM::EHABI::UNWIND_OPCODE_DEC_VSP, llvm::ARM::EHABI::UNWIND_OPCODE_INC_VSP, and llvm::ARM::EHABI::UNWIND_OPCODE_INC_VSP_ULEB128.
Referenced by setPersonality().
void UnwindOpcodeAssembler::EmitVFPRegSave | ( | uint32_t | VFPRegSave | ) |
Emit unwind opcodes for .vsave directives.
Definition at line 105 of file ARMUnwindOpAsm.cpp.
References llvm::countLeadingOnes(), llvm::countLeadingZeros(), llvm::ARM::EHABI::UNWIND_OPCODE_POP_VFP_REG_RANGE_FSTMFDD, and llvm::ARM::EHABI::UNWIND_OPCODE_POP_VFP_REG_RANGE_FSTMFDD_D16.
Referenced by setPersonality().
void UnwindOpcodeAssembler::Finalize | ( | unsigned & | PersonalityIndex, |
SmallVectorImpl< uint8_t > & | Result | ||
) |
Finalize the unwind opcode sequence for EmitBytes()
Definition at line 156 of file ARMUnwindOpAsm.cpp.
References llvm::ARM::EHABI::AEABI_UNWIND_CPP_PR0, llvm::ARM::EHABI::AEABI_UNWIND_CPP_PR1, assert(), llvm::sys::path::end(), llvm::ARM::EHABI::NUM_PERSONALITY_INDEX, and llvm::SmallVectorImpl< T >::resize().
Referenced by EmitRaw().
|
inline |
Reset the unwind opcode assembler.
Definition at line 38 of file ARMUnwindOpAsm.h.
References llvm::SmallVectorImpl< T >::clear(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Set the personality.
Definition at line 46 of file ARMUnwindOpAsm.h.
References EmitRegSave(), EmitSetSP(), EmitSPOffset(), EmitVFPRegSave(), and Reg.