LLVM: lib/Target/RISCV/MCTargetDesc/RISCVTargetStreamer.cpp Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

28

29using namespace llvm;

30

31

32

34 "riscv-abi-attributes",

35 cl::desc("Enable emitting RISC-V ELF attributes for ABI features"),

37

39

42

63

68

73 NoteAlign = Align(8);

74 DescSize = 16;

75 } else {

77 NoteAlign = Align(4);

78 DescSize = 12;

79 }

80

86

87

90 OutStreamer.emitIntValue(DescSize, 4);

93

94

95

96

99 OutStreamer.emitIntValue(Feature1And, 4);

101

103}

104

107 TargetABI = ABI;

108}

109

111 HasRVC = STI.hasFeature(RISCV::FeatureStdExtZca);

112 HasTSO = STI.hasFeature(RISCV::FeatureStdExtZtso);

113}

114

116 bool EmitStackAlign) {

117 if (EmitStackAlign) {

118 unsigned StackAlign;

120 StackAlign = 4;

122 StackAlign = 8;

123 else

124 StackAlign = 16;

126 }

127

132 } else {

135 }

136

138 unsigned AtomicABITag;

139 if (STI.hasFeature(RISCV::FeatureStdExtZalasr))

141 else if (STI.hasFeature(RISCV::FeatureNoTrailingSeqCstFence))

143 else

146 }

147}

148

149

153

155 OS << "\t.option\tpush\n";

156}

157

159 OS << "\t.option\tpop\n";

160}

161

163 OS << "\t.option\tpic\n";

164}

165

167 OS << "\t.option\tnopic\n";

168}

169

171 OS << "\t.option\trvc\n";

172}

173

175 OS << "\t.option\tnorvc\n";

176}

177

179 OS << "\t.option\texact\n";

180}

181

183 OS << "\t.option\tnoexact\n";

184}

185

187 OS << "\t.option\trelax\n";

188}

189

191 OS << "\t.option\tnorelax\n";

192}

193

196 OS << "\t.option\tarch";

197 for (const auto &Arg : Args) {

198 OS << ", ";

199 switch (Arg.Type) {

201 break;

203 OS << "+";

204 break;

206 OS << "-";

207 break;

208 }

209 OS << Arg.Value;

210 }

211 OS << "\n";

212}

213

215 OS << "\t.variant_cc\t" << Symbol.getName() << "\n";

216}

217

218void RISCVTargetAsmStreamer::emitAttribute(unsigned Attribute, unsigned Value) {

220}

221

222void RISCVTargetAsmStreamer::emitTextAttribute(unsigned Attribute,

224 OS << "\t.attribute\t" << Attribute << ", \"" << String << "\"\n";

225}

226

227void RISCVTargetAsmStreamer::emitIntTextAttribute(unsigned Attribute,

228 unsigned IntValue,

230

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...

Context object for machine code objects.

Instances of this class represent a uniqued identifier for a section in the current translation unit.

Streaming machine code generation interface.

virtual bool popSection()

Restore the current and previous section from the section stack.

MCContext & getContext() const

virtual void emitValueToAlignment(Align Alignment, int64_t Fill=0, uint8_t FillLen=1, unsigned MaxBytesToEmit=0)

Emit some number of copies of Value until the byte alignment ByteAlignment is reached.

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.

void pushSection()

Save the current and previous section on the section stack.

virtual void switchSection(MCSection *Section, uint32_t Subsec=0)

Set the current section where code is being emitted to Section.

virtual void emitBytes(StringRef Data)

Emit the bytes in Data into the output.

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 ...

MCStreamer & getStreamer()

MCTargetStreamer(MCStreamer &S)

This class represents success/failure for parsing-like operations that find it important to chain tog...

void emitDirectiveOptionPIC() override

Definition RISCVTargetStreamer.cpp:162

void emitDirectiveOptionExact() override

Definition RISCVTargetStreamer.cpp:178

void emitDirectiveOptionArch(ArrayRef< RISCVOptionArchArg > Args) override

Definition RISCVTargetStreamer.cpp:194

void emitDirectiveOptionRelax() override

Definition RISCVTargetStreamer.cpp:186

RISCVTargetAsmStreamer(MCStreamer &S, formatted_raw_ostream &OS)

Definition RISCVTargetStreamer.cpp:150

void emitDirectiveOptionNoRVC() override

Definition RISCVTargetStreamer.cpp:174

void emitDirectiveOptionNoPIC() override

Definition RISCVTargetStreamer.cpp:166

void emitDirectiveOptionPop() override

Definition RISCVTargetStreamer.cpp:158

void emitDirectiveOptionNoRelax() override

Definition RISCVTargetStreamer.cpp:190

void emitDirectiveOptionRVC() override

Definition RISCVTargetStreamer.cpp:170

void emitDirectiveVariantCC(MCSymbol &Symbol) override

Definition RISCVTargetStreamer.cpp:214

void emitDirectiveOptionNoExact() override

Definition RISCVTargetStreamer.cpp:182

void emitDirectiveOptionPush() override

Definition RISCVTargetStreamer.cpp:154

void emitNoteGnuPropertySection(const uint32_t Feature1And)

Definition RISCVTargetStreamer.cpp:64

virtual void emitDirectiveOptionPIC()

Definition RISCVTargetStreamer.cpp:47

virtual void emitDirectiveOptionNoRelax()

Definition RISCVTargetStreamer.cpp:52

virtual void emitAttribute(unsigned Attribute, unsigned Value)

Definition RISCVTargetStreamer.cpp:56

virtual void emitTextAttribute(unsigned Attribute, StringRef String)

Definition RISCVTargetStreamer.cpp:58

virtual void emitDirectiveVariantCC(MCSymbol &Symbol)

Definition RISCVTargetStreamer.cpp:55

void emitTargetAttributes(const MCSubtargetInfo &STI, bool EmitStackAlign)

Definition RISCVTargetStreamer.cpp:115

void setFlagsFromFeatures(const MCSubtargetInfo &STI)

Definition RISCVTargetStreamer.cpp:110

virtual void emitIntTextAttribute(unsigned Attribute, unsigned IntValue, StringRef StringValue)

Definition RISCVTargetStreamer.cpp:60

virtual void emitDirectiveOptionExact()

Definition RISCVTargetStreamer.cpp:45

virtual void emitDirectiveOptionNoExact()

Definition RISCVTargetStreamer.cpp:46

virtual void emitDirectiveOptionPop()

Definition RISCVTargetStreamer.cpp:49

virtual void emitDirectiveOptionNoPIC()

Definition RISCVTargetStreamer.cpp:48

void setTargetABI(RISCVABI::ABI ABI)

Definition RISCVTargetStreamer.cpp:105

RISCVTargetStreamer(MCStreamer &S)

Definition RISCVTargetStreamer.cpp:38

virtual void emitDirectiveOptionArch(ArrayRef< RISCVOptionArchArg > Args)

Definition RISCVTargetStreamer.cpp:43

virtual void reset()

Definition RISCVTargetStreamer.cpp:41

virtual void finishAttributeSection()

Definition RISCVTargetStreamer.cpp:57

virtual void emitDirectiveOptionPush()

Definition RISCVTargetStreamer.cpp:50

void finish() override

Definition RISCVTargetStreamer.cpp:40

virtual void emitDirectiveOptionRelax()

Definition RISCVTargetStreamer.cpp:51

virtual void emitDirectiveOptionNoRVC()

Definition RISCVTargetStreamer.cpp:54

virtual void emitDirectiveOptionRVC()

Definition RISCVTargetStreamer.cpp:53

StringRef - Represent a constant reference to a string, i.e.

Triple - Helper class for working with autoconf configuration names.

LLVM_ABI bool isArch64Bit() const

Test whether the architecture is 64-bit.

LLVM_ABI bool isArch32Bit() const

Test whether the architecture is 32-bit.

Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...

LLVM Value Representation.

formatted_raw_ostream - A raw_ostream that wraps another one and keeps track of line and column posit...

@ GNU_PROPERTY_RISCV_FEATURE_1_AND

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)

This struct is a compact representation of a valid (non-zero power of two) alignment.