LLVM 20.0.0git
AVRELFStreamer.cpp
Go to the documentation of this file.
1#include "AVRELFStreamer.h"
2#include "AVRMCTargetDesc.h"
9
10namespace llvm {
11
12static 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])
38 else if (Features[AVR::ELFArchXMEGA1])
40 else if (Features[AVR::ELFArchXMEGA2])
42 else if (Features[AVR::ELFArchXMEGA3])
44 else if (Features[AVR::ELFArchXMEGA4])
46 else if (Features[AVR::ELFArchXMEGA5])
48 else if (Features[AVR::ELFArchXMEGA6])
50 else if (Features[AVR::ELFArchXMEGA7])
52
53 return EFlags;
54}
55
59 unsigned EFlags = W.getELFHeaderEFlags();
60
63
64 W.setELFHeaderEFlags(EFlags);
65}
66
67} // end namespace llvm
MCELFStreamer & getStreamer()
AVRELFStreamer(MCStreamer &S, const MCSubtargetInfo &STI)
A generic AVR target output stream.
Container class for subtarget features.
ELFObjectWriter & getWriter()
Streaming machine code generation interface.
Definition: MCStreamer.h:213
Generic base class for all target subtargets.
const FeatureBitset & getFeatureBits() const
@ EF_AVR_ARCH_XMEGA1
Definition: ELF.h:491
@ EF_AVR_ARCH_AVR35
Definition: ELF.h:485
@ EF_AVR_ARCH_AVR51
Definition: ELF.h:488
@ EF_AVR_ARCH_AVR1
Definition: ELF.h:480
@ EF_AVR_ARCH_AVRTINY
Definition: ELF.h:490
@ EF_AVR_ARCH_XMEGA3
Definition: ELF.h:493
@ EF_AVR_ARCH_XMEGA5
Definition: ELF.h:495
@ EF_AVR_ARCH_AVR6
Definition: ELF.h:489
@ EF_AVR_ARCH_AVR2
Definition: ELF.h:481
@ EF_AVR_ARCH_XMEGA2
Definition: ELF.h:492
@ EF_AVR_LINKRELAX_PREPARED
Definition: ELF.h:501
@ EF_AVR_ARCH_XMEGA7
Definition: ELF.h:497
@ EF_AVR_ARCH_XMEGA6
Definition: ELF.h:496
@ EF_AVR_ARCH_AVR5
Definition: ELF.h:487
@ EF_AVR_ARCH_AVR25
Definition: ELF.h:482
@ EF_AVR_ARCH_AVR3
Definition: ELF.h:483
@ EF_AVR_ARCH_XMEGA4
Definition: ELF.h:494
@ EF_AVR_ARCH_AVR31
Definition: ELF.h:484
@ EF_AVR_ARCH_AVR4
Definition: ELF.h:486
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
static unsigned getEFlagsForFeatureSet(const FeatureBitset &Features)