14 #ifndef LLVM_LIB_TARGET_MIPS_MIPSASMPRINTER_H
15 #define LLVM_LIB_TARGET_MIPS_MIPSASMPRINTER_H
28 class MachineBasicBlock;
29 class MipsTargetStreamer;
40 bool emitPseudoExpansionLowering(
MCStreamer &OutStreamer,
46 void emitPseudoIndirectBranch(
MCStreamer &OutStreamer,
60 std::map<const char *, const llvm::Mips16HardFloatInfo::FuncSignature *>
63 void emitInlineAsmStart()
const override;
73 unsigned Reg1,
unsigned Reg2);
76 unsigned Reg1,
unsigned Reg2,
unsigned Reg3);
79 unsigned Reg1,
unsigned Reg2,
unsigned FPReg1,
80 unsigned FPReg2,
bool LE);
93 bool isLongBranchPseudo(
int Opcode)
const;
102 std::unique_ptr<MCStreamer> Streamer)
103 :
AsmPrinter(TM, std::move(Streamer)), MCP(nullptr),
104 InConstantPool(
false), MCInstLowering(*this) {}
111 bool UsingConstantPools =
112 (Subtarget->inMips16Mode() && Subtarget->useConstantIslands());
113 if (!UsingConstantPools)
119 void printSavedRegsBitmask();
120 void emitFrameDirective();
121 const char *getCurrentABIString()
const;
122 void EmitFunctionEntryLabel()
override;
123 void EmitFunctionBodyStart()
override;
124 void EmitFunctionBodyEnd()
override;
126 bool isBlockOnlyReachableByFallthrough(
128 bool PrintAsmOperand(
const MachineInstr *MI,
unsigned OpNo,
129 unsigned AsmVariant,
const char *ExtraCode,
131 bool PrintAsmMemoryOperand(
const MachineInstr *MI,
unsigned OpNum,
132 unsigned AsmVariant,
const char *ExtraCode,
138 const char *Modifier =
nullptr);
140 void EmitStartOfAsmFile(
Module &M)
override;
141 void EmitEndOfAsmFile(
Module &M)
override;
143 void EmitDebugValue(
const MCExpr *
Value,
unsigned Size)
const override;
The MachineConstantPool class keeps track of constants referenced by a function which must be spilled...
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. ...
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.
Reg
All possible values of the reg field in the ModR/M byte.
MipsMCInstLower - This class is used to lower an MachineInstr into an.
StringRef getPassName() const override
getPassName - Return a nice clean name for a pass.
Function Alias Analysis false
void EmitConstantPool() override
Print to the current output stream assembly representations of the constants in the constant pool MCP...
Streaming machine code generation interface.
This class is intended to be used as a driving class for all asm writers.
#define LLVM_LIBRARY_VISIBILITY
LLVM_LIBRARY_VISIBILITY - If a class marked with this attribute is linked into a shared library...
MipsMCInstLower MCInstLowering
MipsAsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > Streamer)
MachineOperand class - Representation of each machine instruction operand.
Representation of each machine instruction.
static bool printOperand(raw_ostream &OS, const SelectionDAG *G, const SDValue Value)
const MipsSubtarget * Subtarget
MCSubtargetInfo - Generic base class for all target subtargets.
MipsFunctionInfo - This class is derived from MachineFunction private Mips target-specific informatio...
LLVM Value Representation.
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.
const MipsFunctionInfo * MipsFI
StringRef - Represent a constant reference to a string, i.e.
Instances of this class represent operands of the MCInst class.