25 AArch64WinCOFFStreamer(
MCContext &
C, std::unique_ptr<MCAsmBackend> AB,
26 std::unique_ptr<MCCodeEmitter> CE,
27 std::unique_ptr<MCObjectWriter> OW)
36void AArch64WinCOFFStreamer::emitWinEHHandlerData(
SMLoc Loc) {
41 EHStreamer.EmitUnwindInfo(*
this, getCurrentWinFrameInfo(),
45void AArch64WinCOFFStreamer::emitWindowsUnwindTables(
WinEH::FrameInfo *Frame) {
46 EHStreamer.EmitUnwindInfo(*
this, Frame,
false);
49void AArch64WinCOFFStreamer::emitWindowsUnwindTables() {
50 if (!getNumWinFrameInfos())
55void AArch64WinCOFFStreamer::finishImpl() {
57 emitWindowsUnwindTables();
69void AArch64TargetWinCOFFStreamer::emitARM64WinUnwindCode(
unsigned UnwindCode,
77 CurFrame->
EpilogMap[CurrentEpilog].Instructions.push_back(Inst);
88 emitARM64WinUnwindCode(
Op, -1,
Size);
106 "Offset for save reg should be >= 0 && <= 504");
133 "Offset for save reg should be >= 0 && <= 504");
157 assert(
Offset <= 2040 &&
"UOP_AddFP must have offset <= 2040");
192 CurrentEpilog = S.emitCFILabel();
204 CurFrame->
EpilogMap[CurrentEpilog].Instructions.push_back(Inst);
206 CurFrame->
EpilogMap[CurrentEpilog].End = Label;
207 CurrentEpilog =
nullptr;
296 std::unique_ptr<MCAsmBackend> MAB,
297 std::unique_ptr<MCObjectWriter> OW,
298 std::unique_ptr<MCCodeEmitter>
Emitter) {
299 return new AArch64WinCOFFStreamer(Context, std::move(MAB), std::move(
Emitter),
dxil DXContainer Global Emitter
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
void emitARM64WinCFIECContext() override
void emitARM64WinCFISaveAnyRegQX(unsigned Reg, int Offset) override
void emitARM64WinCFIPACSignLR() override
void emitARM64WinCFIContext() override
void emitARM64WinCFIPrologEnd() override
void emitARM64WinCFISaveAnyRegDX(unsigned Reg, int Offset) override
void emitARM64WinCFIMachineFrame() override
void emitARM64WinCFINop() override
void emitARM64WinCFIEpilogEnd() override
void emitARM64WinCFISaveAnyRegIP(unsigned Reg, int Offset) override
void emitARM64WinCFISaveAnyRegQ(unsigned Reg, int Offset) override
void emitARM64WinCFISaveFRegP(unsigned Reg, int Offset) override
void emitARM64WinCFISaveFRegPX(unsigned Reg, int Offset) override
void emitARM64WinCFIClearUnwoundToCall() override
void emitARM64WinCFISaveRegP(unsigned Reg, int Offset) override
void emitARM64WinCFISaveR19R20X(int Offset) override
void emitARM64WinCFISaveRegPX(unsigned Reg, int Offset) override
void emitARM64WinCFISaveRegX(unsigned Reg, int Offset) override
void emitARM64WinCFIEpilogStart() override
void emitARM64WinCFITrapFrame() override
void emitARM64WinCFISaveAnyRegQPX(unsigned Reg, int Offset) override
void emitARM64WinCFISaveAnyRegIPX(unsigned Reg, int Offset) override
void emitARM64WinCFISaveFPLR(int Offset) override
void emitARM64WinCFISaveFRegX(unsigned Reg, int Offset) override
void emitARM64WinCFISaveAnyRegDPX(unsigned Reg, int Offset) override
void emitARM64WinCFIAllocStack(unsigned Size) override
void emitARM64WinCFISaveAnyRegD(unsigned Reg, int Offset) override
void emitARM64WinCFISaveAnyRegI(unsigned Reg, int Offset) override
void emitARM64WinCFISaveFReg(unsigned Reg, int Offset) override
void emitARM64WinCFISaveAnyRegIX(unsigned Reg, int Offset) override
void emitARM64WinCFISaveFPLRX(int Offset) override
void emitARM64WinCFISetFP() override
void emitARM64WinCFISaveReg(unsigned Reg, int Offset) override
void emitARM64WinCFISaveNext() override
void emitARM64WinCFIAddFP(unsigned Size) override
void emitARM64WinCFISaveAnyRegDP(unsigned Reg, int Offset) override
void emitARM64WinCFISaveLRPair(unsigned Reg, int Offset) override
void emitARM64WinCFISaveAnyRegQP(unsigned Reg, int Offset) override
This class represents an Operation in the Expression.
Emits exception handling directives.
Context object for machine code objects.
virtual void emitWindowsUnwindTables()
virtual void emitWinEHHandlerData(SMLoc Loc=SMLoc())
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
MCStreamer & getStreamer()
void finishImpl() override
Streamer specific finalization.
void emitWinEHHandlerData(SMLoc Loc) override
Represents a location in source code.
@ C
The default llvm calling convention, compatible with C.
@ CE
Windows NT (Windows on ARM)
This is an optimization pass for GlobalISel generic memory operations.
MCWinCOFFStreamer * createAArch64WinCOFFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > TAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter)
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.
std::vector< Instruction > Instructions
const MCSymbol * PrologEnd
MapVector< MCSymbol *, Epilog > EpilogMap