Skip to content

Commit f4225d3

Browse files
committed
[AArch64] Reland "Improve TargetParser API"
Reworked after several other major changes to the TargetParser since this was reverted. Combined with several other changes. Inline calls for the following macros and delete AArch64TargetParser.def: AARCH64_ARCH, AARCH64_CPU_NAME, AARCH64_CPU_ALIAS, AARCH64_ARCH_EXT_NAME Squashed changes from D139278 and D139102. Differential Revision: https://reviews.llvm.org/D138792
1 parent be851c6 commit f4225d3

File tree

13 files changed

+853
-1155
lines changed

13 files changed

+853
-1155
lines changed

clang/lib/Basic/Targets/AArch64.cpp

Lines changed: 137 additions & 185 deletions
Large diffs are not rendered by default.

clang/lib/Basic/Targets/AArch64.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,9 @@ class LLVM_LIBRARY_VISIBILITY AArch64TargetInfo : public TargetInfo {
7676
bool HasNoSVE = false;
7777
bool HasFMV = true;
7878

79-
llvm::AArch64::ArchKind ArchKind = llvm::AArch64::ArchKind::INVALID;
79+
const llvm::AArch64::ArchInfo *ArchInfo = &llvm::AArch64::ARMV8A;
8080

8181
std::string ABI;
82-
StringRef getArchProfile() const;
8382

8483
public:
8584
AArch64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts);

clang/lib/Driver/ToolChains/Arch/AArch64.cpp

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ std::string aarch64::getAArch64TargetCPU(const ArgList &Args,
7070
// Decode AArch64 features from string like +[no]featureA+[no]featureB+...
7171
static bool DecodeAArch64Features(const Driver &D, StringRef text,
7272
std::vector<StringRef> &Features,
73-
llvm::AArch64::ArchKind ArchKind) {
73+
const llvm::AArch64::ArchInfo &ArchInfo) {
7474
SmallVector<StringRef, 8> Split;
7575
text.split(Split, StringRef("+"), -1, false);
7676

@@ -104,14 +104,14 @@ static bool DecodeAArch64Features(const Driver &D, StringRef text,
104104

105105
// +sve implies +f32mm if the base architecture is >= v8.6A (except v9A)
106106
// It isn't the case in general that sve implies both f64mm and f32mm
107-
if ((ArchKind == llvm::AArch64::ArchKind::ARMV8_6A ||
108-
ArchKind == llvm::AArch64::ArchKind::ARMV8_7A ||
109-
ArchKind == llvm::AArch64::ArchKind::ARMV8_8A ||
110-
ArchKind == llvm::AArch64::ArchKind::ARMV8_9A ||
111-
ArchKind == llvm::AArch64::ArchKind::ARMV9_1A ||
112-
ArchKind == llvm::AArch64::ArchKind::ARMV9_2A ||
113-
ArchKind == llvm::AArch64::ArchKind::ARMV9_3A ||
114-
ArchKind == llvm::AArch64::ArchKind::ARMV9_4A) &&
107+
if ((ArchInfo == llvm::AArch64::ARMV8_6A ||
108+
ArchInfo == llvm::AArch64::ARMV8_7A ||
109+
ArchInfo == llvm::AArch64::ARMV8_8A ||
110+
ArchInfo == llvm::AArch64::ARMV8_9A ||
111+
ArchInfo == llvm::AArch64::ARMV9_1A ||
112+
ArchInfo == llvm::AArch64::ARMV9_2A ||
113+
ArchInfo == llvm::AArch64::ARMV9_3A ||
114+
ArchInfo == llvm::AArch64::ARMV9_4A) &&
115115
Feature == "sve")
116116
Features.push_back("+f32mm");
117117
}
@@ -123,32 +123,30 @@ static bool DecodeAArch64Features(const Driver &D, StringRef text,
123123
static bool DecodeAArch64Mcpu(const Driver &D, StringRef Mcpu, StringRef &CPU,
124124
std::vector<StringRef> &Features) {
125125
std::pair<StringRef, StringRef> Split = Mcpu.split("+");
126-
CPU = Split.first;
127-
llvm::AArch64::ArchKind ArchKind = llvm::AArch64::ArchKind::ARMV8A;
128-
129-
CPU = llvm::AArch64::resolveCPUAlias(CPU);
126+
const llvm::AArch64::ArchInfo *ArchInfo = &llvm::AArch64::ARMV8A;
127+
CPU = llvm::AArch64::resolveCPUAlias(Split.first);
130128

131129
if (CPU == "native")
132130
CPU = llvm::sys::getHostCPUName();
133131

134132
if (CPU == "generic") {
135133
Features.push_back("+neon");
136134
} else {
137-
ArchKind = llvm::AArch64::parseCPUArch(CPU);
138-
if (ArchKind == llvm::AArch64::ArchKind::INVALID)
135+
ArchInfo = &llvm::AArch64::parseCpu(CPU).Arch;
136+
if (*ArchInfo == llvm::AArch64::INVALID)
139137
return false;
140-
Features.push_back(llvm::AArch64::getArchFeature(ArchKind));
138+
Features.push_back(ArchInfo->ArchFeature);
141139

142-
uint64_t Extension = llvm::AArch64::getDefaultExtensions(CPU, ArchKind);
140+
uint64_t Extension = llvm::AArch64::getDefaultExtensions(CPU, *ArchInfo);
143141
if (!llvm::AArch64::getExtensionFeatures(Extension, Features))
144142
return false;
145-
}
143+
}
146144

147-
if (Split.second.size() &&
148-
!DecodeAArch64Features(D, Split.second, Features, ArchKind))
149-
return false;
145+
if (Split.second.size() &&
146+
!DecodeAArch64Features(D, Split.second, Features, *ArchInfo))
147+
return false;
150148

151-
return true;
149+
return true;
152150
}
153151

154152
static bool
@@ -158,25 +156,26 @@ getAArch64ArchFeaturesFromMarch(const Driver &D, StringRef March,
158156
std::string MarchLowerCase = March.lower();
159157
std::pair<StringRef, StringRef> Split = StringRef(MarchLowerCase).split("+");
160158

161-
llvm::AArch64::ArchKind ArchKind = llvm::AArch64::parseArch(Split.first);
159+
const llvm::AArch64::ArchInfo *ArchInfo =
160+
&llvm::AArch64::parseArch(Split.first);
162161
if (Split.first == "native")
163-
ArchKind = llvm::AArch64::getCPUArchKind(llvm::sys::getHostCPUName().str());
164-
if (ArchKind == llvm::AArch64::ArchKind::INVALID)
162+
ArchInfo = &llvm::AArch64::getArchForCpu(llvm::sys::getHostCPUName().str());
163+
if (*ArchInfo == llvm::AArch64::INVALID)
165164
return false;
166-
Features.push_back(llvm::AArch64::getArchFeature(ArchKind));
165+
Features.push_back(ArchInfo->ArchFeature);
167166

168167
// Enable SVE2 by default on Armv9-A.
169168
// It can still be disabled if +nosve2 is present.
170169
// We must do this early so that DecodeAArch64Features has the correct state
171-
if ((ArchKind == llvm::AArch64::ArchKind::ARMV9A ||
172-
ArchKind == llvm::AArch64::ArchKind::ARMV9_1A ||
173-
ArchKind == llvm::AArch64::ArchKind::ARMV9_2A)) {
170+
if ((*ArchInfo == llvm::AArch64::ARMV9A ||
171+
*ArchInfo == llvm::AArch64::ARMV9_1A ||
172+
*ArchInfo == llvm::AArch64::ARMV9_2A)) {
174173
Features.push_back("+sve");
175174
Features.push_back("+sve2");
176175
}
177176

178177
if ((Split.second.size() &&
179-
!DecodeAArch64Features(D, Split.second, Features, ArchKind)))
178+
!DecodeAArch64Features(D, Split.second, Features, *ArchInfo)))
180179
return false;
181180

182181
return true;

clang/test/Preprocessor/aarch64-target-features.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -295,29 +295,29 @@
295295
// RUN: %clang -target aarch64 -mcpu=a64fx -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-A64FX %s
296296
// RUN: %clang -target aarch64 -mcpu=carmel -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MCPU-CARMEL %s
297297
// CHECK-MCPU-APPLE-A7: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes"
298-
// CHECK-MCPU-APPLE-A10: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+crc" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes"
299-
// CHECK-MCPU-APPLE-A11: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fullfp16" "-target-feature" "+ras" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes"
300-
// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.3a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fullfp16" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes"
298+
// CHECK-MCPU-APPLE-A10: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes"
299+
// CHECK-MCPU-APPLE-A11: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes"
300+
// CHECK-MCPU-APPLE-A12: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.3a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes"
301301
// CHECK-MCPU-A34: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon"
302-
// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.4a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fp16fml" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" "-target-feature" "+sm4" "-target-feature" "+sha3" "-target-feature" "+sha2" "-target-feature" "+aes"
302+
// CHECK-MCPU-APPLE-A13: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.4a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" "-target-feature" "+sm4" "-target-feature" "+sha3" "-target-feature" "+sha2" "-target-feature" "+aes"
303303
// CHECK-MCPU-A35: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon"
304304
// CHECK-MCPU-A53: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon"
305305
// CHECK-MCPU-A57: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon"
306306
// CHECK-MCPU-A72: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon"
307307
// CHECK-MCPU-CORTEX-A73: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon"
308-
// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fp16fml" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+ssbs" "-target-feature" "+sb" "-target-feature" "+fullfp16"
308+
// CHECK-MCPU-CORTEX-R82: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8r" "-target-feature" "+crc" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+sb" "-target-feature" "+neon" "-target-feature" "+ssbs" "-target-feature" "+fullfp16"
309309
// CHECK-MCPU-M3: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon"
310-
// CHECK-MCPU-M4: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fullfp16"
310+
// CHECK-MCPU-M4: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+sha2" "-target-feature" "+aes"
311311
// CHECK-MCPU-KRYO: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon"
312-
// CHECK-MCPU-THUNDERX2T99: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon"
313-
// CHECK-MCPU-A64FX: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fullfp16" "-target-feature" "+ras" "-target-feature" "+sve" "-target-feature" "+sha2"
314-
// CHECK-MCPU-CARMEL: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fullfp16" "-target-feature" "+ras" "-target-feature" "+sha2" "-target-feature" "+aes"
312+
// CHECK-MCPU-THUNDERX2T99: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.1a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+sha2" "-target-feature" "+aes"
313+
// CHECK-MCPU-A64FX: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+sve" "-target-feature" "+sha2" "-target-feature" "+aes"
314+
// CHECK-MCPU-CARMEL: "-cc1"{{.*}} "-triple" "aarch64{{.*}}" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+sha2" "-target-feature" "+aes"
315315

316316
// RUN: %clang -target x86_64-apple-macosx -arch arm64 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARCH-ARM64 %s
317-
// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+v8.5a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fp16fml" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" "-target-feature" "+sm4" "-target-feature" "+sha3" "-target-feature" "+sha2" "-target-feature" "+aes"
317+
// CHECK-ARCH-ARM64: "-target-cpu" "apple-m1" "-target-feature" "+v8.5a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fp16fml" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+fullfp16" "-target-feature" "+sm4" "-target-feature" "+sha3" "-target-feature" "+sha2" "-target-feature" "+aes"
318318

319319
// RUN: %clang -target x86_64-apple-macosx -arch arm64_32 -### -c %s 2>&1 | FileCheck --check-prefix=CHECK-ARCH-ARM64_32 %s
320-
// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+v8.3a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fullfp16" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes"
320+
// CHECK-ARCH-ARM64_32: "-target-cpu" "apple-s4" "-target-feature" "+v8.3a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+zcm" "-target-feature" "+zcz" "-target-feature" "+sha2" "-target-feature" "+aes"
321321

322322
// RUN: %clang -target aarch64 -march=armv8-a+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s
323323
// RUN: %clang -target aarch64 -march=armv8-a+nofp+nosimd+nocrc+nocrypto+fp+simd+crc+crypto -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-MARCH-1 %s

flang/test/Driver/target-cpu-features.f90

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
! CHECK-A57-SAME: "-target-cpu" "cortex-a57" "-target-feature" "+v8a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+sha2" "-target-feature" "+aes"
3737

3838
! CHECK-A76: "-fc1" "-triple" "aarch64-unknown-linux-gnu"
39-
! CHECK-A76-SAME: "-target-cpu" "cortex-a76" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+lse" "-target-feature" "+rdm" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-feature" "+fullfp16" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+ssbs" "-target-feature" "+sha2" "-target-feature" "+aes"
39+
! CHECK-A76-SAME: "-target-cpu" "cortex-a76" "-target-feature" "+v8.2a" "-target-feature" "+crc" "-target-feature" "+crypto" "-target-feature" "+dotprod" "-target-feature" "+fp-armv8" "-target-feature" "+fullfp16" "-target-feature" "+lse" "-target-feature" "+ras" "-target-feature" "+rcpc" "-target-feature" "+rdm" "-target-feature" "+neon" "-target-feature" "+ssbs" "-target-feature" "+sha2" "-target-feature" "+aes"
4040

4141
! CHECK-ARMV9: "-fc1" "-triple" "aarch64-unknown-linux-gnu"
4242
! CHECK-ARMV9-SAME: "-target-cpu" "generic" "-target-feature" "+neon" "-target-feature" "+v9a" "-target-feature" "+sve" "-target-feature" "+sve2"

0 commit comments

Comments
 (0)