LLVM  14.0.0git
ARMTargetParser.h
Go to the documentation of this file.
1 //===-- ARMTargetParser - Parser for ARM target features --------*- C++ -*-===//
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 implements a target parser to recognise ARM hardware features
10 // such as FPU/CPU/ARCH/extensions and specific support such as HWDIV.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_SUPPORT_ARMTARGETPARSER_H
15 #define LLVM_SUPPORT_ARMTARGETPARSER_H
16 
17 #include "llvm/ADT/SmallVector.h"
18 #include "llvm/ADT/StringRef.h"
20 #include <vector>
21 
22 namespace llvm {
23 
24 class Triple;
25 
26 namespace ARM {
27 
28 // Arch extension modifiers for CPUs.
29 // Note that this is not the same as the AArch64 list
30 enum ArchExtKind : uint64_t {
32  AEK_NONE = 1,
33  AEK_CRC = 1 << 1,
34  AEK_CRYPTO = 1 << 2,
35  AEK_FP = 1 << 3,
36  AEK_HWDIVTHUMB = 1 << 4,
37  AEK_HWDIVARM = 1 << 5,
38  AEK_MP = 1 << 6,
39  AEK_SIMD = 1 << 7,
40  AEK_SEC = 1 << 8,
41  AEK_VIRT = 1 << 9,
42  AEK_DSP = 1 << 10,
43  AEK_FP16 = 1 << 11,
44  AEK_RAS = 1 << 12,
45  AEK_DOTPROD = 1 << 13,
46  AEK_SHA2 = 1 << 14,
47  AEK_AES = 1 << 15,
48  AEK_FP16FML = 1 << 16,
49  AEK_SB = 1 << 17,
50  AEK_FP_DP = 1 << 18,
51  AEK_LOB = 1 << 19,
52  AEK_BF16 = 1 << 20,
53  AEK_I8MM = 1 << 21,
54  AEK_CDECP0 = 1 << 22,
55  AEK_CDECP1 = 1 << 23,
56  AEK_CDECP2 = 1 << 24,
57  AEK_CDECP3 = 1 << 25,
58  AEK_CDECP4 = 1 << 26,
59  AEK_CDECP5 = 1 << 27,
60  AEK_CDECP6 = 1 << 28,
61  AEK_CDECP7 = 1 << 29,
62 
63  // Unsupported extensions.
64  AEK_OS = 1ULL << 59,
65  AEK_IWMMXT = 1ULL << 60,
66  AEK_IWMMXT2 = 1ULL << 61,
67  AEK_MAVERICK = 1ULL << 62,
68  AEK_XSCALE = 1ULL << 63,
69 };
70 
71 // List of Arch Extension names.
72 // FIXME: TableGen this.
73 struct ExtName {
74  const char *NameCStr;
75  size_t NameLength;
76  uint64_t ID;
77  const char *Feature;
78  const char *NegFeature;
79 
81 };
82 
83 const ExtName ARCHExtNames[] = {
84 #define ARM_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE) \
85  {NAME, sizeof(NAME) - 1, ID, FEATURE, NEGFEATURE},
86 #include "ARMTargetParser.def"
87 };
88 
89 // List of HWDiv names (use getHWDivSynonym) and which architectural
90 // features they correspond to (use getHWDivFeatures).
91 // FIXME: TableGen this.
92 const struct {
93  const char *NameCStr;
94  size_t NameLength;
95  uint64_t ID;
96 
97  StringRef getName() const { return StringRef(NameCStr, NameLength); }
98 } HWDivNames[] = {
99 #define ARM_HW_DIV_NAME(NAME, ID) {NAME, sizeof(NAME) - 1, ID},
100 #include "ARMTargetParser.def"
101 };
102 
103 // Arch names.
104 enum class ArchKind {
105 #define ARM_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, ARCH_BASE_EXT) ID,
106 #include "ARMTargetParser.def"
107 };
108 
109 // List of CPU names and their arches.
110 // The same CPU can have multiple arches and can be default on multiple arches.
111 // When finding the Arch for a CPU, first-found prevails. Sort them accordingly.
112 // When this becomes table-generated, we'd probably need two tables.
113 // FIXME: TableGen this.
114 template <typename T> struct CpuNames {
115  const char *NameCStr;
116  size_t NameLength;
118  bool Default; // is $Name the default CPU for $ArchID ?
120 
122 };
123 
125 #define ARM_CPU_NAME(NAME, ID, DEFAULT_FPU, IS_DEFAULT, DEFAULT_EXT) \
126  {NAME, sizeof(NAME) - 1, ARM::ArchKind::ID, IS_DEFAULT, DEFAULT_EXT},
127 #include "ARMTargetParser.def"
128 };
129 
130 // FPU names.
131 enum FPUKind {
132 #define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION) KIND,
133 #include "ARMTargetParser.def"
135 };
136 
137 // FPU Version
138 enum class FPUVersion {
139  NONE,
140  VFPV2,
141  VFPV3,
142  VFPV3_FP16,
143  VFPV4,
144  VFPV5,
146 };
147 
148 // An FPU name restricts the FPU in one of three ways:
149 enum class FPURestriction {
150  None = 0, ///< No restriction
151  D16, ///< Only 16 D registers
152  SP_D16 ///< Only single-precision instructions, with 16 D registers
153 };
154 
155 // An FPU name implies one of three levels of Neon support:
156 enum class NeonSupportLevel {
157  None = 0, ///< No Neon
158  Neon, ///< Neon
159  Crypto ///< Neon with Crypto
160 };
161 
162 // ISA kinds.
163 enum class ISAKind { INVALID = 0, ARM, THUMB, AARCH64 };
164 
165 // Endianness
166 // FIXME: BE8 vs. BE32?
167 enum class EndianKind { INVALID = 0, LITTLE, BIG };
168 
169 // v6/v7/v8 Profile
170 enum class ProfileKind { INVALID = 0, A, R, M };
171 
172 // List of canonical FPU names (use getFPUSynonym) and which architectural
173 // features they correspond to (use getFPUFeatures).
174 // FIXME: TableGen this.
175 // The entries must appear in the order listed in ARM::FPUKind for correct
176 // indexing
177 struct FPUName {
178  const char *NameCStr;
179  size_t NameLength;
184 
186 };
187 
188 static const FPUName FPUNames[] = {
189 #define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION) \
190  {NAME, sizeof(NAME) - 1, KIND, VERSION, NEON_SUPPORT, RESTRICTION},
191 #include "llvm/Support/ARMTargetParser.def"
192 };
193 
194 // List of canonical arch names (use getArchSynonym).
195 // This table also provides the build attribute fields for CPU arch
196 // and Arch ID, according to the Addenda to the ARM ABI, chapters
197 // 2.4 and 2.3.5.2 respectively.
198 // FIXME: SubArch values were simplified to fit into the expectations
199 // of the triples and are not conforming with their official names.
200 // Check to see if the expectation should be changed.
201 // FIXME: TableGen this.
202 template <typename T> struct ArchNames {
203  const char *NameCStr;
204  size_t NameLength;
205  const char *CPUAttrCStr;
207  const char *SubArchCStr;
209  unsigned DefaultFPU;
211  T ID;
212  ARMBuildAttrs::CPUArch ArchAttr; // Arch ID in build attributes.
213 
215 
216  // CPU class in build attributes.
218 
219  // Sub-Arch name.
221 };
222 
223 static const ArchNames<ArchKind> ARCHNames[] = {
224 #define ARM_ARCH(NAME, ID, CPU_ATTR, SUB_ARCH, ARCH_ATTR, ARCH_FPU, \
225  ARCH_BASE_EXT) \
226  {NAME, sizeof(NAME) - 1, \
227  CPU_ATTR, sizeof(CPU_ATTR) - 1, \
228  SUB_ARCH, sizeof(SUB_ARCH) - 1, \
229  ARCH_FPU, ARCH_BASE_EXT, \
230  ArchKind::ID, ARCH_ATTR},
231 #include "llvm/Support/ARMTargetParser.def"
232 };
233 
234 // Information by ID
235 StringRef getFPUName(unsigned FPUKind);
239 
240 // FIXME: These should be moved to TargetTuple once it exists
241 bool getFPUFeatures(unsigned FPUKind, std::vector<StringRef> &Features);
242 bool getHWDivFeatures(uint64_t HWDivKind, std::vector<StringRef> &Features);
243 bool getExtensionFeatures(uint64_t Extensions,
244  std::vector<StringRef> &Features);
245 
247 unsigned getArchAttr(ArchKind AK);
253  std::vector<StringRef> &Features,
254  unsigned &ArgFPUKind);
255 
256 // Information by Name
257 unsigned getDefaultFPU(StringRef CPU, ArchKind AK);
258 uint64_t getDefaultExtensions(StringRef CPU, ArchKind AK);
263 
264 // Parser
265 uint64_t parseHWDiv(StringRef HWDiv);
266 unsigned parseFPU(StringRef FPU);
268 uint64_t parseArchExt(StringRef ArchExt);
273 unsigned parseArchVersion(StringRef Arch);
274 
277 
278 } // namespace ARM
279 } // namespace llvm
280 
281 #endif
llvm::ARM::FPUVersion::VFPV5
@ VFPV5
llvm::ARM::FK_LAST
@ FK_LAST
Definition: ARMTargetParser.h:134
llvm::ARM::AEK_CDECP3
@ AEK_CDECP3
Definition: ARMTargetParser.h:57
llvm::ARM::ProfileKind::A
@ A
getName
static StringRef getName(Value *V)
Definition: ProvenanceAnalysisEvaluator.cpp:42
llvm::ARM::CpuNames::NameLength
size_t NameLength
Definition: ARMTargetParser.h:116
llvm::ARM::ExtName::NameCStr
const char * NameCStr
Definition: ARMTargetParser.h:74
llvm::ARM::EndianKind::BIG
@ BIG
llvm
---------------------— PointerInfo ------------------------------------—
Definition: AllocatorList.h:23
llvm::ARM::ArchNames::NameLength
size_t NameLength
Definition: ARMTargetParser.h:204
llvm::ARM::NameCStr
const char * NameCStr
Definition: ARMTargetParser.h:93
llvm::ARM::EndianKind
EndianKind
Definition: ARMTargetParser.h:167
llvm::ARM::ID
uint64_t ID
Definition: ARMTargetParser.h:95
llvm::ARM::FPUKind
FPUKind
Definition: ARMTargetParser.h:131
llvm::ARM::getCanonicalArchName
StringRef getCanonicalArchName(StringRef Arch)
Definition: ARMTargetParser.cpp:279
llvm::ARM::AEK_VIRT
@ AEK_VIRT
Definition: ARMTargetParser.h:41
llvm::ARM::AEK_CDECP6
@ AEK_CDECP6
Definition: ARMTargetParser.h:60
llvm::ARM::ArchNames::NameCStr
const char * NameCStr
Definition: ARMTargetParser.h:203
llvm::ARM::FPUName
Definition: ARMTargetParser.h:177
llvm::ARM::FPURestriction
FPURestriction
Definition: ARMTargetParser.h:149
llvm::ARM::ISAKind::THUMB
@ THUMB
llvm::ARM::FPUName::getName
StringRef getName() const
Definition: ARMTargetParser.h:185
llvm::ARM::getArchName
StringRef getArchName(ArchKind AK)
Definition: ARMTargetParser.cpp:428
llvm::ARM::ArchNames::ArchBaseExtensions
uint64_t ArchBaseExtensions
Definition: ARMTargetParser.h:210
StringRef.h
llvm::ARM::AEK_FP
@ AEK_FP
Definition: ARMTargetParser.h:35
llvm::ARM::ARCHExtNames
const ExtName ARCHExtNames[]
Definition: ARMTargetParser.h:83
llvm::ARM::AEK_SIMD
@ AEK_SIMD
Definition: ARMTargetParser.h:39
llvm::ARM::ArchNames::SubArchLength
size_t SubArchLength
Definition: ARMTargetParser.h:208
llvm::Triple
Triple - Helper class for working with autoconf configuration names.
Definition: Triple.h:45
llvm::ARM::parseArchProfile
ProfileKind parseArchProfile(StringRef Arch)
Definition: ARMTargetParser.cpp:92
llvm::ARM::FPUVersion::VFPV4
@ VFPV4
llvm::ARM::getArchSynonym
StringRef getArchSynonym(StringRef Arch)
Definition: ARMTargetParser.cpp:140
llvm::ARM::AEK_CDECP4
@ AEK_CDECP4
Definition: ARMTargetParser.h:58
llvm::ARM::ProfileKind::INVALID
@ INVALID
llvm::ARM::ArchExtKind
ArchExtKind
Definition: ARMTargetParser.h:30
llvm::ARM::ProfileKind
ProfileKind
Definition: ARMTargetParser.h:170
llvm::ARM::FPURestriction::SP_D16
@ SP_D16
Only single-precision instructions, with 16 D registers.
llvm::ARM::getCPUAttr
StringRef getCPUAttr(ArchKind AK)
Definition: ARMTargetParser.cpp:432
T
#define T
Definition: Mips16ISelLowering.cpp:341
llvm::ARM::getFPUFeatures
bool getFPUFeatures(unsigned FPUKind, std::vector< StringRef > &Features)
Definition: ARMTargetParser.cpp:167
llvm::ARM::FPUName::NeonSupport
NeonSupportLevel NeonSupport
Definition: ARMTargetParser.h:182
llvm::ARM::FPUNames
static const FPUName FPUNames[]
Definition: ARMTargetParser.h:188
llvm::ARM::fillValidCPUArchList
void fillValidCPUArchList(SmallVectorImpl< StringRef > &Values)
Definition: ARMTargetParser.cpp:583
llvm::ARM::ExtName::ID
uint64_t ID
Definition: ARMTargetParser.h:76
llvm::WinEH::EncodingType::ARM
@ ARM
Windows AXP64.
llvm::ARM::CpuNames::ArchID
T ArchID
Definition: ARMTargetParser.h:117
llvm::ARM::ExtName::getName
StringRef getName() const
Definition: ARMTargetParser.h:80
llvm::ARM::AEK_DSP
@ AEK_DSP
Definition: ARMTargetParser.h:42
llvm::ARM::AEK_CDECP0
@ AEK_CDECP0
Definition: ARMTargetParser.h:54
llvm::ARM::getArchAttr
unsigned getArchAttr(ArchKind AK)
Definition: ARMTargetParser.cpp:440
llvm::ARM::AEK_HWDIVTHUMB
@ AEK_HWDIVTHUMB
Definition: ARMTargetParser.h:36
llvm::ARM::AEK_RAS
@ AEK_RAS
Definition: ARMTargetParser.h:44
llvm::ARM::AEK_DOTPROD
@ AEK_DOTPROD
Definition: ARMTargetParser.h:45
llvm::ARM::AEK_I8MM
@ AEK_I8MM
Definition: ARMTargetParser.h:53
llvm::ARM::FPURestriction::None
@ None
No restriction.
llvm::ARM::CPUNames
const CpuNames< ArchKind > CPUNames[]
Definition: ARMTargetParser.h:124
llvm::ARM::ArchNames::CPUAttrCStr
const char * CPUAttrCStr
Definition: ARMTargetParser.h:205
llvm::ARM::AEK_LOB
@ AEK_LOB
Definition: ARMTargetParser.h:51
llvm::ARM::ARCHNames
static const ArchNames< ArchKind > ARCHNames[]
Definition: ARMTargetParser.h:223
llvm::ARM::AEK_SHA2
@ AEK_SHA2
Definition: ARMTargetParser.h:46
llvm::ARM::AEK_FP16
@ AEK_FP16
Definition: ARMTargetParser.h:43
llvm::ARM::FPUName::NameLength
size_t NameLength
Definition: ARMTargetParser.h:179
llvm::ARM::ExtName
Definition: ARMTargetParser.h:73
llvm::ARM::ExtName::Feature
const char * Feature
Definition: ARMTargetParser.h:77
llvm::ARM::parseCPUArch
ArchKind parseCPUArch(StringRef CPU)
Definition: ARMTargetParser.cpp:575
llvm::ARM::AEK_MP
@ AEK_MP
Definition: ARMTargetParser.h:38
llvm::ARM::AEK_BF16
@ AEK_BF16
Definition: ARMTargetParser.h:52
llvm::ARM::parseArch
ArchKind parseArch(StringRef Arch)
Definition: ARMTargetParser.cpp:28
llvm::ARM::getDefaultExtensions
uint64_t getDefaultExtensions(StringRef CPU, ArchKind AK)
Definition: ARMTargetParser.cpp:380
llvm::ARM::ArchNames::DefaultFPU
unsigned DefaultFPU
Definition: ARMTargetParser.h:209
llvm::ARM::NeonSupportLevel
NeonSupportLevel
Definition: ARMTargetParser.h:156
llvm::ARM::appendArchExtFeatures
bool appendArchExtFeatures(StringRef CPU, ARM::ArchKind AK, StringRef ArchExt, std::vector< StringRef > &Features, unsigned &ArgFPUKind)
Definition: ARMTargetParser.cpp:499
llvm::ARM::parseArchEndian
EndianKind parseArchEndian(StringRef Arch)
Definition: ARMTargetParser.cpp:232
llvm::ARM::AEK_SB
@ AEK_SB
Definition: ARMTargetParser.h:49
llvm::ARM::AEK_INVALID
@ AEK_INVALID
Definition: ARMTargetParser.h:31
llvm::ARM::ArchNames::SubArchCStr
const char * SubArchCStr
Definition: ARMTargetParser.h:207
llvm::ARM::ArchNames::CPUAttrLength
size_t CPUAttrLength
Definition: ARMTargetParser.h:206
llvm::ARM::FPUName::FPUVer
FPUVersion FPUVer
Definition: ARMTargetParser.h:181
llvm::ARM::AEK_AES
@ AEK_AES
Definition: ARMTargetParser.h:47
llvm::ARM::AEK_HWDIVARM
@ AEK_HWDIVARM
Definition: ARMTargetParser.h:37
llvm::ARM::FPUVersion::VFPV5_FULLFP16
@ VFPV5_FULLFP16
llvm::ARM::FPUVersion::VFPV2
@ VFPV2
llvm::ARM::AEK_FP_DP
@ AEK_FP_DP
Definition: ARMTargetParser.h:50
llvm::ARM::NeonSupportLevel::Neon
@ Neon
Neon.
llvm::ARM::parseHWDiv
uint64_t parseHWDiv(StringRef HWDiv)
Definition: ARMTargetParser.cpp:558
llvm::ARM::AEK_SEC
@ AEK_SEC
Definition: ARMTargetParser.h:40
llvm::ARM::getFPUSynonym
StringRef getFPUSynonym(StringRef FPU)
Definition: ARMTargetParser.cpp:334
llvm::ARM::AEK_XSCALE
@ AEK_XSCALE
Definition: ARMTargetParser.h:68
llvm::ARM::CpuNames
Definition: ARMTargetParser.h:114
llvm::ARM::FPURestriction::D16
@ D16
Only 16 D registers.
llvm::ARM::AEK_NONE
@ AEK_NONE
Definition: ARMTargetParser.h:32
llvm::ARM::FPUVersion::VFPV3
@ VFPV3
llvm::ARM::parseArchVersion
unsigned parseArchVersion(StringRef Arch)
Definition: ARMTargetParser.cpp:39
llvm::ARM::AEK_CRC
@ AEK_CRC
Definition: ARMTargetParser.h:33
llvm::ARM::NeonSupportLevel::Crypto
@ Crypto
Neon with Crypto.
llvm::ARM::ExtName::NegFeature
const char * NegFeature
Definition: ARMTargetParser.h:78
llvm::ARM::getDefaultFPU
unsigned getDefaultFPU(StringRef CPU, ArchKind AK)
Definition: ARMTargetParser.cpp:369
llvm::ARM::CpuNames::getName
StringRef getName() const
Definition: ARMTargetParser.h:121
llvm::ARM::AEK_FP16FML
@ AEK_FP16FML
Definition: ARMTargetParser.h:48
llvm::ARM::FPUVersion::NONE
@ NONE
llvm::ARM::AEK_CDECP7
@ AEK_CDECP7
Definition: ARMTargetParser.h:61
llvm::ARM::getSubArch
StringRef getSubArch(ArchKind AK)
Definition: ARMTargetParser.cpp:436
llvm::ARM::EndianKind::LITTLE
@ LITTLE
llvm::ARM::AEK_CDECP2
@ AEK_CDECP2
Definition: ARMTargetParser.h:56
llvm::ARM::AEK_CRYPTO
@ AEK_CRYPTO
Definition: ARMTargetParser.h:34
llvm::ARM::ISAKind
ISAKind
Definition: ARMTargetParser.h:163
llvm::ARM::ISAKind::INVALID
@ INVALID
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:58
llvm::ARM::parseArchISA
ISAKind parseArchISA(StringRef Arch)
Definition: ARMTargetParser.cpp:251
llvm::ARM::AEK_CDECP1
@ AEK_CDECP1
Definition: ARMTargetParser.h:55
llvm::ARM::ArchNames::ArchAttr
ARMBuildAttrs::CPUArch ArchAttr
Definition: ARMTargetParser.h:212
llvm::ARM::CpuNames::Default
bool Default
Definition: ARMTargetParser.h:118
llvm::ARM::ProfileKind::R
@ R
llvm::ARM::getHWDivFeatures
bool getHWDivFeatures(uint64_t HWDivKind, std::vector< StringRef > &Features)
Definition: ARMTargetParser.cpp:393
llvm::ARM::getFPUNeonSupportLevel
NeonSupportLevel getFPUNeonSupportLevel(unsigned FPUKind)
Definition: ARMTargetParser.cpp:269
llvm::ARM::AEK_IWMMXT2
@ AEK_IWMMXT2
Definition: ARMTargetParser.h:66
llvm::ARM::getDefaultCPU
StringRef getDefaultCPU(StringRef Arch)
Definition: ARMTargetParser.cpp:543
llvm::ARM::getExtensionFeatures
bool getExtensionFeatures(uint64_t Extensions, std::vector< StringRef > &Features)
Definition: ARMTargetParser.cpp:412
llvm::ARM::ArchKind
ArchKind
Definition: ARMTargetParser.h:104
llvm::ARM::FPUName::ID
FPUKind ID
Definition: ARMTargetParser.h:180
llvm::ARM::NeonSupportLevel::None
@ None
No Neon.
llvm::ARM::parseFPU
unsigned parseFPU(StringRef FPU)
Definition: ARMTargetParser.cpp:260
llvm::ARM::FPUVersion::VFPV3_FP16
@ VFPV3_FP16
llvm::ARM::EndianKind::INVALID
@ INVALID
llvm::ARM::ArchNames::getCPUAttr
StringRef getCPUAttr() const
Definition: ARMTargetParser.h:217
llvm::ARM::AEK_CDECP5
@ AEK_CDECP5
Definition: ARMTargetParser.h:59
llvm::ARM::getFPURestriction
FPURestriction getFPURestriction(unsigned FPUKind)
Definition: ARMTargetParser.cpp:363
llvm::ARM::AEK_OS
@ AEK_OS
Definition: ARMTargetParser.h:64
ARMBuildAttributes.h
llvm::ARM::ISAKind::ARM
@ ARM
llvm::ARM::ExtName::NameLength
size_t NameLength
Definition: ARMTargetParser.h:75
llvm::ARM::ArchNames
Definition: ARMTargetParser.h:202
llvm::ARM::getFPUName
StringRef getFPUName(unsigned FPUKind)
Definition: ARMTargetParser.cpp:351
llvm::ARM::getFPUVersion
FPUVersion getFPUVersion(unsigned FPUKind)
Definition: ARMTargetParser.cpp:357
SmallVector.h
llvm::ARM::CpuNames::DefaultExtensions
uint64_t DefaultExtensions
Definition: ARMTargetParser.h:119
llvm::ARM::CpuNames::NameCStr
const char * NameCStr
Definition: ARMTargetParser.h:115
llvm::ARM::ProfileKind::M
@ M
llvm::ARM::NameLength
size_t NameLength
Definition: ARMTargetParser.h:94
llvm::ARM::computeDefaultTargetABI
StringRef computeDefaultTargetABI(const Triple &TT, StringRef CPU)
Definition: ARMTargetParser.cpp:590
llvm::ARM::parseArchExt
uint64_t parseArchExt(StringRef ArchExt)
Definition: ARMTargetParser.cpp:567
llvm::ARM::ArchNames::ID
T ID
Definition: ARMTargetParser.h:211
llvm::ARM::ArchNames::getName
StringRef getName() const
Definition: ARMTargetParser.h:214
llvm::ARM::HWDivNames
const struct llvm::ARM::@343 HWDivNames[]
llvm::ARM::AEK_IWMMXT
@ AEK_IWMMXT
Definition: ARMTargetParser.h:65
llvm::ARM::FPUName::NameCStr
const char * NameCStr
Definition: ARMTargetParser.h:178
llvm::SmallVectorImpl< StringRef >
llvm::ARMBuildAttrs::CPUArch
CPUArch
Definition: ARMBuildAttributes.h:88
llvm::ARM::FPUName::Restriction
FPURestriction Restriction
Definition: ARMTargetParser.h:183
llvm::ARM::ISAKind::AARCH64
@ AARCH64
llvm::ARM::getArchExtFeature
StringRef getArchExtFeature(StringRef ArchExt)
Definition: ARMTargetParser.cpp:460
llvm::ARM::AEK_MAVERICK
@ AEK_MAVERICK
Definition: ARMTargetParser.h:67
llvm::ARM::ArchNames::getSubArch
StringRef getSubArch() const
Definition: ARMTargetParser.h:220
llvm::ARM::FPUVersion
FPUVersion
Definition: ARMTargetParser.h:138
llvm::ARM::getArchExtName
StringRef getArchExtName(uint64_t ArchExtKind)
Definition: ARMTargetParser.cpp:444