13#ifndef LLVM_LIB_TARGET_MIPS_MIPSASMPRINTER_H
14#define LLVM_LIB_TARGET_MIPS_MIPSASMPRINTER_H
31class MachineBasicBlock;
32class MachineConstantPool;
36class MipsFunctionInfo;
37class MipsTargetStreamer;
64 bool InConstantPool =
false;
66 std::map<const char *, const Mips16HardFloatInfo::FuncSignature *>
72 bool emitPseudoExpansionLowering(
MCStreamer &OutStreamer,
78 void emitPseudoIndirectBranch(
MCStreamer &OutStreamer,
84 void emitInlineAsmStart()
const override;
94 unsigned Reg1,
unsigned Reg2);
97 unsigned Reg1,
unsigned Reg2,
unsigned Reg3);
100 unsigned Reg1,
unsigned Reg2,
unsigned FPReg1,
101 unsigned FPReg2,
bool LE);
114 bool isLongBranchPseudo(
int Opcode)
const;
122 std::unique_ptr<MCStreamer> Streamer)
130 bool UsingConstantPools =
132 if (!UsingConstantPools)
138 void printSavedRegsBitmask();
139 void emitFrameDirective();
140 const char *getCurrentABIString()
const;
141 void emitFunctionEntryLabel()
override;
142 void emitFunctionBodyStart()
override;
143 void emitFunctionBodyEnd()
override;
145 bool isBlockOnlyReachableByFallthrough(
149 bool PrintAsmMemoryOperand(
const MachineInstr *
MI,
unsigned OpNum,
155 const char *Modifier =
nullptr);
157 void emitStartOfAsmFile(
Module &M)
override;
158 void emitEndOfAsmFile(
Module &M)
override;
160 void emitDebugValue(
const MCExpr *
Value,
unsigned Size)
const override;
#define LLVM_LIBRARY_VISIBILITY
LLVM_LIBRARY_VISIBILITY - If a class marked with this attribute is linked into a shared library,...
Machine Check Debug Module
const char LLVMTargetMachineRef TM
static bool printOperand(raw_ostream &OS, const SelectionDAG *G, const SDValue Value)
static void printMemOperand(raw_ostream &OS, const MachineMemOperand &MMO, const MachineFunction *MF, const Module *M, const MachineFrameInfo *MFI, const TargetInstrInfo *TII, LLVMContext &Ctx)
This class is intended to be used as a driving class for all asm writers.
virtual void emitConstantPool()
Print to the current output stream assembly representations of the constants in the constant pool MCP...
Base class for the full range of assembler expressions which are needed for parsing.
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 ...
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.
MipsAsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > Streamer)
void emitConstantPool() override
Print to the current output stream assembly representations of the constants in the constant pool MCP...
MipsMCInstLower MCInstLowering
const MipsSubtarget * Subtarget
const MipsFunctionInfo * MipsFI
StringRef getPassName() const override
getPassName - Return a nice clean name for a pass.
MipsFunctionInfo - This class is derived from MachineFunction private Mips target-specific informatio...
MipsMCInstLower - This class is used to lower an MachineInstr into an MCInst.
static bool useConstantIslands()
bool inMips16Mode() const
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.
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.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.