34 "riscv-abi-attributes",
35 cl::desc(
"Enable emitting RISC-V ELF attributes for ABI features"),
70 HasRVC = STI.
hasFeature(RISCV::FeatureStdExtZca);
71 HasTSO = STI.
hasFeature(RISCV::FeatureStdExtZtso);
75 bool EmitStackAlign) {
97 unsigned AtomicABITag;
98 if (STI.
hasFeature(RISCV::FeatureStdExtZalasr))
100 else if (STI.
hasFeature(RISCV::FeatureNoTrailingSeqCstFence))
114 OS <<
"\t.option\tpush\n";
118 OS <<
"\t.option\tpop\n";
122 OS <<
"\t.option\tpic\n";
126 OS <<
"\t.option\tnopic\n";
130 OS <<
"\t.option\trvc\n";
134 OS <<
"\t.option\tnorvc\n";
138 OS <<
"\t.option\texact\n";
142 OS <<
"\t.option\tnoexact\n";
146 OS <<
"\t.option\trelax\n";
150 OS <<
"\t.option\tnorelax\n";
155 OS <<
"\t.option\tarch";
156 for (
const auto &Arg : Args) {
174 OS <<
"\t.variant_cc\t" << Symbol.getName() <<
"\n";
177void RISCVTargetAsmStreamer::emitAttribute(
unsigned Attribute,
unsigned Value) {
181void RISCVTargetAsmStreamer::emitTextAttribute(
unsigned Attribute,
186void RISCVTargetAsmStreamer::emitIntTextAttribute(
unsigned Attribute,
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static cl::opt< bool > RiscvAbiAttr("riscv-abi-attributes", cl::desc("Enable emitting RISC-V ELF attributes for ABI features"), cl::Hidden)
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Functions, function parameters, and return types can have attributes to indicate how they should be t...
Streaming machine code generation interface.
Generic base class for all target subtargets.
bool hasFeature(unsigned Feature) const
const FeatureBitset & getFeatureBits() const
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
MCTargetStreamer(MCStreamer &S)
This class represents success/failure for parsing-like operations that find it important to chain tog...
void emitDirectiveOptionPIC() override
void emitDirectiveOptionExact() override
void emitDirectiveOptionArch(ArrayRef< RISCVOptionArchArg > Args) override
void emitDirectiveOptionRelax() override
RISCVTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS)
void emitDirectiveOptionNoRVC() override
void emitDirectiveOptionNoPIC() override
void emitDirectiveOptionPop() override
void emitDirectiveOptionNoRelax() override
void emitDirectiveOptionRVC() override
void emitDirectiveVariantCC(MCSymbol &Symbol) override
void emitDirectiveOptionNoExact() override
void emitDirectiveOptionPush() override
virtual void emitDirectiveOptionPIC()
virtual void emitDirectiveOptionNoRelax()
virtual void emitAttribute(unsigned Attribute, unsigned Value)
virtual void emitTextAttribute(unsigned Attribute, StringRef String)
virtual void emitDirectiveVariantCC(MCSymbol &Symbol)
void emitTargetAttributes(const MCSubtargetInfo &STI, bool EmitStackAlign)
void setFlagsFromFeatures(const MCSubtargetInfo &STI)
virtual void emitIntTextAttribute(unsigned Attribute, unsigned IntValue, StringRef StringValue)
virtual void emitDirectiveOptionExact()
virtual void emitDirectiveOptionNoExact()
virtual void emitDirectiveOptionPop()
virtual void emitDirectiveOptionNoPIC()
void setTargetABI(RISCVABI::ABI ABI)
RISCVTargetStreamer(MCStreamer &S)
virtual void emitDirectiveOptionArch(ArrayRef< RISCVOptionArchArg > Args)
virtual void finishAttributeSection()
virtual void emitDirectiveOptionPush()
virtual void emitDirectiveOptionRelax()
virtual void emitDirectiveOptionNoRVC()
virtual void emitDirectiveOptionRVC()
StringRef - Represent a constant reference to a string, i.e.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
LLVM Value Representation.
llvm::Expected< std::unique_ptr< RISCVISAInfo > > parseFeatureBits(bool IsRV64, const FeatureBitset &FeatureBits)
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI void report_fatal_error(Error Err, bool gen_crash_diag=true)