Go to the documentation of this file.
35 "mips-round-section-sizes",
cl::init(
false),
84 unsigned ReturnReg) {}
149 bool SaveLocationIsRegister) {}
227 unsigned Reg2,
SMLoc IDLoc,
252 unsigned Reg1, int16_t Imm0, int16_t Imm1,
253 int16_t Imm2,
SMLoc IDLoc,
267 unsigned TrgReg,
bool Is64Bit,
269 emitRRR(Is64Bit ? Mips::DADDu : Mips::ADDu, DstReg, SrcReg, TrgReg,
SMLoc(),
274 int16_t ShiftAmount,
SMLoc IDLoc,
276 if (ShiftAmount >= 32) {
277 emitRRI(Mips::DSLL32, DstReg, SrcReg, ShiftAmount - 32, IDLoc, STI);
281 emitRRI(Mips::DSLL, DstReg, SrcReg, ShiftAmount, IDLoc, STI);
287 unsigned Opc = Mips::SLL;
289 Opc =
isMips32r6(STI) ? Mips::MOVE16_MMR6 : Mips::MOVE16_MM;
290 emitRR(Opc, Mips::ZERO, Mips::ZERO, IDLoc, STI);
295 Opc =
isMips32r6(STI) ? Mips::SLL_MMR6 : Mips::SLL_MM;
297 emitRRI(Opc, Mips::ZERO, Mips::ZERO, 0, IDLoc, STI);
302 emitRR(Mips::MOVE16_MM, Mips::ZERO, Mips::ZERO, IDLoc, STI);
304 emitRRI(Mips::SLL, Mips::ZERO, Mips::ZERO, 0, IDLoc, STI);
315 unsigned Opcode,
unsigned SrcReg,
unsigned BaseReg, int64_t Offset,
319 emitRRI(Opcode, SrcReg, BaseReg, Offset, IDLoc, STI);
327 unsigned ATReg = GetATReg();
331 unsigned LoOffset = Offset & 0x0000ffff;
332 unsigned HiOffset = (Offset & 0xffff0000) >> 16;
336 if (LoOffset & 0x8000)
340 emitRI(Mips::LUi, ATReg, HiOffset, IDLoc, STI);
341 if (BaseReg != Mips::ZERO)
342 emitRRR(Mips::ADDu, ATReg, ATReg, BaseReg, IDLoc, STI);
344 emitRRI(Opcode, SrcReg, ATReg, LoOffset, IDLoc, STI);
352 unsigned BaseReg, int64_t Offset,
353 unsigned TmpReg,
SMLoc IDLoc,
356 emitRRI(Opcode, DstReg, BaseReg, Offset, IDLoc, STI);
367 unsigned LoOffset = Offset & 0x0000ffff;
368 unsigned HiOffset = (Offset & 0xffff0000) >> 16;
372 if (LoOffset & 0x8000)
376 emitRI(Mips::LUi, TmpReg, HiOffset, IDLoc, STI);
377 if (BaseReg != Mips::ZERO)
378 emitRRR(Mips::ADDu, TmpReg, TmpReg, BaseReg, IDLoc, STI);
380 emitRRI(Opcode, DstReg, TmpReg, LoOffset, IDLoc, STI);
388 OS <<
"\t.set\tmicromips\n";
393 OS <<
"\t.set\tnomicromips\n";
398 OS <<
"\t.set\tmips16\n";
403 OS <<
"\t.set\tnomips16\n";
408 OS <<
"\t.set\treorder\n";
413 OS <<
"\t.set\tnoreorder\n";
418 OS <<
"\t.set\tmacro\n";
423 OS <<
"\t.set\tnomacro\n";
428 OS <<
"\t.set\tmsa\n";
433 OS <<
"\t.set\tnomsa\n";
438 OS <<
"\t.set\tmt\n";
443 OS <<
"\t.set\tnomt\n";
448 OS <<
"\t.set\tcrc\n";
453 OS <<
"\t.set\tnocrc\n";
458 OS <<
"\t.set\tvirt\n";
463 OS <<
"\t.set\tnovirt\n";
468 OS <<
"\t.set\tginv\n";
473 OS <<
"\t.set\tnoginv\n";
478 OS <<
"\t.set\tat\n";
483 OS <<
"\t.set\tat=$" <<
Twine(RegNo) <<
"\n";
488 OS <<
"\t.set\tnoat\n";
493 OS <<
"\t.end\t" <<
Name <<
'\n';
497 OS <<
"\t.ent\t" <<
Symbol.getName() <<
'\n';
505 OS <<
"\t.nan\tlegacy\n";
509 OS <<
"\t.option\tpic0\n";
513 OS <<
"\t.option\tpic2\n";
522 unsigned ReturnReg) {
530 OS <<
"\t.set arch=" << Arch <<
"\n";
535 OS <<
"\t.set\tmips0\n";
540 OS <<
"\t.set\tmips1\n";
545 OS <<
"\t.set\tmips2\n";
550 OS <<
"\t.set\tmips3\n";
555 OS <<
"\t.set\tmips4\n";
560 OS <<
"\t.set\tmips5\n";
565 OS <<
"\t.set\tmips32\n";
570 OS <<
"\t.set\tmips32r2\n";
575 OS <<
"\t.set\tmips32r3\n";
580 OS <<
"\t.set\tmips32r5\n";
585 OS <<
"\t.set\tmips32r6\n";
590 OS <<
"\t.set\tmips64\n";
595 OS <<
"\t.set\tmips64r2\n";
600 OS <<
"\t.set\tmips64r3\n";
605 OS <<
"\t.set\tmips64r5\n";
610 OS <<
"\t.set\tmips64r6\n";
615 OS <<
"\t.set\tdsp\n";
620 OS <<
"\t.set\tdspr2\n";
625 OS <<
"\t.set\tnodsp\n";
630 OS <<
"\t.set\tmips3d\n";
635 OS <<
"\t.set\tnomips3d\n";
640 OS <<
"\t.set\tpop\n";
645 OS <<
"\t.set\tpush\n";
650 OS <<
"\t.set\tsoftfloat\n";
655 OS <<
"\t.set\thardfloat\n";
662 for (
int i = 7;
i >= 0;
i--)
667 int CPUTopSavedRegOff) {
670 OS <<
',' << CPUTopSavedRegOff <<
'\n';
674 int FPUTopSavedRegOff) {
677 OS <<
"," << FPUTopSavedRegOff <<
'\n';
693 OS <<
"\t.cplocal\t$"
702 OS <<
"\t.cprestore\t" << Offset <<
"\n";
710 OS <<
"\t.cpsetup\t$"
726 bool SaveLocationIsRegister) {
734 OS <<
"\t.module\tsoftfloat\n";
755 OS <<
"\t.set\toddspreg\n";
760 OS <<
"\t.set\tnooddspreg\n";
764 OS <<
"\t.module\tsoftfloat\n";
768 OS <<
"\t.module\thardfloat\n";
772 OS <<
"\t.module\tmt\n";
776 OS <<
"\t.module\tcrc\n";
780 OS <<
"\t.module\tnocrc\n";
784 OS <<
"\t.module\tvirt\n";
788 OS <<
"\t.module\tnovirt\n";
792 OS <<
"\t.module\tginv\n";
796 OS <<
"\t.module\tnoginv\n";
841 if (Features[Mips::FeatureMips64r6])
843 else if (Features[Mips::FeatureMips64r2] ||
844 Features[Mips::FeatureMips64r3] ||
845 Features[Mips::FeatureMips64r5])
847 else if (Features[Mips::FeatureMips64])
849 else if (Features[Mips::FeatureMips5])
851 else if (Features[Mips::FeatureMips4])
853 else if (Features[Mips::FeatureMips3])
855 else if (Features[Mips::FeatureMips32r6])
857 else if (Features[Mips::FeatureMips32r2] ||
858 Features[Mips::FeatureMips32r3] ||
859 Features[Mips::FeatureMips32r5])
861 else if (Features[Mips::FeatureMips32])
863 else if (Features[Mips::FeatureMips2])
869 if (Features[Mips::FeatureCnMips])
873 if (Features[Mips::FeatureNaN2008])
880 auto *
Symbol = cast<MCSymbolELF>(
S);
906 if (RoundSectionSizes) {
915 unsigned Alignment = Section.getAlignment();
918 if (Section.useCodeAlign())
939 if (Features[Mips::FeatureGP64Bit]) {
942 }
else if (Features[Mips::FeatureMips64r2] || Features[Mips::FeatureMips64])
947 if (!Features[Mips::FeatureNoABICalls])
965 auto *
Symbol = cast<MCSymbolELF>(
S);
969 const auto &RhsSym = cast<MCSymbolELF>(
983 MicroMipsEnabled =
true;
988 MicroMipsEnabled =
false;
1120 unsigned ReturnReg_) {
1131 int CPUTopSavedRegOff) {
1138 int FPUTopSavedRegOff) {
1298 bool SaveLocationIsRegister) {
1305 if (SaveLocationIsRegister) {
MCStreamer & getStreamer()
void emitLoadWithImmOffset(unsigned Opcode, unsigned DstReg, unsigned BaseReg, int64_t Offset, unsigned TmpReg, SMLoc IDLoc, const MCSubtargetInfo *STI)
Emit a load instruction with an immediate offset.
bool emitDirectiveCpRestore(int Offset, function_ref< unsigned()> GetATReg, SMLoc IDLoc, const MCSubtargetInfo *STI) override
void emitDirectiveSetReorder() override
virtual void emitDirectiveSetMips5()
unsigned getELFHeaderEFlags() const
ELF e_header flags.
virtual void emitDirectiveSetVirt()
const MCObjectFileInfo * getObjectFileInfo() const
virtual void emitDirectiveSetNoVirt()
void emitDirectiveModuleFP() override
virtual void emitDirectiveSetMips32R3()
void emitII(unsigned Opcode, int16_t Imm1, int16_t Imm2, SMLoc IDLoc, const MCSubtargetInfo *STI)
This is an optimization pass for GlobalISel generic memory operations.
virtual void emitDirectiveOptionPic0()
void emitDirectiveSetMips64R5() override
void emitRR(unsigned Opcode, unsigned Reg0, unsigned Reg1, SMLoc IDLoc, const MCSubtargetInfo *STI)
void emitDirectiveSetFp(MipsABIFlagsSection::FpABIKind Value) override
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
void emitDirectiveSetNoReorder() override
void emitDirectiveCpsetup(unsigned RegNo, int RegOrOffset, const MCSymbol &Sym, bool IsReg) override
void emitRX(unsigned Opcode, unsigned Reg0, MCOperand Op1, SMLoc IDLoc, const MCSubtargetInfo *STI)
virtual void emitDirectiveModuleMT()
static MCOperand createExpr(const MCExpr *Val)
void emitGPRestore(int Offset, SMLoc IDLoc, const MCSubtargetInfo *STI)
Emit the $gp restore operation for .cprestore.
virtual void emitDirectiveSetNoMips3D()
void emitLabel(MCSymbol *Symbol) override
void registerSymbol(const MCSymbol &Symbol, bool *Created=nullptr)
virtual void emitDirectiveSetNoMt()
MipsTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS)
static MCOperand createImm(int64_t Val)
Context object for machine code objects.
virtual void emitDirectiveEnt(const MCSymbol &Symbol)
void emitDirectiveNaNLegacy() override
virtual void emitDirectiveSetMips16()
void emitDirectiveSetNoVirt() override
void emitDirectiveSetMips5() override
StringRef getFpABIString(FpABIKind Value)
void emitDirectiveSetNoMicroMips() override
void emitDirectiveEnt(const MCSymbol &Symbol) override
MipsTargetELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI)
virtual void emitDirectiveSetArch(StringRef Arch)
virtual void emitDirectiveModuleVirt()
static bool isMicroMips(const MCSubtargetInfo *STI)
virtual void emitDirectiveModuleNoCRC()
void emitRRI(unsigned Opcode, unsigned Reg0, unsigned Reg1, int16_t Imm, SMLoc IDLoc, const MCSubtargetInfo *STI)
void emitDirectiveModuleNoGINV() override
bool emitDirectiveCpRestore(int Offset, function_ref< unsigned()> GetATReg, SMLoc IDLoc, const MCSubtargetInfo *STI) override
Emit a .cprestore directive.
void emitDirectiveSetMips32R3() override
virtual void emitFrame(unsigned StackReg, unsigned StackSize, unsigned ReturnReg)
virtual void emitDirectiveModuleNoGINV()
uint16_t getEncodingValue(MCRegister RegNo) const
Returns the encoding for RegNo.
virtual void emitValueImpl(const MCExpr *Value, unsigned Size, SMLoc Loc=SMLoc())
Emit the expression Value into the output as a native integer of the given Size bytes.
void emitDSLL(unsigned DstReg, unsigned SrcReg, int16_t ShiftAmount, SMLoc IDLoc, const MCSubtargetInfo *STI)
virtual void emitDirectiveModuleCRC()
The instances of the Type class are immutable: once they are created, they are never changed.
bool popSection()
Restore the current and previous section from the section stack.
void emitDirectiveCpLoad(unsigned RegNo) override
virtual void emitDirectiveModuleFP()
virtual void emitDirectiveSetMips3D()
virtual void emitDirectiveSetMips32R5()
void emitDirectiveOptionPic0() override
void emitDirectiveSetNoMt() override
virtual void emitDirectiveInsn()
Container class for subtarget features.
virtual void emitDirectiveModuleNoVirt()
Expected< ExpressionValue > max(const ExpressionValue &Lhs, const ExpressionValue &Rhs)
virtual void emitDirectiveSetNoAt()
Instances of this class represent a single low-level machine instruction.
void emitDirectiveSetMicroMips() override
This represents a section on linux, lots of unix variants and some bare metal systems.
void emitDirectiveSetNoGINV() override
bool isMicroMipsEnabled() const
virtual void emitDirectiveSetAt()
virtual void emitDirectiveSetNoMacro()
MipsTargetStreamer(MCStreamer &S)
void emitDirectiveSetDsp() override
void emitRRRX(unsigned Opcode, unsigned Reg0, unsigned Reg1, unsigned Reg2, MCOperand Op3, SMLoc IDLoc, const MCSubtargetInfo *STI)
virtual void emitDirectiveCpLoad(unsigned RegNo)
void emitDirectiveSetMips16() override
void emitDirectiveSetPop() override
static const char * getRegisterName(unsigned RegNo)
virtual void emitDirectiveSetNoMips16()
virtual void emitDirectiveSetNoOddSPReg()
void setOpcode(unsigned Op)
virtual void emitDirectiveSetMacro()
Streaming machine code generation interface.
void emitDirectiveCpAdd(unsigned RegNo) override
void emitDirectiveNaN2008() override
MCSymbol * getOrCreateSymbol(const Twine &Name)
Lookup the symbol inside with the specified Name.
void emitDirectiveSetArch(StringRef Arch) override
MCSection * getDataSection() const
void emitDirectiveSetAt() override
void emitDirectiveSetMips0() override
Represents a location in source code.
virtual void emitDirectiveCpsetup(unsigned RegNo, int RegOrOffset, const MCSymbol &Sym, bool IsReg)
virtual void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff)
MCContext & getContext() const
void emitDirectiveSetMips16() override
const Triple & getTargetTriple() const
virtual void emitDirectiveSetGINV()
void emitDirectiveCpLocal(unsigned RegNo) override
void emitDirectiveModuleVirt() override
void emitDirectiveModuleHardFloat() override
void emitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) override
Emit the given Instruction into the current section.
virtual void emitLabel(MCSymbol *Symbol, SMLoc Loc=SMLoc())
Emit a label for Symbol into the current section.
virtual void switchSection(MCSection *Section, const MCExpr *Subsection=nullptr)
Set the current section where code is being emitted to Section.
bool isPositionIndependent() const
virtual void emitDirectiveSetMips64R3()
virtual void emitDirectiveModuleGINV()
const FeatureBitset & getFeatureBits() const
void emitDirectiveAbiCalls() override
void report_fatal_error(Error Err, bool gen_crash_diag=true)
Report a serious error, calling any installed error handler.
virtual void emitDirectiveSetOddSPReg()
This class implements an extremely fast bulk output stream that can only output to a stream.
virtual void emitDirectiveSetNoDsp()
virtual void emitDirectiveSetNoReorder()
void emitDirectiveEnd(StringRef Name) override
Target specific streamer interface.
StringRef getName() const
getName - Get the symbol name.
void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff) override
virtual void emitDirectiveSetMips3()
ArchType getArch() const
Get the parsed architecture type of this triple.
void emitDirectiveSetMsa() override
MCSection * getTextSection() const
void emitDirectiveSetMips32R5() override
virtual void emitDirectiveModuleSoftFloat()
virtual void emitDirectiveSetDspr2()
virtual void emitDirectiveOptionPic2()
void emitEmptyDelaySlot(bool hasShortDelaySlot, SMLoc IDLoc, const MCSubtargetInfo *STI)
virtual bool emitDirectiveCpRestore(int Offset, function_ref< unsigned()> GetATReg, SMLoc IDLoc, const MCSubtargetInfo *STI)
virtual void emitDirectiveSetMt()
void emitDirectiveSetNoMicroMips() override
void addOperand(const MCOperand Op)
void emitDirectiveSetMt() override
void emitDirectiveSetMips64R3() override
static void printHex32(unsigned Value, raw_ostream &OS)
virtual void emitDirectiveSetMips64()
An efficient, type-erasing, non-owning reference to a callable.
void emitStoreWithImmOffset(unsigned Opcode, unsigned SrcReg, unsigned BaseReg, int64_t Offset, function_ref< unsigned()> GetATReg, SMLoc IDLoc, const MCSubtargetInfo *STI)
Emit a store instruction with an offset.
virtual void emitDirectiveSetMips64R6()
void emitDirectiveModuleNoCRC() override
virtual void emitDirectiveSetNoCRC()
void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff) override
void emitAddu(unsigned DstReg, unsigned SrcReg, unsigned TrgReg, bool Is64Bit, const MCSubtargetInfo *STI)
void createPendingLabelRelocs()
Mark labels as microMIPS, if necessary for the subtarget.
void emitDirectiveSetNoMsa() override
void emitDirectiveSetCRC() override
void emitFrame(unsigned StackReg, unsigned StackSize, unsigned ReturnReg) override
virtual void emitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI)
Emit the given Instruction into the current section.
void emitDirectiveModuleGINV() override
initializer< Ty > init(const Ty &Val)
LLVM_NODISCARD std::string lower() const
virtual void emitDirectiveNaN2008()
void emitDirectiveCpreturn(unsigned SaveLocation, bool SaveLocationIsRegister) override
void emitDirectiveSetVirt() override
void setELFHeaderEFlags(unsigned Flags)
virtual void emitDirectiveSetMips64R5()
void emitDirectiveCpAdd(unsigned RegNo) override
void pushSection()
Save the current and previous section on the section stack.
void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff) override
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.
static const MCBinaryExpr * createSub(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
void emitRRX(unsigned Opcode, unsigned Reg0, unsigned Reg1, MCOperand Op2, SMLoc IDLoc, const MCSubtargetInfo *STI)
void emitDirectiveSetMips64() override
void emitDirectiveSetNoCRC() override
void emitDirectiveModuleSoftFloat() override
virtual void emitDirectiveSetFp(MipsABIFlagsSection::FpABIKind Value)
virtual void emitDirectiveSetMips0()
virtual void emitDirectiveAbiCalls()
virtual void emitDirectiveNaNLegacy()
void emitRI(unsigned Opcode, unsigned Reg0, int32_t Imm, SMLoc IDLoc, const MCSubtargetInfo *STI)
void emitDirectiveSetAtWithArg(unsigned RegNo) override
Represent a reference to a symbol from inside an expression.
void emitDirectiveModuleNoVirt() override
static bool hasShortDelaySlot(MCInst &Inst)
MCAssembler & getAssembler()
void emitDirectiveSetGINV() override
void emitDirectiveOptionPic2() override
unsigned getAlignment() const
StringRef - Represent a constant reference to a string, i.e.
void emitDirectiveSetMips32R6() override
void setUsesMicroMips() override
static MCOperand createReg(unsigned Reg)
void emitDirectiveOptionPic2() override
static bool isMips32r6(const MCSubtargetInfo *STI)
void emitDirectiveModuleOddSPReg() override
void emitDirectiveAbiCalls() override
Instances of this class represent a uniqued identifier for a section in the current translation unit.
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
virtual void emitDirectiveSetMips2()
virtual void emitDirectiveModuleOddSPReg()
virtual void emitDirectiveCpAdd(unsigned RegNo)
virtual void emitDirectiveSetNoMsa()
virtual void emitDirectiveSetNoGINV()
void emitDirectiveSetOddSPReg() override
MCRegisterInfo base class - We assume that the target defines a static array of MCRegisterDesc object...
void emitDirectiveEnd(StringRef Name) override
static const MipsMCExpr * create(MipsExprKind Kind, const MCExpr *Expr, MCContext &Ctx)
void emitDirectiveSetMips32R2() override
virtual void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff)
void setAlignment(Align Value)
constexpr bool isInt< 16 >(int64_t x)
virtual void emitDirectiveSetCRC()
void emitDirectiveSetNoMips3D() override
void emitDirectiveSetMacro() override
void emitDirectiveSetNoAt() override
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
void emitDirectiveCpLocal(unsigned RegNo) override
virtual void emitDirectiveSetMicroMips()
void emitRRR(unsigned Opcode, unsigned Reg0, unsigned Reg1, unsigned Reg2, SMLoc IDLoc, const MCSubtargetInfo *STI)
void emitAssignment(MCSymbol *Symbol, const MCExpr *Value) override
void forbidModuleDirective()
virtual void emitDirectiveCpLocal(unsigned RegNo)
void emitDirectiveSetPush() override
virtual void emitDirectiveSetMips1()
void emitRRIII(unsigned Opcode, unsigned Reg0, unsigned Reg1, int16_t Imm0, int16_t Imm1, int16_t Imm2, SMLoc IDLoc, const MCSubtargetInfo *STI)
virtual void emitDirectiveSetHardFloat()
virtual void emitDirectiveSetMips32R6()
virtual void emitDirectiveCpreturn(unsigned SaveLocation, bool SaveLocationIsRegister)
virtual void setUsesMicroMips()
void emitDirectiveSetSoftFloat() override
MCSection * getBSSSection() const
void EmitMipsOptionRecords()
Emits all the option records stored up until the point it's called.
virtual void emitDirectiveSetMips4()
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx)
void emitDirectiveEnt(const MCSymbol &Symbol) override
void emitNop(SMLoc IDLoc, const MCSubtargetInfo *STI)
void emitDirectiveCpLoad(unsigned RegNo) override
void emitDirectiveSetNoReorder() override
void emitDirectiveSetMips64R2() override
bool registerSection(MCSection &Section)
void emitDirectiveCpreturn(unsigned SaveLocation, bool SaveLocationIsRegister) override
void emitDirectiveSetMips32() override
llvm::Optional< MipsABIInfo > ABI
void emitR(unsigned Opcode, unsigned Reg0, SMLoc IDLoc, const MCSubtargetInfo *STI)
void emitDirectiveInsn() override
void emitDirectiveSetNoMips16() override
void emitDirectiveSetMips3D() override
void emitDirectiveSetNoMacro() override
virtual void emitCodeAlignment(unsigned ByteAlignment, const MCSubtargetInfo *STI, unsigned MaxBytesToEmit=0)
Emit nops until the byte alignment ByteAlignment is reached.
void emitDirectiveSetDspr2() override
void emitDirectiveCpsetup(unsigned RegNo, int RegOrOffset, const MCSymbol &Sym, bool IsReg) override
void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff) override
@ SymbolRef
References to labels and assigned expressions.
virtual void emitDirectiveSetPop()
virtual void emitDirectiveEnd(StringRef Name)
void emitDirectiveSetHardFloat() override
virtual void emitDirectiveModuleHardFloat()
MipsABIFlagsSection ABIFlagsSection
void emitDirectiveOptionPic0() override
static const MipsMCExpr * createGpOff(MipsExprKind Kind, const MCExpr *Expr, MCContext &Ctx)
virtual void emitValueToAlignment(unsigned ByteAlignment, int64_t Value=0, unsigned ValueSize=1, unsigned MaxBytesToEmit=0)
Emit some number of copies of Value until the byte alignment ByteAlignment is reached.
void emitDirectiveSetMips4() override
virtual void emitDirectiveSetDsp()
void emitDirectiveSetNoOddSPReg() override
void emitDirectiveModuleCRC() override
virtual void emitDirectiveSetMsa()
const MipsABIInfo & getABI() const
void emitDirectiveSetMips64R6() override
void emitDirectiveSetMips3() override
void emitDirectiveSetMicroMips() override
Instances of this class represent operands of the MCInst class.
void emitDirectiveInsn() override
virtual void emitDirectiveSetReorder()
MCELFStreamer & getStreamer()
virtual void emitDirectiveSetSoftFloat()
virtual void emitDirectiveSetMips32R2()
void emitDirectiveSetMips1() override
virtual void emitDirectiveSetMips32()
void emitDirectiveModuleMT() override
virtual void emitDirectiveSetNoMicroMips()
Generic base class for all target subtargets.
virtual void emitDirectiveSetPush()
LLVM Value Representation.
Base class for the full range of assembler expressions which are needed for parsing.
void emitDirectiveSetMips2() override
virtual void emitDirectiveSetMips64R2()
void emitDirectiveNaN2008() override
void emitDirectiveSetNoDsp() override
void emitDirectiveNaNLegacy() override
virtual void emitDirectiveSetAtWithArg(unsigned RegNo)
raw_ostream & write_hex(unsigned long long N)
Output N in hexadecimal, without any prefix or padding.
void emitFrame(unsigned StackReg, unsigned StackSize, unsigned ReturnReg) override