9#ifndef LLVM_LIB_TARGET_ARM_ARMASMPRINTER_H
10#define LLVM_LIB_TARGET_ARM_ARMASMPRINTER_H
20class MachineConstantPool;
56 int OptimizationGoals;
70 std::unique_ptr<MCStreamer> Streamer);
73 return "ARM Assembly Printer";
89 void emitJumpTableTBInst(
const MachineInstr *
MI,
unsigned OffsetWidth);
94 getCodeViewJumpTableInfo(
int JTI,
const MachineInstr *BranchInstr,
95 const MCSymbol *BranchLabel)
const override;
100 void emitFunctionBodyEnd()
override;
101 void emitFunctionEntryLabel()
override;
102 void emitStartOfAsmFile(
Module &M)
override;
103 void emitEndOfAsmFile(
Module &M)
override;
107 MCSymbol *GetCPISymbol(
unsigned CPID)
const override;
125 void emitAttributes();
130 bool emitPseudoExpansionLowering(
MCStreamer &OutStreamer,
136 const Triple &TT =
TM.getTargetTriple();
137 if (!TT.isOSBinFormatMachO())
140 TT.getSubArch() == Triple::ARMSubArch_v7m ||
141 TT.getSubArch() == Triple::ARMSubArch_v6m;
142 return isThumb ? ARM::DW_ISA_ARM_thumb : ARM::DW_ISA_ARM_arm;
147 MCSymbol *GetARMJTIPICJumpTableLabel(
unsigned uid)
const;
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
static bool isThumb(const MCSubtargetInfo &STI)
#define LLVM_LIBRARY_VISIBILITY
static MCOperand GetSymbolRef(const MachineOperand &MO, const MCSymbol *Symbol, HexagonAsmPrinter &Printer, bool MustExtend)
const char LLVMTargetMachineRef TM
static bool printOperand(raw_ostream &OS, const SelectionDAG *G, const SDValue Value)
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.
ARMFunctionInfo - This class is derived from MachineFunctionInfo and contains private ARM-specific in...
This class is intended to be used as a driving class for all asm writers.
This is an important base class in LLVM.
A parsed version of the target data layout string in and methods for querying it.
Instances of this class represent operands of the MCInst class.
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 ...
Abstract base class for all machine specific constantpool value subclasses.
The MachineConstantPool class keeps track of constants referenced by a function which must be spilled...
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.
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
Primary interface to the complete machine description for the target machine.
Triple - Helper class for working with autoconf configuration names.
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.