27 std::unique_ptr<MCAsmBackend> MAB,
28 std::unique_ptr<MCObjectWriter> OW,
29 std::unique_ptr<MCCodeEmitter> Emitter)
33 MipsOptionRecords.push_back(
34 std::unique_ptr<MipsRegInfoRecord>(RegInfoRecord));
44 for (
unsigned OpIndex = 0; OpIndex < Inst.
getNumOperands(); ++OpIndex) {
79 for (
auto *L : Labels) {
80 auto *Label = cast<MCSymbolELF>(L);
91 Labels.push_back(Symbol);
95 const MCExpr *Subsection) {
112 for (
const auto &
I : MipsOptionRecords)
113 I->EmitMipsOptionRecord();
117 MCContext &Context, std::unique_ptr<MCAsmBackend> MAB,
118 std::unique_ptr<MCObjectWriter> OW, std::unique_ptr<MCCodeEmitter> Emitter,
Instances of this class represent a uniqued identifier for a section in the current translation unit...
This class represents lattice values for constants.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
void registerSymbol(const MCSymbol &Symbol, bool *Created=nullptr)
MCContext & getContext() const
MipsELFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter)
Base class for the full range of assembler expressions which are needed for parsing.
void EmitCFIEndProcImpl(MCDwarfFrameInfo &Frame) override
void createPendingLabelRelocs()
Mark labels as microMIPS, if necessary for the subtarget.
unsigned getReg() const
Returns the register number.
Context object for machine code objects.
void SetPhysRegUsed(unsigned Reg, const MCRegisterInfo *MCRegInfo)
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.
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...
Instances of this class represent a single low-level machine instruction.
MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...
MCSymbol * createTempSymbol(bool CanBeUnnamed=true)
Create and return a new assembler temporary symbol with a unique but unspecified name.
MCTargetStreamer * getTargetStreamer()
virtual void SwitchSection(MCSection *Section, const MCExpr *Subsection=nullptr)
Set the current section where code is being emitted to Section.
void EmitCFIStartProcImpl(MCDwarfFrameInfo &Frame) override
MCAssembler & getAssembler()
unsigned getNumOperands() 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...
bool isMicroMipsEnabled() const
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...
const MCOperand & getOperand(unsigned i) const
void EmitMipsOptionRecords()
Emits all the option records stored up until the point it's called.
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...
Generic base class for all target subtargets.
void EmitLabel(MCSymbol *Symbol, SMLoc Loc=SMLoc()) override
Overriding this function allows us to record all labels that should be marked as microMIPS.
MCELFStreamer * createMipsELFStreamer(MCContext &Context, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > OW, std::unique_ptr< MCCodeEmitter > Emitter, bool RelaxAll)
void EmitLabel(MCSymbol *Symbol, SMLoc Loc=SMLoc()) override
Emit a label for Symbol into the current section.
MCSymbol * EmitCFILabel() override
When emitting an object file, create and emit a real label.
const MCRegisterInfo * getRegisterInfo() const
LLVM Value Representation.
Represents a location in source code.
Instances of this class represent operands of the MCInst class.
void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI, bool=false) override
Emit the given Instruction into the current section.
void EmitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI, bool=false) override
Overriding this function allows us to add arbitrary behaviour before the Inst is actually emitted...