Go to the documentation of this file.
14 #ifndef LLVM_LIB_TARGET_ARM_MCTARGETDESC_ARMUNWINDOPASM_H
15 #define LLVM_LIB_TARGET_ARM_MCTARGETDESC_ARMUNWINDOPASM_H
29 bool HasPersonality =
false;
33 OpBegins.push_back(0);
40 OpBegins.push_back(0);
41 HasPersonality =
false;
46 HasPersonality =
true;
63 Ops.
insert(Ops.end(), Opcodes.begin(), Opcodes.end());
64 OpBegins.push_back(OpBegins.back() + Opcodes.size());
68 void Finalize(
unsigned &PersonalityIndex,
72 void EmitInt8(
unsigned Opcode) {
73 Ops.push_back(Opcode & 0xff);
74 OpBegins.push_back(OpBegins.back() + 1);
77 void EmitInt16(
unsigned Opcode) {
78 Ops.push_back((Opcode >> 8) & 0xff);
79 Ops.push_back(Opcode & 0xff);
80 OpBegins.push_back(OpBegins.back() + 2);
83 void emitBytes(
const uint8_t *Opcode,
size_t Size) {
84 Ops.
insert(Ops.end(), Opcode, Opcode + Size);
85 OpBegins.push_back(OpBegins.back() + Size);
91 #endif // LLVM_LIB_TARGET_ARM_MCTARGETDESC_ARMUNWINDOPASM_H
This is an optimization pass for GlobalISel generic memory operations.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Reg
All possible values of the reg field in the ModR/M byte.
void setPersonality(const MCSymbol *Per)
Set the personality.
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()
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 EmitRegSave(uint32_t RegSave)
Emit unwind opcodes for .save directives.
void EmitVFPRegSave(uint32_t VFPRegSave)
Emit unwind opcodes for .vsave directives.
void Reset()
Reset the unwind opcode assembler.
iterator insert(iterator I, T &&Elt)