9#ifndef LLVM_LIB_TARGET_X86_X86ASMPRINTER_H
10#define LLVM_LIB_TARGET_X86_X86ASMPRINTER_H
30 std::unique_ptr<MCCodeEmitter> CodeEmitter;
31 bool EmitFPOData =
false;
32 bool ShouldEmitWeakSwiftAsyncExtendedFramePointerFlags =
false;
33 bool IndCSPrefix =
false;
43 class StackMapShadowTracker {
52 void reset(
unsigned RequiredSize) {
53 RequiredShadowSize = RequiredSize;
54 CurrentShadowSize = 0;
63 bool InShadow =
false;
70 unsigned RequiredShadowSize = 0, CurrentShadowSize = 0;
73 StackMapShadowTracker SMShadowTracker;
81 void EmitAndCountInstruction(
MCInst &Inst);
83 void LowerPATCHPOINT(
const MachineInstr &
MI, X86MCInstLower &MCIL);
84 void LowerSTATEPOINT(
const MachineInstr &
MI, X86MCInstLower &MCIL);
85 void LowerFAULTING_OP(
const MachineInstr &
MI, X86MCInstLower &MCIL);
86 void LowerPATCHABLE_OP(
const MachineInstr &
MI, X86MCInstLower &MCIL);
88 void LowerTlsAddr(X86MCInstLower &MCInstLowering,
const MachineInstr &
MI);
92 X86MCInstLower &MCIL);
93 void LowerPATCHABLE_RET(
const MachineInstr &
MI, X86MCInstLower &MCIL);
94 void LowerPATCHABLE_TAIL_CALL(
const MachineInstr &
MI, X86MCInstLower &MCIL);
95 void LowerPATCHABLE_EVENT_CALL(
const MachineInstr &
MI, X86MCInstLower &MCIL);
97 X86MCInstLower &MCIL);
99 void LowerFENTRY_CALL(
const MachineInstr &
MI, X86MCInstLower &MCIL);
103 void EmitKCFITypePadding(
const MachineFunction &MF,
bool HasType =
true);
120 const char *Modifier);
121 void PrintIntelMemReference(
const MachineInstr *
MI,
unsigned OpNo,
133 return "X86 Assembly Printer";
138 void emitStartOfAsmFile(
Module &M)
override;
140 void emitEndOfAsmFile(
Module &M)
override;
152 SMShadowTracker.reset(0);
155 return AsmPrinter::doInitialization(M);
159 void emitFunctionBodyStart()
override;
160 void emitFunctionBodyEnd()
override;
164 return ShouldEmitWeakSwiftAsyncExtendedFramePointerFlags;
#define LLVM_LIBRARY_VISIBILITY
const char LLVMTargetMachineRef TM
This class is intended to be used as a driving class for all asm writers.
MCCodeEmitter - Generic instruction encoding interface.
Instances of this class represent a single low-level machine instruction.
Streaming machine code generation interface.
Generic base class for all target subtargets.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
Representation of each machine instruction.
MachineOperand class - Representation of each machine instruction operand.
A Module instance is used to store all the information related to an LLVM module.
StringRef - Represent a constant reference to a string, i.e.
Primary interface to the complete machine description for the target machine.
LLVM Value Representation.
bool doInitialization(Module &M) override
Set up the AsmPrinter when we are working on a new module.
const X86Subtarget & getSubtarget() const
bool shouldEmitWeakSwiftAsyncExtendedFramePointerFlags() const override
StringRef getPassName() const override
getPassName - Return a nice clean name for a pass.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
auto count(R &&Range, const E &Element)
Wrapper function around std::count to count the number of times an element Element occurs in the give...