Go to the documentation of this file.
26 std::unique_ptr<MCAsmBackend> MAB,
27 std::unique_ptr<MCObjectWriter> OW,
28 std::unique_ptr<MCCodeEmitter>
Emitter)
32 MipsOptionRecords.push_back(
33 std::unique_ptr<MipsRegInfoRecord>(RegInfoRecord));
49 unsigned Reg =
Op.getReg();
78 for (
auto *L : Labels) {
79 auto *Label = cast<MCSymbolELF>(L);
90 Labels.push_back(Symbol);
94 const MCExpr *Subsection) {
111 for (
const auto &
I : MipsOptionRecords)
112 I->EmitMipsOptionRecord();
117 std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter>
Emitter,
void emitCFIEndProcImpl(MCDwarfFrameInfo &Frame) override
This is an optimization pass for GlobalISel generic memory operations.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
void emitLabel(MCSymbol *Symbol, SMLoc Loc=SMLoc()) override
Emit a label for Symbol into the current section.
void registerSymbol(const MCSymbol &Symbol, bool *Created=nullptr)
Context object for machine code objects.
void emitIntValue(uint64_t Value, unsigned Size) override
Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers.
Reg
All possible values of the reg field in the ModR/M byte.
MCELFStreamer * createMipsELFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll)
Instances of this class represent a single low-level machine instruction.
bool isMicroMipsEnabled() const
void switchSection(MCSection *Section, const MCExpr *Subsection=nullptr) override
Overriding this function allows us to dismiss all labels that are candidates for marking as microMIPS...
unsigned getNumOperands() const
MipsELFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter)
void SetPhysRegUsed(unsigned Reg, const MCRegisterInfo *MCRegInfo)
dxil DXContainer Global Emitter
Represents a location in source code.
void emitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) override
Emit the given Instruction into the current section.
virtual void switchSection(MCSection *Section, const MCExpr *Subsection=nullptr)
Set the current section where code is being emitted to Section.
MCSymbol * emitCFILabel() override
When emitting an object file, create and emit a real label.
void emitCFIStartProcImpl(MCDwarfFrameInfo &Frame) override
void createPendingLabelRelocs()
Mark labels as microMIPS, if necessary for the subtarget.
compiles ldr LCPI1_0 ldr ldr mov lsr tst moveq r1 ldr LCPI1_1 and r0 bx lr It would be better to do something like to fold the shift into the conditional move
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
virtual void emitIntValue(uint64_t Value, unsigned Size)
Special case of EmitValue that avoids the client having to pass in a MCExpr for constant integers.
MCAssembler & getAssembler()
void emitValueImpl(const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc()) override
Emit the expression Value into the output as a native integer of the given Size bytes.
void emitValueImpl(const MCExpr *Value, unsigned Size, SMLoc Loc) override
Overriding these functions allows us to dismiss all labels that are candidates for marking as microMI...
Instances of this class represent a uniqued identifier for a section in the current translation unit.
MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...
MCSymbol * createTempSymbol()
Create a temporary symbol with a unique name.
void emitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) override
Overriding this function allows us to add arbitrary behaviour before the Inst is actually emitted.
void EmitMipsOptionRecords()
Emits all the option records stored up until the point it's called.
MCContext & getContext() const
MCTargetStreamer * getTargetStreamer()
const MCOperand & getOperand(unsigned i) const
Instances of this class represent operands of the MCInst class.
void emitLabel(MCSymbol *Symbol, SMLoc Loc=SMLoc()) override
Overriding this function allows us to record all labels that should be marked as microMIPS.
Generic base class for all target subtargets.
LLVM Value Representation.
Base class for the full range of assembler expressions which are needed for parsing.