14 #ifndef LLVM_LIB_TARGET_MIPS_MIPSASMPRINTER_H 15 #define LLVM_LIB_TARGET_MIPS_MIPSASMPRINTER_H 30 class MCSubtargetInfo;
32 class MachineBasicBlock;
33 class MachineConstantPool;
34 class MachineFunction;
37 class MipsFunctionInfo;
38 class MipsTargetStreamer;
54 void LowerPATCHABLE_FUNCTION_ENTER(
const MachineInstr &MI);
55 void LowerPATCHABLE_FUNCTION_EXIT(
const MachineInstr &MI);
65 bool InConstantPool =
false;
67 std::map<const char *, const Mips16HardFloatInfo::FuncSignature *>
73 bool emitPseudoExpansionLowering(
MCStreamer &OutStreamer,
79 void emitPseudoIndirectBranch(
MCStreamer &OutStreamer,
85 void emitInlineAsmStart()
const override;
95 unsigned Reg1,
unsigned Reg2);
98 unsigned Reg1,
unsigned Reg2,
unsigned Reg3);
101 unsigned Reg1,
unsigned Reg2,
unsigned FPReg1,
102 unsigned FPReg2,
bool LE);
115 bool isLongBranchPseudo(
int Opcode)
const;
123 std::unique_ptr<MCStreamer> Streamer)
124 :
AsmPrinter(TM,
std::move(Streamer)), MCInstLowering(*this) {}
131 bool UsingConstantPools =
133 if (!UsingConstantPools)
139 void printSavedRegsBitmask();
140 void emitFrameDirective();
141 const char *getCurrentABIString()
const;
142 void EmitFunctionEntryLabel()
override;
143 void EmitFunctionBodyStart()
override;
144 void EmitFunctionBodyEnd()
override;
146 bool isBlockOnlyReachableByFallthrough(
148 bool PrintAsmOperand(
const MachineInstr *MI,
unsigned OpNo,
149 unsigned AsmVariant,
const char *ExtraCode,
151 bool PrintAsmMemoryOperand(
const MachineInstr *MI,
unsigned OpNum,
152 unsigned AsmVariant,
const char *ExtraCode,
158 const char *Modifier =
nullptr);
160 void EmitStartOfAsmFile(
Module &M)
override;
161 void EmitEndOfAsmFile(
Module &M)
override;
163 void EmitDebugValue(
const MCExpr *
Value,
unsigned Size)
const override;
168 #endif // LLVM_LIB_TARGET_MIPS_MIPSASMPRINTER_H 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. ...
bool inMips16Mode() const
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.
MipsMCInstLower - This class is used to lower an MachineInstr into an MCInst.
StringRef getPassName() const override
getPassName - Return a nice clean name for a pass.
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.
MipsMCInstLower MCInstLowering
MipsAsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > Streamer)
static bool useConstantIslands()
static void printMemOperand(raw_ostream &OS, const MachineMemOperand &MMO, const MachineFunction *MF, const Module *M, const MachineFrameInfo *MFI, const TargetInstrInfo *TII, LLVMContext &Ctx)
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
Generic base class for all target subtargets.
MipsFunctionInfo - This class is derived from MachineFunction private Mips target-specific informatio...
#define LLVM_LIBRARY_VISIBILITY
LLVM_LIBRARY_VISIBILITY - If a class marked with this attribute is linked into a shared library...
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.