LLVM  16.0.0git
CSKYELFStreamer.cpp
Go to the documentation of this file.
1 //===-- CSKYELFStreamer.cpp - CSKY ELF Target Streamer Methods ------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file provides CSKY specific target streamer methods.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #include "CSKYELFStreamer.h"
14 #include "CSKYMCTargetDesc.h"
17 #include "llvm/BinaryFormat/ELF.h"
18 #include "llvm/MC/MCAssembler.h"
19 #include "llvm/MC/MCContext.h"
20 #include "llvm/MC/MCSectionELF.h"
22 #include "llvm/MC/MCSymbolELF.h"
25 #include "llvm/Support/Casting.h"
26 #include "llvm/Support/LEB128.h"
27 
28 using namespace llvm;
29 
30 // This part is for ELF object output.
32  const MCSubtargetInfo &STI)
33  : CSKYTargetStreamer(S), CurrentVendor("csky") {
35  const FeatureBitset &Features = STI.getFeatureBits();
36 
37  unsigned EFlags = MCA.getELFHeaderEFlags();
38 
39  EFlags |= ELF::EF_CSKY_ABIV2;
40 
41  if (Features[CSKY::ProcCK801])
42  EFlags |= ELF::EF_CSKY_801;
43  else if (Features[CSKY::ProcCK802])
44  EFlags |= ELF::EF_CSKY_802;
45  else if (Features[CSKY::ProcCK803])
46  EFlags |= ELF::EF_CSKY_803;
47  else if (Features[CSKY::ProcCK804])
48  EFlags |= ELF::EF_CSKY_803;
49  else if (Features[CSKY::ProcCK805])
50  EFlags |= ELF::EF_CSKY_805;
51  else if (Features[CSKY::ProcCK807])
52  EFlags |= ELF::EF_CSKY_807;
53  else if (Features[CSKY::ProcCK810])
54  EFlags |= ELF::EF_CSKY_810;
55  else if (Features[CSKY::ProcCK860])
56  EFlags |= ELF::EF_CSKY_860;
57  else
58  EFlags |= ELF::EF_CSKY_810;
59 
60  if (Features[CSKY::FeatureFPUV2_SF] || Features[CSKY::FeatureFPUV3_SF])
61  EFlags |= ELF::EF_CSKY_FLOAT;
62 
63  EFlags |= ELF::EF_CSKY_EFV1;
64 
65  MCA.setELFHeaderEFlags(EFlags);
66 }
67 
69  return static_cast<MCELFStreamer &>(Streamer);
70 }
71 
72 void CSKYTargetELFStreamer::emitAttribute(unsigned Attribute, unsigned Value) {
73  setAttributeItem(Attribute, Value, /*OverwriteExisting=*/true);
74 }
75 
76 void CSKYTargetELFStreamer::emitTextAttribute(unsigned Attribute,
77  StringRef String) {
78  setAttributeItem(Attribute, String, /*OverwriteExisting=*/true);
79 }
80 
81 void CSKYTargetELFStreamer::finishAttributeSection() {
82  if (Contents.empty())
83  return;
84 
85  if (AttributeSection) {
86  Streamer.switchSection(AttributeSection);
87  } else {
89  AttributeSection = MCA.getContext().getELFSection(
90  ".csky.attributes", ELF::SHT_CSKY_ATTRIBUTES, 0);
91  Streamer.switchSection(AttributeSection);
93  }
94 
95  // Vendor size + Vendor name + '\0'
96  const size_t VendorHeaderSize = 4 + CurrentVendor.size() + 1;
97 
98  // Tag + Tag Size
99  const size_t TagHeaderSize = 1 + 4;
100 
101  const size_t ContentsSize = calculateContentSize();
102 
103  Streamer.emitInt32(VendorHeaderSize + TagHeaderSize + ContentsSize);
104  Streamer.emitBytes(CurrentVendor);
105  Streamer.emitInt8(0); // '\0'
106 
108  Streamer.emitInt32(TagHeaderSize + ContentsSize);
109 
110  // Size should have been accounted for already, now
111  // emit each field as its type (ULEB or String).
112  for (AttributeItem item : Contents) {
113  Streamer.emitULEB128IntValue(item.Tag);
114  switch (item.Type) {
115  default:
116  llvm_unreachable("Invalid attribute type");
117  case AttributeType::Numeric:
118  Streamer.emitULEB128IntValue(item.IntValue);
119  break;
120  case AttributeType::Text:
121  Streamer.emitBytes(item.StringValue);
122  Streamer.emitInt8(0); // '\0'
123  break;
124  case AttributeType::NumericAndText:
125  Streamer.emitULEB128IntValue(item.IntValue);
126  Streamer.emitBytes(item.StringValue);
127  Streamer.emitInt8(0); // '\0'
128  break;
129  }
130  }
131 
132  Contents.clear();
133 }
134 
135 size_t CSKYTargetELFStreamer::calculateContentSize() const {
136  size_t Result = 0;
137  for (AttributeItem item : Contents) {
138  switch (item.Type) {
139  case AttributeType::Hidden:
140  break;
141  case AttributeType::Numeric:
142  Result += getULEB128Size(item.Tag);
143  Result += getULEB128Size(item.IntValue);
144  break;
145  case AttributeType::Text:
146  Result += getULEB128Size(item.Tag);
147  Result += item.StringValue.size() + 1; // string + '\0'
148  break;
149  case AttributeType::NumericAndText:
150  Result += getULEB128Size(item.Tag);
151  Result += getULEB128Size(item.IntValue);
152  Result += item.StringValue.size() + 1; // string + '\0';
153  break;
154  }
155  }
156  return Result;
157 }
158 
159 void CSKYELFStreamer::EmitMappingSymbol(StringRef Name) {
160  if (Name == "$d" && State == EMS_Data)
161  return;
162  if (Name == "$t" && State == EMS_Text)
163  return;
164  if (Name == "$t" && State == EMS_None) {
165  State = EMS_Text;
166  return;
167  }
168 
169  State = (Name == "$t" ? EMS_Text : EMS_Data);
170 
171  auto *Symbol = cast<MCSymbolELF>(getContext().getOrCreateSymbol(
172  Name + "." + Twine(MappingSymbolCounter++)));
173  emitLabel(Symbol);
174 
175  Symbol->setType(ELF::STT_NOTYPE);
176  Symbol->setBinding(ELF::STB_LOCAL);
177 }
178 
179 void CSKYTargetELFStreamer::emitTargetAttributes(const MCSubtargetInfo &STI) {
180  StringRef CPU = STI.getCPU();
181  CSKY::ArchKind ArchID = CSKY::parseCPUArch(CPU);
182 
183  if (ArchID == CSKY::ArchKind::CK804)
184  ArchID = CSKY::ArchKind::CK803;
185 
186  StringRef CPU_ARCH = CSKY::getArchName(ArchID);
187 
188  if (ArchID == CSKY::ArchKind::INVALID) {
189  CPU = "ck810";
190  CPU_ARCH = "ck810";
191  }
192  emitTextAttribute(CSKYAttrs::CSKY_ARCH_NAME, CPU_ARCH);
193  emitTextAttribute(CSKYAttrs::CSKY_CPU_NAME, CPU);
194 
195  unsigned ISAFlag = 0;
196  if (STI.hasFeature(CSKY::HasE1))
197  ISAFlag |= CSKYAttrs::V2_ISA_E1;
198 
199  if (STI.hasFeature(CSKY::HasE2))
200  ISAFlag |= CSKYAttrs::V2_ISA_1E2;
201 
202  if (STI.hasFeature(CSKY::Has2E3))
203  ISAFlag |= CSKYAttrs::V2_ISA_2E3;
204 
205  if (STI.hasFeature(CSKY::HasMP))
206  ISAFlag |= CSKYAttrs::ISA_MP;
207 
208  if (STI.hasFeature(CSKY::Has3E3r1))
209  ISAFlag |= CSKYAttrs::V2_ISA_3E3R1;
210 
211  if (STI.hasFeature(CSKY::Has3r1E3r2))
212  ISAFlag |= CSKYAttrs::V2_ISA_3E3R2;
213 
214  if (STI.hasFeature(CSKY::Has3r2E3r3))
215  ISAFlag |= CSKYAttrs::V2_ISA_3E3R3;
216 
217  if (STI.hasFeature(CSKY::Has3E7))
218  ISAFlag |= CSKYAttrs::V2_ISA_3E7;
219 
220  if (STI.hasFeature(CSKY::HasMP1E2))
221  ISAFlag |= CSKYAttrs::ISA_MP_1E2;
222 
223  if (STI.hasFeature(CSKY::Has7E10))
224  ISAFlag |= CSKYAttrs::V2_ISA_7E10;
225 
226  if (STI.hasFeature(CSKY::Has10E60))
227  ISAFlag |= CSKYAttrs::V2_ISA_10E60;
228 
229  if (STI.hasFeature(CSKY::FeatureTrust))
230  ISAFlag |= CSKYAttrs::ISA_TRUST;
231 
232  if (STI.hasFeature(CSKY::FeatureJAVA))
233  ISAFlag |= CSKYAttrs::ISA_JAVA;
234 
235  if (STI.hasFeature(CSKY::FeatureCache))
236  ISAFlag |= CSKYAttrs::ISA_CACHE;
237 
238  if (STI.hasFeature(CSKY::FeatureNVIC))
239  ISAFlag |= CSKYAttrs::ISA_NVIC;
240 
241  if (STI.hasFeature(CSKY::FeatureDSP))
242  ISAFlag |= CSKYAttrs::ISA_DSP;
243 
244  if (STI.hasFeature(CSKY::HasDSP1E2))
245  ISAFlag |= CSKYAttrs::ISA_DSP_1E2;
246 
247  if (STI.hasFeature(CSKY::HasDSPE60))
248  ISAFlag |= CSKYAttrs::V2_ISA_DSPE60;
249 
250  if (STI.hasFeature(CSKY::FeatureDSPV2))
251  ISAFlag |= CSKYAttrs::ISA_DSP_ENHANCE;
252 
253  if (STI.hasFeature(CSKY::FeatureDSP_Silan))
254  ISAFlag |= CSKYAttrs::ISA_DSP_SILAN;
255 
256  if (STI.hasFeature(CSKY::FeatureVDSPV1_128))
257  ISAFlag |= CSKYAttrs::ISA_VDSP;
258 
259  if (STI.hasFeature(CSKY::FeatureVDSPV2))
260  ISAFlag |= CSKYAttrs::ISA_VDSP_2;
261 
262  if (STI.hasFeature(CSKY::HasVDSP2E3))
263  ISAFlag |= CSKYAttrs::ISA_VDSP_2E3;
264 
265  if (STI.hasFeature(CSKY::HasVDSP2E60F))
266  ISAFlag |= CSKYAttrs::ISA_VDSP_2E60F;
267 
268  emitAttribute(CSKYAttrs::CSKY_ISA_FLAGS, ISAFlag);
269 
270  unsigned ISAExtFlag = 0;
271  if (STI.hasFeature(CSKY::HasFLOATE1))
272  ISAExtFlag |= CSKYAttrs::ISA_FLOAT_E1;
273 
274  if (STI.hasFeature(CSKY::HasFLOAT1E2))
275  ISAExtFlag |= CSKYAttrs::ISA_FLOAT_1E2;
276 
277  if (STI.hasFeature(CSKY::HasFLOAT1E3))
278  ISAExtFlag |= CSKYAttrs::ISA_FLOAT_1E3;
279 
280  if (STI.hasFeature(CSKY::HasFLOAT3E4))
281  ISAExtFlag |= CSKYAttrs::ISA_FLOAT_3E4;
282 
283  if (STI.hasFeature(CSKY::HasFLOAT7E60))
284  ISAExtFlag |= CSKYAttrs::ISA_FLOAT_7E60;
285 
286  emitAttribute(CSKYAttrs::CSKY_ISA_EXT_FLAGS, ISAExtFlag);
287 
288  if (STI.hasFeature(CSKY::FeatureDSP))
289  emitAttribute(CSKYAttrs::CSKY_DSP_VERSION,
291  if (STI.hasFeature(CSKY::FeatureDSPV2))
293 
294  if (STI.hasFeature(CSKY::FeatureVDSPV2))
296 
297  if (STI.hasFeature(CSKY::FeatureFPUV2_SF) ||
298  STI.hasFeature(CSKY::FeatureFPUV2_DF))
300  else if (STI.hasFeature(CSKY::FeatureFPUV3_HF) ||
301  STI.hasFeature(CSKY::FeatureFPUV3_SF) ||
302  STI.hasFeature(CSKY::FeatureFPUV3_DF))
304 
305  bool hasAnyFloatExt = STI.hasFeature(CSKY::FeatureFPUV2_SF) ||
306  STI.hasFeature(CSKY::FeatureFPUV2_DF) ||
307  STI.hasFeature(CSKY::FeatureFPUV3_HF) ||
308  STI.hasFeature(CSKY::FeatureFPUV3_SF) ||
309  STI.hasFeature(CSKY::FeatureFPUV3_DF);
310 
311  if (hasAnyFloatExt && STI.hasFeature(CSKY::ModeHardFloat) &&
312  STI.hasFeature(CSKY::ModeHardFloatABI))
314  else if (hasAnyFloatExt && STI.hasFeature(CSKY::ModeHardFloat))
316  else
318 
319  unsigned HardFPFlag = 0;
320  if (STI.hasFeature(CSKY::FeatureFPUV3_HF))
321  HardFPFlag |= CSKYAttrs::FPU_HARDFP_HALF;
322  if (STI.hasFeature(CSKY::FeatureFPUV2_SF) ||
323  STI.hasFeature(CSKY::FeatureFPUV3_SF))
324  HardFPFlag |= CSKYAttrs::FPU_HARDFP_SINGLE;
325  if (STI.hasFeature(CSKY::FeatureFPUV2_DF) ||
326  STI.hasFeature(CSKY::FeatureFPUV3_DF))
327  HardFPFlag |= CSKYAttrs::FPU_HARDFP_DOUBLE;
328 
329  if (HardFPFlag != 0) {
332  emitTextAttribute(CSKYAttrs::CSKY_FPU_NUMBER_MODULE, "IEEE 754");
333  emitAttribute(CSKYAttrs::CSKY_FPU_HARDFP, HardFPFlag);
334  }
335 }
llvm::CSKYAttrs::FPU_ABI_SOFTFP
@ FPU_ABI_SOFTFP
Definition: CSKYAttributes.h:84
llvm::MCAssembler::getELFHeaderEFlags
unsigned getELFHeaderEFlags() const
ELF e_header flags.
Definition: MCAssembler.h:276
llvm::CSKYAttrs::V2_ISA_7E10
@ V2_ISA_7E10
Definition: CSKYAttributes.h:43
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
llvm::CSKYELFStreamer::EMS_None
@ EMS_None
Definition: CSKYELFStreamer.h:109
llvm::CSKYAttrs::FPU_HARDFP_DOUBLE
@ FPU_HARDFP_DOUBLE
Definition: CSKYAttributes.h:89
llvm::CSKYAttrs::CSKY_FPU_NUMBER_MODULE
@ CSKY_FPU_NUMBER_MODULE
Definition: CSKYAttributes.h:34
llvm::MCELFStreamer::emitLabel
void emitLabel(MCSymbol *Symbol, SMLoc Loc=SMLoc()) override
Emit a label for Symbol into the current section.
Definition: MCELFStreamer.cpp:101
llvm::CSKYAttrs::ISA_FLOAT_1E3
@ ISA_FLOAT_1E3
Definition: CSKYAttributes.h:71
llvm::CSKYAttrs::FPU_ABI_HARD
@ FPU_ABI_HARD
Definition: CSKYAttributes.h:84
CSKYBaseInfo.h
llvm::CSKYAttrs::ISA_MP_1E2
@ ISA_MP_1E2
Definition: CSKYAttributes.h:53
llvm::Attribute
Definition: Attributes.h:66
MCSectionELF.h
llvm::MCStreamer::emitInt8
void emitInt8(uint64_t Value)
Definition: MCStreamer.h:745
llvm::CSKYAttrs::DSP_VERSION_2
@ DSP_VERSION_2
Definition: CSKYAttributes.h:78
llvm::CSKY::parseCPUArch
ArchKind parseCPUArch(StringRef CPU)
Definition: CSKYTargetParser.cpp:100
llvm::ELF::EF_CSKY_810
@ EF_CSKY_810
Definition: ELF.h:894
llvm::CSKY::getArchName
StringRef getArchName(ArchKind AK)
Definition: CSKYTargetParser.cpp:75
llvm::CSKY::ArchKind
ArchKind
Definition: CSKYTargetParser.h:110
MCAssembler.h
llvm::ELF::STT_NOTYPE
@ STT_NOTYPE
Definition: ELF.h:1229
llvm::ELF::EF_CSKY_EFV1
@ EF_CSKY_EFV1
Definition: ELF.h:900
llvm::getULEB128Size
unsigned getULEB128Size(uint64_t Value)
Utility function to get the size of the ULEB128-encoded value.
Definition: LEB128.cpp:19
llvm::MCStreamer::emitInt32
void emitInt32(uint64_t Value)
Definition: MCStreamer.h:747
llvm::CSKYAttrs::FPU_HARDFP_SINGLE
@ FPU_HARDFP_SINGLE
Definition: CSKYAttributes.h:88
llvm::FeatureBitset
Container class for subtarget features.
Definition: SubtargetFeature.h:40
llvm::CSKYAttrs::V2_ISA_2E3
@ V2_ISA_2E3
Definition: CSKYAttributes.h:41
llvm::CSKYAttrs::CSKY_ISA_EXT_FLAGS
@ CSKY_ISA_EXT_FLAGS
Definition: CSKYAttributes.h:26
llvm::CSKYAttrs::ISA_FLOAT_1E2
@ ISA_FLOAT_1E2
Definition: CSKYAttributes.h:70
llvm::CSKYAttrs::V2_ISA_1E2
@ V2_ISA_1E2
Definition: CSKYAttributes.h:40
llvm::MCStreamer
Streaming machine code generation interface.
Definition: MCStreamer.h:212
llvm::CSKYAttrs::V2_ISA_10E60
@ V2_ISA_10E60
Definition: CSKYAttributes.h:46
ELF.h
llvm::MCELFStreamer
Definition: MCELFStreamer.h:31
llvm::CSKYAttrs::FPU_VERSION_2
@ FPU_VERSION_2
Definition: CSKYAttributes.h:82
llvm::CSKYTargetELFStreamer::getStreamer
MCELFStreamer & getStreamer()
Definition: CSKYELFStreamer.cpp:68
llvm::CSKYAttrs::V2_ISA_3E3R3
@ V2_ISA_3E3R3
Definition: CSKYAttributes.h:47
llvm::MCSubtargetInfo::hasFeature
bool hasFeature(unsigned Feature) const
Definition: MCSubtargetInfo.h:119
llvm::MCAssembler::getContext
MCContext & getContext() const
Definition: MCAssembler.h:321
CSKYAsmBackend.h
MCSymbolELF.h
MCContext.h
llvm::CSKYAttrs::FPU_VERSION_3
@ FPU_VERSION_3
Definition: CSKYAttributes.h:82
llvm::MCStreamer::switchSection
virtual void switchSection(MCSection *Section, const MCExpr *Subsection=nullptr)
Set the current section where code is being emitted to Section.
Definition: MCStreamer.cpp:1234
CSKYTargetParser.h
llvm::CSKYAttrs::ISA_VDSP_2
@ ISA_VDSP_2
Definition: CSKYAttributes.h:62
llvm::ms_demangle::QualifierMangleMode::Result
@ Result
llvm::MCContext::getELFSection
MCSectionELF * getELFSection(const Twine &Section, unsigned Type, unsigned Flags)
Definition: MCContext.h:564
MCSubtargetInfo.h
llvm::MCSubtargetInfo::getFeatureBits
const FeatureBitset & getFeatureBits() const
Definition: MCSubtargetInfo.h:112
llvm::CSKYAttrs::V2_ISA_E1
@ V2_ISA_E1
Definition: CSKYAttributes.h:39
llvm::CSKYAttrs::ISA_FLOAT_7E60
@ ISA_FLOAT_7E60
Definition: CSKYAttributes.h:73
llvm::CSKYTargetStreamer
Definition: CSKYTargetStreamer.h:45
llvm::CSKYAttrs::V2_ISA_DSPE60
@ V2_ISA_DSPE60
Definition: CSKYAttributes.h:64
llvm::CSKYAttrs::CSKY_ISA_FLAGS
@ CSKY_ISA_FLAGS
Definition: CSKYAttributes.h:25
llvm::ELFAttrs::Format_Version
@ Format_Version
Definition: ELFAttributes.h:33
llvm::CSKYAttrs::CSKY_CPU_NAME
@ CSKY_CPU_NAME
Definition: CSKYAttributes.h:24
llvm::ELF::EF_CSKY_860
@ EF_CSKY_860
Definition: ELF.h:895
llvm::CSKYAttrs::ISA_CACHE
@ ISA_CACHE
Definition: CSKYAttributes.h:49
llvm::MCAssembler
Definition: MCAssembler.h:73
llvm::ELF::EF_CSKY_803
@ EF_CSKY_803
Definition: ELF.h:891
llvm::CSKYAttrs::CSKY_DSP_VERSION
@ CSKY_DSP_VERSION
Definition: CSKYAttributes.h:27
llvm::MCTargetStreamer::Streamer
MCStreamer & Streamer
Definition: MCStreamer.h:95
llvm::CSKYAttrs::DSP_VERSION_EXTENSION
@ DSP_VERSION_EXTENSION
Definition: CSKYAttributes.h:78
LEB128.h
llvm::MCSubtargetInfo::getCPU
StringRef getCPU() const
Definition: MCSubtargetInfo.h:109
llvm::CSKYAttrs::ISA_VDSP_2E3
@ ISA_VDSP_2E3
Definition: CSKYAttributes.h:63
llvm::CSKYAttrs::CSKY_FPU_EXCEPTION
@ CSKY_FPU_EXCEPTION
Definition: CSKYAttributes.h:33
llvm::MCAssembler::setELFHeaderEFlags
void setELFHeaderEFlags(unsigned Flags)
Definition: MCAssembler.h:277
CSKYMCTargetDesc.h
llvm::CSKYAttrs::ISA_DSP_SILAN
@ ISA_DSP_SILAN
Definition: CSKYAttributes.h:60
llvm::CSKYAttrs::V2_ISA_3E7
@ V2_ISA_3E7
Definition: CSKYAttributes.h:42
llvm::CSKYAttrs::ISA_FLOAT_3E4
@ ISA_FLOAT_3E4
Definition: CSKYAttributes.h:72
llvm::CSKYAttrs::NEEDED
@ NEEDED
Definition: CSKYAttributes.h:76
llvm::MCObjectStreamer::getAssembler
MCAssembler & getAssembler()
Definition: MCObjectStreamer.h:128
llvm::CSKYAttrs::ISA_VDSP_2E60F
@ ISA_VDSP_2E60F
Definition: CSKYAttributes.h:65
llvm::ELF::EF_CSKY_805
@ EF_CSKY_805
Definition: ELF.h:892
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:50
llvm::CSKYTargetELFStreamer::CSKYTargetELFStreamer
CSKYTargetELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI)
Definition: CSKYELFStreamer.cpp:31
llvm_unreachable
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition: ErrorHandling.h:143
llvm::CSKYAttrs::CSKY_FPU_ABI
@ CSKY_FPU_ABI
Definition: CSKYAttributes.h:30
llvm::ELF::EF_CSKY_802
@ EF_CSKY_802
Definition: ELF.h:890
llvm::CSKYAttrs::ISA_DSP_1E2
@ ISA_DSP_1E2
Definition: CSKYAttributes.h:58
S
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
Definition: README.txt:210
CSKYAttributes.h
llvm::CSKYAttrs::ISA_DSP_ENHANCE
@ ISA_DSP_ENHANCE
Definition: CSKYAttributes.h:59
llvm::CSKYAttrs::FPU_HARDFP_HALF
@ FPU_HARDFP_HALF
Definition: CSKYAttributes.h:87
llvm::CSKYAttrs::ISA_FLOAT_E1
@ ISA_FLOAT_E1
Definition: CSKYAttributes.h:69
llvm::ELF::EF_CSKY_801
@ EF_CSKY_801
Definition: ELF.h:889
llvm::StringRef::size
constexpr size_t size() const
size - Get the string size.
Definition: StringRef.h:137
llvm::ELF::EF_CSKY_FLOAT
@ EF_CSKY_FLOAT
Definition: ELF.h:897
llvm::Twine
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
Definition: Twine.h:81
llvm::GraphProgram::Name
Name
Definition: GraphWriter.h:50
llvm::ELF::EF_CSKY_807
@ EF_CSKY_807
Definition: ELF.h:893
Casting.h
llvm::ELF::SHT_CSKY_ATTRIBUTES
@ SHT_CSKY_ATTRIBUTES
Definition: ELF.h:1051
llvm::CSKYAttrs::CSKY_VDSP_VERSION
@ CSKY_VDSP_VERSION
Definition: CSKYAttributes.h:28
llvm::ELF::EF_CSKY_ABIV2
@ EF_CSKY_ABIV2
Definition: ELF.h:899
llvm::ARMBuildAttrs::Symbol
@ Symbol
Definition: ARMBuildAttributes.h:83
llvm::CSKYAttrs::FPU_ABI_SOFT
@ FPU_ABI_SOFT
Definition: CSKYAttributes.h:84
llvm::MCStreamer::emitULEB128IntValue
void emitULEB128IntValue(uint64_t Value, unsigned PadTo=0)
Special case of EmitULEB128Value that avoids the client having to pass in a MCExpr for constant integ...
Definition: MCStreamer.cpp:162
llvm::MCStreamer::getContext
MCContext & getContext() const
Definition: MCStreamer.h:293
llvm::CSKYAttrs::CSKY_FPU_VERSION
@ CSKY_FPU_VERSION
Definition: CSKYAttributes.h:29
llvm::CSKYELFStreamer::State
ElfMappingSymbol State
Definition: CSKYELFStreamer.h:111
llvm::CSKYAttrs::V2_ISA_3E3R2
@ V2_ISA_3E3R2
Definition: CSKYAttributes.h:45
CSKYELFStreamer.h
llvm::CSKYAttrs::ISA_VDSP
@ ISA_VDSP
Definition: CSKYAttributes.h:61
llvm::ELFAttrs::File
@ File
Definition: ELFAttributes.h:26
llvm::ELF::STB_LOCAL
@ STB_LOCAL
Definition: ELF.h:1217
llvm::MCStreamer::emitBytes
virtual void emitBytes(StringRef Data)
Emit the bytes in Data into the output.
Definition: MCStreamer.cpp:1212
llvm::CSKYAttrs::ISA_DSP
@ ISA_DSP
Definition: CSKYAttributes.h:57
llvm::CSKYAttrs::ISA_TRUST
@ ISA_TRUST
Definition: CSKYAttributes.h:48
llvm::CSKYAttrs::VDSP_VERSION_2
@ VDSP_VERSION_2
Definition: CSKYAttributes.h:80
llvm::CSKYAttrs::ISA_JAVA
@ ISA_JAVA
Definition: CSKYAttributes.h:54
llvm::MCSubtargetInfo
Generic base class for all target subtargets.
Definition: MCSubtargetInfo.h:76
llvm::CSKYAttrs::CSKY_FPU_HARDFP
@ CSKY_FPU_HARDFP
Definition: CSKYAttributes.h:35
llvm::CSKYELFStreamer::EMS_Text
@ EMS_Text
Definition: CSKYELFStreamer.h:109
llvm::CSKYAttrs::CSKY_ARCH_NAME
@ CSKY_ARCH_NAME
Definition: CSKYAttributes.h:23
llvm::Value
LLVM Value Representation.
Definition: Value.h:74
llvm::CSKYAttrs::ISA_MP
@ ISA_MP
Definition: CSKYAttributes.h:52
llvm::CSKYELFStreamer::EMS_Data
@ EMS_Data
Definition: CSKYELFStreamer.h:109
llvm::CSKYAttrs::V2_ISA_3E3R1
@ V2_ISA_3E3R1
Definition: CSKYAttributes.h:44
llvm::CSKYAttrs::ISA_NVIC
@ ISA_NVIC
Definition: CSKYAttributes.h:50
llvm::CSKYAttrs::CSKY_FPU_DENORMAL
@ CSKY_FPU_DENORMAL
Definition: CSKYAttributes.h:32