39 MAB.getTargetOptions().getABIName()));
63void RISCVTargetELFStreamer::emitAttribute(
unsigned Attribute,
unsigned Value) {
67void RISCVTargetELFStreamer::emitTextAttribute(
unsigned Attribute,
72void RISCVTargetELFStreamer::emitIntTextAttribute(
unsigned Attribute,
79void RISCVTargetELFStreamer::finishAttributeSection() {
93 unsigned EFlags = W.getELFHeaderEFlags();
120 W.setELFHeaderEFlags(EFlags);
123void RISCVTargetELFStreamer::reset() {
124 AttributeSection =
nullptr;
132void RISCVELFStreamer::reset() {
135 LastMappingSymbols.clear();
139void RISCVELFStreamer::emitDataMappingSymbol() {
140 if (LastEMS == EMS_Data)
142 emitMappingSymbol(
"$d");
146void RISCVELFStreamer::emitInstructionsMappingSymbol() {
147 if (LastEMS == EMS_Instructions)
149 emitMappingSymbol(
"$x");
150 LastEMS = EMS_Instructions;
154 auto *
Symbol = cast<MCSymbolELF>(getContext().createLocalSymbol(
Name));
164 LastMappingSymbols[getPreviousSection().first] = LastEMS;
165 LastEMS = LastMappingSymbols.lookup(Section);
172 emitInstructionsMappingSymbol();
177 emitDataMappingSymbol();
183 emitDataMappingSymbol();
189 emitDataMappingSymbol();
195 std::unique_ptr<MCAsmBackend> MAB,
196 std::unique_ptr<MCObjectWriter> MOW,
197 std::unique_ptr<MCCodeEmitter> MCE) {
void changeSection(MCSection *Section, uint32_t Subsection) override
This is called by popSection and switchSection, if the current section changes.
void emitBytes(StringRef Data) override
Emit the bytes in Data into the output.
void emitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) override
Emit the given Instruction into the current section.
void emitFill(const MCExpr &NumBytes, uint64_t FillValue, SMLoc Loc) override
Emit Size bytes worth of the value specified by FillValue.
void emitValueImpl(const MCExpr *Value, unsigned Size, SMLoc Loc) override
Emit the expression Value into the output as a native integer of the given Size bytes.
Container class for subtarget features.
MCAsmBackend & getBackend() const
bool registerSymbol(const MCSymbol &Symbol)
Context object for machine code objects.
SmallVector< AttributeItem, 64 > Contents
void emitAttributesSection(StringRef Vendor, const Twine &Section, unsigned Type, MCSection *&AttributeSection)
void changeSection(MCSection *Section, uint32_t Subsection=0) override
This is called by popSection and switchSection, if the current section changes.
void setAttributeItems(unsigned Attribute, unsigned IntValue, StringRef StringValue, bool OverwriteExisting)
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.
ELFObjectWriter & getWriter()
void setAttributeItem(unsigned Attribute, unsigned Value, bool OverwriteExisting)
void reset() override
state management
Base class for the full range of assembler expressions which are needed for parsing.
Instances of this class represent a single low-level machine instruction.
void emitFill(const MCExpr &NumBytes, uint64_t FillValue, SMLoc Loc=SMLoc()) override
Emit Size bytes worth of the value specified by FillValue.
MCAssembler & getAssembler()
void emitBytes(StringRef Data) override
Emit the bytes in Data into the output.
void emitInstruction(const MCInst &Inst, const MCSubtargetInfo &STI) override
Emit the given Instruction into the current section.
Instances of this class represent a uniqued identifier for a section in the current translation unit.
Streaming machine code generation interface.
Generic base class for all target subtargets.
bool hasFeature(unsigned Feature) const
const Triple & getTargetTriple() const
const FeatureBitset & getFeatureBits() const
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
void emitDirectiveOptionPop() override
void emitDirectiveOptionPush() override
void emitDirectiveOptionNoPIC() override
void emitDirectiveOptionNoRVC() override
RISCVTargetELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI)
void emitDirectiveVariantCC(MCSymbol &Symbol) override
void emitDirectiveOptionRelax() override
RISCVELFStreamer & getStreamer()
void emitDirectiveOptionNoRelax() override
void emitDirectiveOptionPIC() override
void emitDirectiveOptionRVC() override
RISCVABI::ABI getTargetABI() const
void setFlagsFromFeatures(const MCSubtargetInfo &STI)
void setTargetABI(RISCVABI::ABI ABI)
Represents a location in source code.
StringRef - Represent a constant reference to a string, i.e.
LLVM Value Representation.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
@ C
The default llvm calling convention, compatible with C.
@ EF_RISCV_FLOAT_ABI_SINGLE
@ EF_RISCV_FLOAT_ABI_DOUBLE
ABI computeTargetABI(const Triple &TT, const FeatureBitset &FeatureBits, StringRef ABIName)
This is an optimization pass for GlobalISel generic memory operations.
MCELFStreamer * createRISCVELFStreamer(MCContext &C, std::unique_ptr< MCAsmBackend > MAB, std::unique_ptr< MCObjectWriter > MOW, std::unique_ptr< MCCodeEmitter > MCE)