Skip to content

Commit 2e10a74

Browse files
committed
[AArch64] Add ability to list extensions enabled for a target
This introduces the new '--print-enabled-extensions' command line option to AArch64, which prints the list of extensins that are enabled for the target specified by the combination of '--target/-march/-mcpu' values. The new option allows the manual inspection of the enabled extensions by users and enables us to programatically test that the correct set of extensions are enabled for specific architecture versions or CPU models.
1 parent 237cd22 commit 2e10a74

24 files changed

+938
-5
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5703,6 +5703,11 @@ def print_supported_extensions : Flag<["-", "--"], "print-supported-extensions">
57035703
Visibility<[ClangOption, CC1Option, CLOption]>,
57045704
HelpText<"Print supported -march extensions (RISC-V, AArch64 and ARM only)">,
57055705
MarshallingInfoFlag<FrontendOpts<"PrintSupportedExtensions">>;
5706+
def print_enabled_extensions : Flag<["-", "--"], "print-enabled-extensions">,
5707+
Visibility<[ClangOption, CC1Option, CLOption]>,
5708+
HelpText<"Print the -march/-mcpu extensions enabled for the given target"
5709+
" (AArch64 only)">,
5710+
MarshallingInfoFlag<FrontendOpts<"PrintEnabledExtensions">>;
57065711
def : Flag<["-"], "mcpu=help">, Alias<print_supported_cpus>;
57075712
def : Flag<["-"], "mtune=help">, Alias<print_supported_cpus>;
57085713
def time : Flag<["-"], "time">,

clang/include/clang/Frontend/FrontendOptions.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,10 @@ class FrontendOptions {
306306
LLVM_PREFERRED_TYPE(bool)
307307
unsigned PrintSupportedExtensions : 1;
308308

309+
/// Print the extensions enabled for the current target.
310+
LLVM_PREFERRED_TYPE(bool)
311+
unsigned PrintEnabledExtensions : 1;
312+
309313
/// Show the -version text.
310314
LLVM_PREFERRED_TYPE(bool)
311315
unsigned ShowVersion : 1;

clang/lib/Driver/Driver.cpp

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,7 @@ phases::ID Driver::getFinalPhase(const DerivedArgList &DAL,
370370
// -{fsyntax-only,-analyze,emit-ast} only run up to the compiler.
371371
} else if ((PhaseArg = DAL.getLastArg(options::OPT_fsyntax_only)) ||
372372
(PhaseArg = DAL.getLastArg(options::OPT_print_supported_cpus)) ||
373+
(PhaseArg = DAL.getLastArg(options::OPT_print_enabled_extensions)) ||
373374
(PhaseArg = DAL.getLastArg(options::OPT_module_file_info)) ||
374375
(PhaseArg = DAL.getLastArg(options::OPT_verify_pch)) ||
375376
(PhaseArg = DAL.getLastArg(options::OPT_rewrite_objc)) ||
@@ -2171,7 +2172,8 @@ bool Driver::HandleImmediateArgs(const Compilation &C) {
21712172
if (C.getArgs().hasArg(options::OPT_v) ||
21722173
C.getArgs().hasArg(options::OPT__HASH_HASH_HASH) ||
21732174
C.getArgs().hasArg(options::OPT_print_supported_cpus) ||
2174-
C.getArgs().hasArg(options::OPT_print_supported_extensions)) {
2175+
C.getArgs().hasArg(options::OPT_print_supported_extensions) ||
2176+
C.getArgs().hasArg(options::OPT_print_enabled_extensions)) {
21752177
PrintVersion(C, llvm::errs());
21762178
SuppressMissingInputWarning = true;
21772179
}
@@ -4351,13 +4353,14 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args,
43514353
}
43524354

43534355
for (auto Opt : {options::OPT_print_supported_cpus,
4354-
options::OPT_print_supported_extensions}) {
4356+
options::OPT_print_supported_extensions,
4357+
options::OPT_print_enabled_extensions}) {
43554358
// If --print-supported-cpus, -mcpu=? or -mtune=? is specified, build a
43564359
// custom Compile phase that prints out supported cpu models and quits.
43574360
//
4358-
// If --print-supported-extensions is specified, call the helper function
4359-
// RISCVMarchHelp in RISCVISAInfo.cpp that prints out supported extensions
4360-
// and quits.
4361+
// If either --print-supported-extensions or --print-enabled-extensions is
4362+
// specified, call the corresponding helper function that prints out the
4363+
// supported/enabled extensions and quits.
43614364
if (Arg *A = Args.getLastArg(Opt)) {
43624365
if (Opt == options::OPT_print_supported_extensions &&
43634366
!C.getDefaultToolChain().getTriple().isRISCV() &&
@@ -4367,6 +4370,12 @@ void Driver::BuildActions(Compilation &C, DerivedArgList &Args,
43674370
<< "--print-supported-extensions";
43684371
return;
43694372
}
4373+
if (Opt == options::OPT_print_enabled_extensions &&
4374+
!C.getDefaultToolChain().getTriple().isAArch64()) {
4375+
C.getDriver().Diag(diag::err_opt_not_valid_on_target)
4376+
<< "--print-enabled-extensions";
4377+
return;
4378+
}
43704379

43714380
// Use the -mcpu=? flag as the dummy input to cc1.
43724381
Actions.clear();

clang/test/Driver/aarch64-v81a.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,19 @@
1919
// RUN: %clang --target=arm64 -mlittle-endian -march=armv8.1a -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-GENERICV81A %s
2020
// RUN: %clang --target=arm64 -mlittle-endian -march=armv8.1-a -### -c %s 2>&1 | FileCheck -check-prefix=ARM64-GENERICV81A %s
2121
// ARM64-GENERICV81A: "-cc1"{{.*}} "-triple" "arm64{{.*}}" "-target-cpu" "generic"{{.*}} "-target-feature" "+v8.1a"{{.*}} "-target-feature" "+neon"
22+
23+
// ===== Architecture extensions =====
24+
25+
// RUN: %clang -target aarch64 -march=armv8.1-a --print-enabled-extensions 2>&1 | FileCheck -check-prefix=ARCH-EXTENSION --implicit-check-not FEAT_ %s
26+
// ARCH-EXTENSION: FEAT_ETE
27+
// ARCH-EXTENSION: FEAT_LOR
28+
// ARCH-EXTENSION: FEAT_TRBE
29+
// ARCH-EXTENSION: FEAT_VHE
30+
// ARCH-EXTENSION: FEAT_PAN
31+
// ARCH-EXTENSION: FEAT_CRC32
32+
// FIXME: FEAT_FP is optional from v8.0a
33+
// ARCH-EXTENSION: FEAT_FP
34+
// ARCH-EXTENSION: FEAT_LSE
35+
// ARCH-EXTENSION: FEAT_RDM
36+
// FIXME: FEAT_AdvSIMD is optional from v8.0a
37+
// ARCH-EXTENSION: FEAT_AdvSIMD

clang/test/Driver/aarch64-v82a.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,23 @@
1313
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.2a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV82A-BE %s
1414
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.2-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV82A-BE %s
1515
// GENERICV82A-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic" "-target-feature" "+v8.2a"{{.*}} "-target-feature" "+neon"
16+
17+
// ===== Architecture extensions =====
18+
19+
// RUN: %clang -target aarch64 -march=armv8.2-a --print-enabled-extensions 2>&1 | FileCheck -check-prefix=ARCH-EXTENSION --implicit-check-not FEAT_ %s
20+
// ARCH-EXTENSION: FEAT_DPB
21+
// ARCH-EXTENSION: FEAT_ETE
22+
// ARCH-EXTENSION: FEAT_LOR
23+
// ARCH-EXTENSION: FEAT_TRBE
24+
// ARCH-EXTENSION: FEAT_VHE
25+
// ARCH-EXTENSION: FEAT_UAO
26+
// ARCH-EXTENSION: FEAT_PAN2
27+
// ARCH-EXTENSION: FEAT_PAN
28+
// ARCH-EXTENSION: FEAT_CRC32
29+
// FIXME: FEAT_FP is optional from v8.0a
30+
// ARCH-EXTENSION: FEAT_FP
31+
// ARCH-EXTENSION: FEAT_LSE
32+
// ARCH-EXTENSION: FEAT_RAS, FEAT_RASv1p1
33+
// ARCH-EXTENSION: FEAT_RDM
34+
// FIXME: FEAT_AdvSIMD is optional from v8.0a
35+
// ARCH-EXTENSION: FEAT_AdvSIMD

clang/test/Driver/aarch64-v83a.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,29 @@
1313
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.3a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV83A-BE %s
1414
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.3-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV83A-BE %s
1515
// GENERICV83A-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic" "-target-feature" "+v8.3a"{{.*}} "-target-feature" "+neon"
16+
17+
// ===== Architecture extensions =====
18+
19+
// RUN: %clang -target aarch64 -march=armv8.3-a --print-enabled-extensions 2>&1 | FileCheck -check-prefix=ARCH-EXTENSION --implicit-check-not FEAT_ %s
20+
// ARCH-EXTENSION: FEAT_DPB
21+
// ARCH-EXTENSION: FEAT_ETE
22+
// ARCH-EXTENSION: FEAT_LOR
23+
// ARCH-EXTENSION: FEAT_TRBE
24+
// ARCH-EXTENSION: FEAT_VHE
25+
// FIXME: FEAT_CCIDX is optional from v8.3a
26+
// ARCH-EXTENSION: FEAT_CCIDX
27+
// ARCH-EXTENSION: FEAT_UAO
28+
// ARCH-EXTENSION: FEAT_PAN2
29+
// ARCH-EXTENSION: FEAT_PAN
30+
// ARCH-EXTENSION: FEAT_CRC32
31+
// ARCH-EXTENSION: FEAT_FCMA
32+
// FIXME: FEAT_FP is optional from v8.0a
33+
// ARCH-EXTENSION: FEAT_FP
34+
// ARCH-EXTENSION: FEAT_JSCVT
35+
// ARCH-EXTENSION: FEAT_LSE
36+
// ARCH-EXTENSION: FEAT_PAuth
37+
// ARCH-EXTENSION: FEAT_RAS, FEAT_RASv1p1
38+
// ARCH-EXTENSION: FEAT_LRCPC
39+
// ARCH-EXTENSION: FEAT_RDM
40+
// FIXME: FEAT_AdvSIMD is optional from v8.0a
41+
// ARCH-EXTENSION: FEAT_AdvSIMD

clang/test/Driver/aarch64-v84a.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,43 @@
1313
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.4a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV84A-BE %s
1414
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.4-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV84A-BE %s
1515
// GENERICV84A-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic" "-target-feature" "+v8.4a"{{.*}} "-target-feature" "+neon"
16+
17+
// ===== Architecture extensions =====
18+
19+
// RUN: %clang -target aarch64 -march=armv8.4-a --print-enabled-extensions 2>&1 | FileCheck -check-prefix=ARCH-EXTENSION --implicit-check-not FEAT_ %s
20+
// ARCH-EXTENSION: FEAT_TLBIOS, FEAT_TLBIRANGE
21+
// FIXME: FEAT_AMUv1 is optional from v8.4a
22+
// ARCH-EXTENSION: FEAT_AMUv1
23+
// ARCH-EXTENSION: FEAT_DPB
24+
// ARCH-EXTENSION: FEAT_ETE
25+
// ARCH-EXTENSION: FEAT_LOR
26+
// ARCH-EXTENSION: FEAT_LSE2
27+
// FIXME: FEAT_MPAM is optional from v8.4a
28+
// ARCH-EXTENSION: FEAT_MPAM
29+
// ARCH-EXTENSION: FEAT_LRCPC2
30+
// ARCH-EXTENSION: FEAT_TRF
31+
// ARCH-EXTENSION: FEAT_TRBE
32+
// ARCH-EXTENSION: FEAT_VHE
33+
// FIXME: FEAT_CCIDX is optional from v8.3a
34+
// ARCH-EXTENSION: FEAT_CCIDX
35+
// ARCH-EXTENSION: FEAT_UAO
36+
// ARCH-EXTENSION: FEAT_SEL2
37+
// ARCH-EXTENSION: FEAT_PAN2
38+
// ARCH-EXTENSION: FEAT_PAN
39+
// FIXME: FEAT_NV/FEAT_NV2 are optional from v8.4a
40+
// ARCH-EXTENSION: FEAT_NV, FEAT_NV2
41+
// ARCH-EXTENSION: FEAT_CRC32
42+
// ARCH-EXTENSION: FEAT_DIT
43+
// ARCH-EXTENSION: FEAT_DotProd
44+
// ARCH-EXTENSION: FEAT_FCMA
45+
// ARCH-EXTENSION: FEAT_FlagM
46+
// FIXME: FEAT_FP is optional from v8.0a
47+
// ARCH-EXTENSION: FEAT_FP
48+
// ARCH-EXTENSION: FEAT_JSCVT
49+
// ARCH-EXTENSION: FEAT_LSE
50+
// ARCH-EXTENSION: FEAT_PAuth
51+
// ARCH-EXTENSION: FEAT_RAS, FEAT_RASv1p1
52+
// ARCH-EXTENSION: FEAT_LRCPC
53+
// ARCH-EXTENSION: FEAT_RDM
54+
// FIXME: FEAT_AdvSIMD is optional from v8.0a
55+
// ARCH-EXTENSION: FEAT_AdvSIMD

clang/test/Driver/aarch64-v85a.c

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,51 @@
1313
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.5a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV85A-BE %s
1414
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.5-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV85A-BE %s
1515
// GENERICV85A-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic" "-target-feature" "+v8.5a"{{.*}} "-target-feature" "+neon"
16+
17+
// ===== Architecture extensions =====
18+
19+
// RUN: %clang -target aarch64 -march=armv8.5-a --print-enabled-extensions 2>&1 | FileCheck -check-prefix=ARCH-EXTENSION --implicit-check-not FEAT_ %s
20+
// ARCH-EXTENSION: FEAT_TLBIOS, FEAT_TLBIRANGE
21+
// FIXME: FEAT_AMUv1 is optional from v8.4a
22+
// ARCH-EXTENSION: FEAT_AMUv1
23+
// ARCH-EXTENSION: FEAT_DPB
24+
// ARCH-EXTENSION: FEAT_DPB2
25+
// ARCH-EXTENSION: FEAT_ETE
26+
// ARCH-EXTENSION: FEAT_FRINTTS
27+
// ARCH-EXTENSION: FEAT_LOR
28+
// ARCH-EXTENSION: FEAT_CSV2_2
29+
// ARCH-EXTENSION: FEAT_LSE2
30+
// FIXME: FEAT_MPAM is optional from v8.4a
31+
// ARCH-EXTENSION: FEAT_MPAM
32+
// ARCH-EXTENSION: FEAT_LRCPC2
33+
// ARCH-EXTENSION: FEAT_FlagM2
34+
// ARCH-EXTENSION: FEAT_TRF
35+
// ARCH-EXTENSION: FEAT_TRBE
36+
// ARCH-EXTENSION: FEAT_VHE
37+
// FIXME: FEAT_CCIDX is optional from v8.3a
38+
// ARCH-EXTENSION: FEAT_CCIDX
39+
// ARCH-EXTENSION: FEAT_UAO
40+
// ARCH-EXTENSION: FEAT_SEL2
41+
// ARCH-EXTENSION: FEAT_PAN2
42+
// ARCH-EXTENSION: FEAT_PAN
43+
// FIXME: FEAT_NV/FEAT_NV2 are optional from v8.4a
44+
// ARCH-EXTENSION: FEAT_NV, FEAT_NV2
45+
// ARCH-EXTENSION: FEAT_CRC32
46+
// ARCH-EXTENSION: FEAT_DIT
47+
// ARCH-EXTENSION: FEAT_DotProd
48+
// ARCH-EXTENSION: FEAT_FCMA
49+
// ARCH-EXTENSION: FEAT_FlagM
50+
// FIXME: FEAT_FP is optional from v8.0a
51+
// ARCH-EXTENSION: FEAT_FP
52+
// ARCH-EXTENSION: FEAT_JSCVT
53+
// ARCH-EXTENSION: FEAT_LSE
54+
// ARCH-EXTENSION: FEAT_PAuth
55+
// ARCH-EXTENSION: FEAT_SPECRES
56+
// ARCH-EXTENSION: FEAT_RAS, FEAT_RASv1p1
57+
// ARCH-EXTENSION: FEAT_LRCPC
58+
// ARCH-EXTENSION: FEAT_RDM
59+
// ARCH-EXTENSION: FEAT_SB
60+
// FIXME: FEAT_AdvSIMD is optional from v8.0a
61+
// ARCH-EXTENSION: FEAT_AdvSIMD
62+
// FIXME: FEAT_SSBS/FEAT_SSBS2 are optional from v8.0a
63+
// ARCH-EXTENSION: FEAT_SSBS, FEAT_SSBS2

clang/test/Driver/aarch64-v86a.c

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,57 @@
1313
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.6a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV86A-BE %s
1414
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.6-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV86A-BE %s
1515
// GENERICV86A-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic" "-target-feature" "+v8.6a"{{.*}} "-target-feature" "+neon"
16+
17+
// ===== Architecture extensions =====
18+
19+
// RUN: %clang -target aarch64 -march=armv8.6-a --print-enabled-extensions 2>&1 | FileCheck -check-prefix=ARCH-EXTENSION --implicit-check-not FEAT_ %s
20+
// ARCH-EXTENSION: FEAT_TLBIOS, FEAT_TLBIRANGE
21+
// FIXME: FEAT_AMUv1 is optional from v8.4a
22+
// ARCH-EXTENSION: FEAT_AMUv1
23+
// FIXME: FEAT_AMUv1p1 is optional from v8.6a
24+
// ARCH-EXTENSION: FEAT_AMUv1p1
25+
// ARCH-EXTENSION: FEAT_DPB
26+
// ARCH-EXTENSION: FEAT_DPB2
27+
// ARCH-EXTENSION: FEAT_ETE
28+
// ARCH-EXTENSION: FEAT_ECV
29+
// ARCH-EXTENSION: FEAT_FRINTTS
30+
// ARCH-EXTENSION: FEAT_FGT
31+
// ARCH-EXTENSION: FEAT_LOR
32+
// ARCH-EXTENSION: FEAT_CSV2_2
33+
// ARCH-EXTENSION: FEAT_LSE2
34+
// FIXME: FEAT_MPAM is optional from v8.4a
35+
// ARCH-EXTENSION: FEAT_MPAM
36+
// ARCH-EXTENSION: FEAT_LRCPC2
37+
// ARCH-EXTENSION: FEAT_FlagM2
38+
// ARCH-EXTENSION: FEAT_TRF
39+
// ARCH-EXTENSION: FEAT_TRBE
40+
// ARCH-EXTENSION: FEAT_VHE
41+
// FIXME: FEAT_CCIDX is optional from v8.3a
42+
// ARCH-EXTENSION: FEAT_CCIDX
43+
// ARCH-EXTENSION: FEAT_UAO
44+
// ARCH-EXTENSION: FEAT_SEL2
45+
// ARCH-EXTENSION: FEAT_PAN2
46+
// ARCH-EXTENSION: FEAT_PAN
47+
// FIXME: FEAT_NV/FEAT_NV2 are optional from v8.4a
48+
// ARCH-EXTENSION: FEAT_NV, FEAT_NV2
49+
// ARCH-EXTENSION: FEAT_BF16
50+
// ARCH-EXTENSION: FEAT_CRC32
51+
// ARCH-EXTENSION: FEAT_DIT
52+
// ARCH-EXTENSION: FEAT_DotProd
53+
// ARCH-EXTENSION: FEAT_FCMA
54+
// ARCH-EXTENSION: FEAT_FlagM
55+
// FIXME: FEAT_FP is optional from v8.0a
56+
// ARCH-EXTENSION: FEAT_FP
57+
// ARCH-EXTENSION: FEAT_I8MM
58+
// ARCH-EXTENSION: FEAT_JSCVT
59+
// ARCH-EXTENSION: FEAT_LSE
60+
// ARCH-EXTENSION: FEAT_PAuth
61+
// ARCH-EXTENSION: FEAT_SPECRES
62+
// ARCH-EXTENSION: FEAT_RAS, FEAT_RASv1p1
63+
// ARCH-EXTENSION: FEAT_LRCPC
64+
// ARCH-EXTENSION: FEAT_RDM
65+
// ARCH-EXTENSION: FEAT_SB
66+
// FIXME: FEAT_AdvSIMD is optional from v8.0a
67+
// ARCH-EXTENSION: FEAT_AdvSIMD
68+
// FIXME: FEAT_SSBS/FEAT_SSBS2 are optional from v8.0a
69+
// ARCH-EXTENSION: FEAT_SSBS, FEAT_SSBS2

clang/test/Driver/aarch64-v87a.c

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,60 @@
1313
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.7a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV87A-BE %s
1414
// RUN: %clang --target=aarch64_be -mbig-endian -march=armv8.7-a -### -c %s 2>&1 | FileCheck -check-prefix=GENERICV87A-BE %s
1515
// GENERICV87A-BE: "-cc1"{{.*}} "-triple" "aarch64_be{{.*}}" "-target-cpu" "generic" "-target-feature" "+v8.7a"{{.*}} "-target-feature" "+neon"
16+
17+
// ===== Architecture extensions =====
18+
19+
// RUN: %clang -target aarch64 -march=armv8.7-a --print-enabled-extensions 2>&1 | FileCheck -check-prefix=ARCH-EXTENSION --implicit-check-not FEAT_ %s
20+
// ARCH-EXTENSION: FEAT_TLBIOS, FEAT_TLBIRANGE
21+
// FIXME: FEAT_AMUv1 is optional from v8.4a
22+
// ARCH-EXTENSION: FEAT_AMUv1
23+
// FIXME: FEAT_AMUv1p1 is optional from v8.6a
24+
// ARCH-EXTENSION: FEAT_AMUv1p1
25+
// ARCH-EXTENSION: FEAT_DPB
26+
// ARCH-EXTENSION: FEAT_DPB2
27+
// ARCH-EXTENSION: FEAT_ETE
28+
// ARCH-EXTENSION: FEAT_ECV
29+
// ARCH-EXTENSION: FEAT_FRINTTS
30+
// ARCH-EXTENSION: FEAT_FGT
31+
// ARCH-EXTENSION: FEAT_HCX
32+
// ARCH-EXTENSION: FEAT_LOR
33+
// ARCH-EXTENSION: FEAT_CSV2_2
34+
// ARCH-EXTENSION: FEAT_LSE2
35+
// FIXME: FEAT_MPAM is optional from v8.4a
36+
// ARCH-EXTENSION: FEAT_MPAM
37+
// ARCH-EXTENSION: FEAT_LRCPC2
38+
// ARCH-EXTENSION: FEAT_FlagM2
39+
// ARCH-EXTENSION: FEAT_TRF
40+
// ARCH-EXTENSION: FEAT_TRBE
41+
// ARCH-EXTENSION: FEAT_VHE
42+
// ARCH-EXTENSION: FEAT_XS
43+
// FIXME: FEAT_CCIDX is optional from v8.3a
44+
// ARCH-EXTENSION: FEAT_CCIDX
45+
// ARCH-EXTENSION: FEAT_UAO
46+
// ARCH-EXTENSION: FEAT_SEL2
47+
// ARCH-EXTENSION: FEAT_PAN2
48+
// ARCH-EXTENSION: FEAT_PAN
49+
// FIXME: FEAT_NV/FEAT_NV2 are optional from v8.4a
50+
// ARCH-EXTENSION: FEAT_NV, FEAT_NV2
51+
// ARCH-EXTENSION: FEAT_BF16
52+
// ARCH-EXTENSION: FEAT_CRC32
53+
// ARCH-EXTENSION: FEAT_DIT
54+
// ARCH-EXTENSION: FEAT_DotProd
55+
// ARCH-EXTENSION: FEAT_FCMA
56+
// ARCH-EXTENSION: FEAT_FlagM
57+
// FIXME: FEAT_FP is optional from v8.0a
58+
// ARCH-EXTENSION: FEAT_FP
59+
// ARCH-EXTENSION: FEAT_I8MM
60+
// ARCH-EXTENSION: FEAT_JSCVT
61+
// ARCH-EXTENSION: FEAT_LSE
62+
// ARCH-EXTENSION: FEAT_PAuth
63+
// ARCH-EXTENSION: FEAT_SPECRES
64+
// ARCH-EXTENSION: FEAT_RAS, FEAT_RASv1p1
65+
// ARCH-EXTENSION: FEAT_LRCPC
66+
// ARCH-EXTENSION: FEAT_RDM
67+
// ARCH-EXTENSION: FEAT_SB
68+
// FIXME: FEAT_AdvSIMD is optional from v8.0a
69+
// ARCH-EXTENSION: FEAT_AdvSIMD
70+
// FIXME: FEAT_SSBS/FEAT_SSBS2 are optional from v8.0a
71+
// ARCH-EXTENSION: FEAT_SSBS, FEAT_SSBS2
72+
// ARCH-EXTENSION: FEAT_WFxT

0 commit comments

Comments
 (0)