10 #ifndef LLVM_LIB_TARGET_ARM_ARMASMPRINTER_H 11 #define LLVM_LIB_TARGET_ARM_ARMASMPRINTER_H 19 class ARMFunctionInfo;
21 class MachineConstantPool;
57 int OptimizationGoals;
71 std::unique_ptr<MCStreamer> Streamer);
74 return "ARM Assembly Printer";
79 bool PrintAsmOperand(
const MachineInstr *MI,
unsigned OpNum,
80 unsigned AsmVariant,
const char *ExtraCode,
82 bool PrintAsmMemoryOperand(
const MachineInstr *MI,
unsigned OpNum,
83 unsigned AsmVariant,
const char *ExtraCode,
91 void EmitJumpTableTBInst(
const MachineInstr *MI,
unsigned OffsetWidth);
98 void EmitFunctionBodyEnd()
override;
99 void EmitFunctionEntryLabel()
override;
100 void EmitStartOfAsmFile(
Module &
M)
override;
101 void EmitEndOfAsmFile(
Module &M)
override;
105 MCSymbol *GetCPISymbol(
unsigned CPID)
const override;
115 void LowerPATCHABLE_FUNCTION_ENTER(
const MachineInstr &MI);
116 void LowerPATCHABLE_FUNCTION_EXIT(
const MachineInstr &MI);
123 void emitAttributes();
126 void EmitPatchedInstruction(
const MachineInstr *MI,
unsigned TargetOpc);
131 bool emitPseudoExpansionLowering(
MCStreamer &OutStreamer,
148 MCSymbol *GetARMJTIPICJumpTableLabel(
unsigned uid)
const;
A parsed version of the target data layout string in and methods for querying it. ...
The MachineConstantPool class keeps track of constants referenced by a function which must be spilled...
This class represents lattice values for constants.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
A Module instance is used to store all the information related to an LLVM module. ...
void EmitConstantPool() override
Print to the current output stream assembly representations of the constants in the constant pool MCP...
unsigned getISAEncoding() override
Get the value for DW_AT_APPLE_isa. Zero if no isa encoding specified.
StringRef getPassName() const override
getPassName - Return a nice clean name for a pass.
static bool isThumb(const MCSubtargetInfo &STI)
SubArchType getSubArch() const
getSubArch - get the parsed subarchitecture type for this triple.
Streaming machine code generation interface.
This is an important base class in LLVM.
static MCOperand GetSymbolRef(const MachineOperand &MO, const MCSymbol *Symbol, HexagonAsmPrinter &Printer, bool MustExtend)
This class is intended to be used as a driving class for all asm writers.
const Triple & getTargetTriple() const
bool isOSBinFormatMachO() const
Tests whether the environment is MachO.
Abstract base class for all machine specific constantpool value subclasses.
Triple - Helper class for working with autoconf configuration names.
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements...
MachineOperand class - Representation of each machine instruction operand.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
Representation of each machine instruction.
static bool printOperand(raw_ostream &OS, const SelectionDAG *G, const SDValue Value)
bool isThumb() const
Tests whether the target is Thumb (little and big endian).
ARMFunctionInfo - This class is derived from MachineFunctionInfo and contains private ARM-specific in...
Generic base class for all target subtargets.
#define LLVM_LIBRARY_VISIBILITY
LLVM_LIBRARY_VISIBILITY - If a class marked with this attribute is linked into a shared library...
This class implements an extremely fast bulk output stream that can only output to a stream...
Primary interface to the complete machine description for the target machine.
StringRef - Represent a constant reference to a string, i.e.
Instances of this class represent operands of the MCInst class.