LLVM  10.0.0svn
AVRELFStreamer.cpp
Go to the documentation of this file.
1 #include "AVRELFStreamer.h"
2 
7 
8 #include "AVRMCTargetDesc.h"
9 
10 namespace llvm {
11 
12 static unsigned getEFlagsForFeatureSet(const FeatureBitset &Features) {
13  unsigned EFlags = 0;
14 
15  // Set architecture
16  if (Features[AVR::ELFArchAVR1])
17  EFlags |= ELF::EF_AVR_ARCH_AVR1;
18  else if (Features[AVR::ELFArchAVR2])
19  EFlags |= ELF::EF_AVR_ARCH_AVR2;
20  else if (Features[AVR::ELFArchAVR25])
21  EFlags |= ELF::EF_AVR_ARCH_AVR25;
22  else if (Features[AVR::ELFArchAVR3])
23  EFlags |= ELF::EF_AVR_ARCH_AVR3;
24  else if (Features[AVR::ELFArchAVR31])
25  EFlags |= ELF::EF_AVR_ARCH_AVR31;
26  else if (Features[AVR::ELFArchAVR35])
27  EFlags |= ELF::EF_AVR_ARCH_AVR35;
28  else if (Features[AVR::ELFArchAVR4])
29  EFlags |= ELF::EF_AVR_ARCH_AVR4;
30  else if (Features[AVR::ELFArchAVR5])
31  EFlags |= ELF::EF_AVR_ARCH_AVR5;
32  else if (Features[AVR::ELFArchAVR51])
33  EFlags |= ELF::EF_AVR_ARCH_AVR51;
34  else if (Features[AVR::ELFArchAVR6])
35  EFlags |= ELF::EF_AVR_ARCH_AVR6;
36  else if (Features[AVR::ELFArchTiny])
37  EFlags |= ELF::EF_AVR_ARCH_AVRTINY;
38  else if (Features[AVR::ELFArchXMEGA1])
39  EFlags |= ELF::EF_AVR_ARCH_XMEGA1;
40  else if (Features[AVR::ELFArchXMEGA2])
41  EFlags |= ELF::EF_AVR_ARCH_XMEGA2;
42  else if (Features[AVR::ELFArchXMEGA3])
43  EFlags |= ELF::EF_AVR_ARCH_XMEGA3;
44  else if (Features[AVR::ELFArchXMEGA4])
45  EFlags |= ELF::EF_AVR_ARCH_XMEGA4;
46  else if (Features[AVR::ELFArchXMEGA5])
47  EFlags |= ELF::EF_AVR_ARCH_XMEGA5;
48  else if (Features[AVR::ELFArchXMEGA6])
49  EFlags |= ELF::EF_AVR_ARCH_XMEGA6;
50  else if (Features[AVR::ELFArchXMEGA7])
51  EFlags |= ELF::EF_AVR_ARCH_XMEGA7;
52 
53  return EFlags;
54 }
55 
57  const MCSubtargetInfo &STI)
58  : AVRTargetStreamer(S) {
59 
61  unsigned EFlags = MCA.getELFHeaderEFlags();
62 
63  EFlags |= getEFlagsForFeatureSet(STI.getFeatureBits());
64 
65  MCA.setELFHeaderEFlags(EFlags);
66 }
67 
68 } // end namespace llvm
void setELFHeaderEFlags(unsigned Flags)
Definition: MCAssembler.h:255
This class represents lattice values for constants.
Definition: AllocatorList.h:23
AVRELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI)
const FeatureBitset & getFeatureBits() const
Streaming machine code generation interface.
Definition: MCStreamer.h:190
Container class for subtarget features.
MCAssembler & getAssembler()
unsigned getELFHeaderEFlags() const
ELF e_header flags.
Definition: MCAssembler.h:254
MCELFStreamer & getStreamer()
A generic AVR target output stream.
Generic base class for all target subtargets.
static unsigned getEFlagsForFeatureSet(const FeatureBitset &Features)