[llvm] [llvm][AArch64] apple-m4 is armv9.2-a (PR #98267)
Jon Roelofs via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 10 08:15:49 PDT 2024
https://github.com/jroelofs updated https://github.com/llvm/llvm-project/pull/98267
>From 2ca4c255338f1c41a2cad929604c70febf6c7eaf Mon Sep 17 00:00:00 2001
From: Jon Roelofs <jonathan_roelofs at apple.com>
Date: Tue, 9 Jul 2024 19:47:27 -0700
Subject: [PATCH 1/2] [llvm][AArch64] apple-m4 is armv9.2-a
But since SVE and friends have been added to the default extensions list, and
every CPU was opted into those extensions by default, we couldn't correctly
announce its architecutral version to the backend. Additionally, we remove
FEAT_MEC from llvm's "required" list for v9.2, as the spec considers it
optional, and M4 does not implement it.
As a drive-by, I noticed that saphira did not have an AArch64CPUTestParams
entry, and thus added one.
---
.../llvm/TargetParser/AArch64TargetParser.h | 8 +-
llvm/lib/Target/AArch64/AArch64Features.td | 2 +-
llvm/lib/Target/AArch64/AArch64Processors.td | 196 +++++++++++++-----
.../TargetParser/TargetParserTest.cpp | 28 ++-
4 files changed, 160 insertions(+), 74 deletions(-)
diff --git a/llvm/include/llvm/TargetParser/AArch64TargetParser.h b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
index 13091748e091c..2169e9c94b61f 100644
--- a/llvm/include/llvm/TargetParser/AArch64TargetParser.h
+++ b/llvm/include/llvm/TargetParser/AArch64TargetParser.h
@@ -161,14 +161,10 @@ struct CpuInfo {
StringRef Name; // Name, as written for -mcpu.
const ArchInfo &Arch;
AArch64::ExtensionBitset
- DefaultExtensions; // Default extensions for this CPU. These will be
- // ORd with the architecture defaults.
+ DefaultExtensions; // Default extensions for this CPU.
AArch64::ExtensionBitset getImpliedExtensions() const {
- AArch64::ExtensionBitset ImpliedExts;
- ImpliedExts |= DefaultExtensions;
- ImpliedExts |= Arch.DefaultExts;
- return ImpliedExts;
+ return DefaultExtensions;
}
};
diff --git a/llvm/lib/Target/AArch64/AArch64Features.td b/llvm/lib/Target/AArch64/AArch64Features.td
index 8754ea4974999..fac75d56bde4f 100644
--- a/llvm/lib/Target/AArch64/AArch64Features.td
+++ b/llvm/lib/Target/AArch64/AArch64Features.td
@@ -797,7 +797,7 @@ def HasV8_9aOps : Architecture64<8, 9, "a", "v8.9a",
!listconcat(HasV8_8aOps.DefaultExts, [FeatureSPECRES2, FeatureCSSC,
FeatureRASv2])>;
def HasV9_0aOps : Architecture64<9, 0, "a", "v9a",
- [HasV8_5aOps, FeatureMEC],
+ [HasV8_5aOps],
!listconcat(HasV8_5aOps.DefaultExts, [FeatureFullFP16, FeatureSVE,
FeatureSVE2])>;
def HasV9_1aOps : Architecture64<9, 1, "a", "v9.1a",
diff --git a/llvm/lib/Target/AArch64/AArch64Processors.td b/llvm/lib/Target/AArch64/AArch64Processors.td
index 5859d5cd91236..531d6636cce4a 100644
--- a/llvm/lib/Target/AArch64/AArch64Processors.td
+++ b/llvm/lib/Target/AArch64/AArch64Processors.td
@@ -681,247 +681,331 @@ def ProcessorFeatures {
FeatureFPARMv8, FeatureNEON, FeaturePerfMon];
list<SubtargetFeature> A55 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeatureFullFP16, FeatureDotProd,
- FeatureRCPC, FeaturePerfMon];
+ FeatureRCPC, FeaturePerfMon, FeatureCRC,
+ FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> A510 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon,
FeatureMatMulInt8, FeatureBF16, FeatureAM,
FeatureMTE, FeatureETE, FeatureSVE2BitPerm,
FeatureFP16FML,
- FeatureSB, FeaturePAuth, FeatureSSBS, FeatureSVE, FeatureSVE2];
+ FeatureSB, FeaturePAuth, FeatureSSBS, FeatureSVE, FeatureSVE2,
+ FeatureComplxNum, FeatureCRC, FeatureDotProd,
+ FeatureFPARMv8,FeatureFullFP16, FeatureJS, FeatureLSE,
+ FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> A520 = [HasV9_2aOps, FeaturePerfMon, FeatureAM,
FeatureMTE, FeatureETE, FeatureSVE2BitPerm,
FeatureFP16FML,
FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS,
+ FeatureNEON, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM,
+ FeatureDotProd];
list<SubtargetFeature> A520AE = [HasV9_2aOps, FeaturePerfMon, FeatureAM,
FeatureMTE, FeatureETE, FeatureSVE2BitPerm,
FeatureFP16FML,
FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS,
+ FeatureNEON, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM,
+ FeatureDotProd];
list<SubtargetFeature> A65 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeatureFullFP16, FeatureDotProd,
FeatureRCPC, FeatureSSBS, FeatureRAS,
- FeaturePerfMon];
+ FeaturePerfMon, FeatureCRC, FeatureLSE, FeatureRDM];
list<SubtargetFeature> A76 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeatureFullFP16, FeatureDotProd,
- FeatureRCPC, FeatureSSBS, FeaturePerfMon];
+ FeatureRCPC, FeatureSSBS, FeaturePerfMon,
+ FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> A77 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeatureFullFP16, FeatureDotProd,
- FeatureRCPC, FeaturePerfMon, FeatureSSBS];
+ FeatureRCPC, FeaturePerfMon, FeatureSSBS,
+ FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> A78 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeatureFullFP16, FeatureDotProd,
FeatureRCPC, FeaturePerfMon, FeatureSPE,
- FeatureSSBS];
+ FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> A78AE = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeatureFullFP16, FeatureDotProd,
FeatureRCPC, FeaturePerfMon, FeatureSPE,
- FeatureSSBS];
+ FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> A78C = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeatureFullFP16, FeatureDotProd,
FeatureFlagM, FeaturePAuth,
FeaturePerfMon, FeatureRCPC, FeatureSPE,
- FeatureSSBS];
+ FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> A710 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon,
FeatureETE, FeatureMTE, FeatureFP16FML,
FeatureSVE2BitPerm, FeatureBF16, FeatureMatMulInt8,
- FeaturePAuth, FeatureFlagM, FeatureSB, FeatureSVE, FeatureSVE2];
+ FeaturePAuth, FeatureFlagM, FeatureSB, FeatureSVE, FeatureSVE2,
+ FeatureComplxNum, FeatureCRC, FeatureDotProd, FeatureFPARMv8,
+ FeatureFullFP16, FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> A715 = [HasV9_0aOps, FeatureNEON, FeatureMTE,
FeatureFP16FML, FeatureSVE, FeatureTRBE,
FeatureSVE2BitPerm, FeatureBF16, FeatureETE,
FeaturePerfMon, FeatureMatMulInt8, FeatureSPE,
FeatureSB, FeatureSSBS, FeatureFullFP16, FeaturePAuth, FeaturePredRes, FeatureFlagM,
- FeatureSVE2];
+ FeatureSVE2, FeatureComplxNum, FeatureCRC,
+ FeatureDotProd, FeatureFPARMv8,
+ FeatureJS, FeatureLSE, FeatureRAS,
+ FeatureRCPC, FeatureRDM];
list<SubtargetFeature> A720 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML,
FeatureTRBE, FeatureSVE2BitPerm, FeatureETE,
FeaturePerfMon, FeatureSPE, FeatureSPE_EEF,
FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,
+ FeatureJS, FeatureLSE, FeatureNEON, FeatureRAS,
+ FeatureRCPC, FeatureRDM];
list<SubtargetFeature> A720AE = [HasV9_2aOps, FeatureMTE, FeatureFP16FML,
FeatureTRBE, FeatureSVE2BitPerm, FeatureETE,
FeaturePerfMon, FeatureSPE, FeatureSPE_EEF,
FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,
+ FeatureJS, FeatureLSE, FeatureNEON, FeatureRAS,
+ FeatureRCPC, FeatureRDM];
list<SubtargetFeature> A725 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML,
FeatureETE, FeaturePerfMon, FeatureSPE,
FeatureSVE2BitPerm, FeatureSPE_EEF, FeatureTRBE,
FeatureFlagM, FeaturePredRes, FeatureSB, FeatureSSBS,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,
+ FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS,
+ FeatureRCPC, FeatureRDM];
list<SubtargetFeature> R82 = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16,
FeatureFP16FML, FeatureSSBS, FeaturePredRes,
FeatureSB, FeatureRDM, FeatureDotProd,
FeatureComplxNum, FeatureJS,
FeatureCacheDeepPersist,
- FeatureLSE, FeatureFlagM];
+ FeatureFlagM, FeatureCRC, FeatureLSE, FeatureRAS, FeatureFPARMv8,
+ FeatureNEON, FeaturePAuth, FeatureRCPC];
list<SubtargetFeature> R82AE = [HasV8_0rOps, FeaturePerfMon, FeatureFullFP16,
FeatureFP16FML, FeatureSSBS, FeaturePredRes,
FeatureSB, FeatureRDM, FeatureDotProd,
FeatureComplxNum, FeatureJS,
FeatureCacheDeepPersist,
- FeatureLSE, FeatureFlagM];
+ FeatureLSE, FeatureFlagM, FeatureCRC, FeatureFPARMv8, FeatureNEON,
+ FeaturePAuth, FeatureRAS, FeatureRCPC];
list<SubtargetFeature> X1 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeatureRCPC, FeaturePerfMon,
FeatureSPE, FeatureFullFP16, FeatureDotProd,
- FeatureSSBS];
+ FeatureSSBS, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> X1C = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeatureRCPC_IMMO, FeaturePerfMon,
FeatureSPE, FeatureFullFP16, FeatureDotProd,
FeaturePAuth, FeatureSSBS, FeatureFlagM,
FeatureLSE2,
- FeatureRCPC];
+ FeatureRCPC, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> X2 = [HasV9_0aOps, FeatureNEON, FeaturePerfMon,
FeatureMatMulInt8, FeatureBF16, FeatureAM,
FeatureMTE, FeatureETE, FeatureSVE2BitPerm,
FeatureFP16FML,
- FeaturePAuth, FeatureSSBS, FeatureSB, FeatureSVE, FeatureSVE2, FeatureFlagM];
+ FeaturePAuth, FeatureSSBS, FeatureSB, FeatureSVE, FeatureSVE2, FeatureFlagM,
+ FeatureComplxNum, FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureFullFP16,
+ FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> X3 = [HasV9_0aOps, FeatureSVE, FeatureNEON,
FeaturePerfMon, FeatureETE, FeatureTRBE,
FeatureSPE, FeatureBF16, FeatureMatMulInt8,
FeatureMTE, FeatureSVE2BitPerm, FeatureFullFP16,
FeatureFP16FML,
FeatureSB, FeaturePAuth, FeaturePredRes, FeatureFlagM, FeatureSSBS,
- FeatureSVE2];
+ FeatureSVE2, FeatureComplxNum, FeatureCRC, FeatureFPARMv8, FeatureJS,
+ FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureDotProd];
list<SubtargetFeature> X4 = [HasV9_2aOps,
FeaturePerfMon, FeatureETE, FeatureTRBE,
FeatureSPE, FeatureMTE, FeatureSVE2BitPerm,
FeatureFP16FML, FeatureSPE_EEF,
FeatureSB, FeatureSSBS, FeaturePAuth, FeatureFlagM, FeaturePredRes,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureComplxNum, FeatureCRC, FeatureDotProd,
+ FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8, FeatureJS, FeatureLSE,
+ FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureBF16];
list<SubtargetFeature> X925 = [HasV9_2aOps, FeatureMTE, FeatureFP16FML,
FeatureETE, FeaturePerfMon, FeatureSPE,
FeatureSVE2BitPerm, FeatureSPE_EEF, FeatureTRBE,
FeatureFlagM, FeaturePredRes, FeatureSB, FeatureSSBS,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureDotProd, FeatureFPARMv8, FeatureFullFP16, FeatureMatMulInt8,
+ FeatureJS, FeatureLSE, FeatureNEON, FeaturePAuth, FeatureRAS,
+ FeatureRCPC, FeatureRDM];
list<SubtargetFeature> A64FX = [HasV8_2aOps, FeatureFPARMv8, FeatureNEON,
FeatureSHA2, FeaturePerfMon, FeatureFullFP16,
FeatureSVE, FeatureComplxNum,
- FeatureAES];
+ FeatureAES, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> Carmel = [HasV8_2aOps, FeatureNEON, FeatureSHA2, FeatureAES,
- FeatureFullFP16];
+ FeatureFullFP16, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM,
+ FeatureFPARMv8];
list<SubtargetFeature> AppleA7 = [HasV8_0aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON,FeaturePerfMon, FeatureAppleA7SysReg];
list<SubtargetFeature> AppleA10 = [HasV8_0aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon, FeatureCRC,
FeatureRDM, FeaturePAN, FeatureLOR, FeatureVH];
list<SubtargetFeature> AppleA11 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
- FeatureNEON, FeaturePerfMon, FeatureFullFP16];
+ FeatureNEON, FeaturePerfMon, FeatureFullFP16, FeatureCRC,
+ FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> AppleA12 = [HasV8_3aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
- FeatureNEON, FeaturePerfMon, FeatureFullFP16];
+ FeatureNEON, FeaturePerfMon, FeatureFullFP16,
+ FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,
+ FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> AppleA13 = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon, FeatureFullFP16,
- FeatureFP16FML, FeatureSHA3];
+ FeatureFP16FML, FeatureSHA3, FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,
+ FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM, FeatureDotProd];
list<SubtargetFeature> AppleA14 = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon,
FeatureFullFP16, FeatureFP16FML, FeatureSHA3,
// ArmV8.5-a extensions, excluding BTI:
FeatureAltFPCmp, FeatureFRInt3264,
FeatureSpecRestrict, FeatureSSBS, FeatureSB,
- FeaturePredRes, FeatureCacheDeepPersist];
+ FeaturePredRes, FeatureCacheDeepPersist,
+ FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,
+ FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM,
+ FeatureDotProd];
list<SubtargetFeature> AppleA15 = [HasV8_6aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon, FeatureSHA3,
- FeatureFullFP16, FeatureFP16FML];
+ FeatureFullFP16, FeatureFP16FML,
+ FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,
+ FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM,
+ FeatureBF16, FeatureDotProd, FeatureMatMulInt8];
list<SubtargetFeature> AppleA16 = [HasV8_6aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon, FeatureSHA3,
FeatureFullFP16, FeatureFP16FML,
- FeatureHCX];
+ FeatureHCX,
+ FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,
+ FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM,
+ FeatureBF16, FeatureDotProd, FeatureMatMulInt8];
list<SubtargetFeature> AppleA17 = [HasV8_6aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon, FeatureSHA3,
FeatureFullFP16, FeatureFP16FML,
- FeatureHCX];
- // Technically apple-m4 is ARMv9.2a, but a quirk of LLVM defines v9.0 as
- // requiring SVE, which is optional according to the Arm ARM and not
- // supported by the core. ARMv8.7a is the next closest choice.
- list<SubtargetFeature> AppleM4 = [HasV8_7aOps, FeatureSHA2, FeatureFPARMv8,
+ FeatureHCX,
+ FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,
+ FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM,
+ FeatureBF16, FeatureDotProd, FeatureMatMulInt8];
+ list<SubtargetFeature> AppleM4 = [HasV9_2aOps, FeatureSHA2, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon, FeatureSHA3,
FeatureFullFP16, FeatureFP16FML,
FeatureAES, FeatureBF16,
FeatureSME, FeatureSME2,
- FeatureSMEF64F64, FeatureSMEI16I64];
+ FeatureSMEF64F64, FeatureSMEI16I64,
+ FeatureComplxNum, FeatureCRC, FeatureJS, FeatureLSE,
+ FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM,
+ FeatureDotProd, FeatureMatMulInt8];
list<SubtargetFeature> ExynosM3 = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES,
- FeaturePerfMon];
+ FeaturePerfMon, FeatureNEON, FeatureFPARMv8];
list<SubtargetFeature> ExynosM4 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureDotProd,
- FeatureFullFP16, FeaturePerfMon];
+ FeatureFullFP16, FeaturePerfMon, FeatureCRC, FeatureFPARMv8,
+ FeatureLSE, FeatureNEON, FeatureRAS, FeatureRDM];
list<SubtargetFeature> Falkor = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES,
FeatureFPARMv8, FeatureNEON, FeaturePerfMon,
FeatureRDM];
list<SubtargetFeature> NeoverseE1 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureDotProd,
FeatureFPARMv8, FeatureFullFP16, FeatureNEON,
- FeatureRCPC, FeatureSSBS, FeaturePerfMon];
+ FeatureRCPC, FeatureSSBS, FeaturePerfMon, FeatureCRC,
+ FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> NeoverseN1 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureDotProd,
FeatureFPARMv8, FeatureFullFP16, FeatureNEON,
FeatureRCPC, FeatureSPE, FeatureSSBS,
- FeaturePerfMon];
+ FeaturePerfMon, FeatureCRC, FeatureLSE, FeatureRAS, FeatureRDM];
list<SubtargetFeature> NeoverseN2 = [HasV9_0aOps, FeatureBF16, FeatureETE, FeatureFP16FML,
FeatureMatMulInt8, FeatureMTE, FeatureSVE2,
FeatureSVE2BitPerm, FeatureTRBE,
FeaturePerfMon,
- FeatureDotProd, FeatureFullFP16, FeatureSB, FeatureSSBS, FeatureSVE];
+ FeatureDotProd, FeatureFullFP16, FeatureSB, FeatureSSBS, FeatureSVE,
+ FeatureComplxNum, FeatureCRC, FeatureFPARMv8, FeatureJS, FeatureLSE,
+ FeatureNEON, FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> NeoverseN3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML,
FeatureFullFP16, FeatureMTE, FeaturePerfMon,
FeatureRandGen, FeatureSPE, FeatureSPE_EEF,
FeatureSVE2BitPerm,
FeatureSSBS, FeatureSB, FeaturePredRes, FeaturePAuth, FeatureFlagM,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum,
+ FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8,
+ FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM,
+ FeatureNEON];
list<SubtargetFeature> Neoverse512TVB = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist,
FeatureSHA2, FeatureAES, FeatureFPARMv8, FeatureFP16FML,
FeatureFullFP16, FeatureMatMulInt8, FeatureNEON,
FeaturePerfMon, FeatureRandGen, FeatureSPE,
FeatureSSBS, FeatureSVE,
- FeatureSHA3, FeatureSM4, FeatureDotProd];
+ FeatureSHA3, FeatureSM4, FeatureDotProd, FeatureComplxNum,
+ FeatureCRC, FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS,
+ FeatureRCPC, FeatureRDM];
list<SubtargetFeature> NeoverseV1 = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist,
FeatureSHA2, FeatureAES, FeatureFPARMv8, FeatureFP16FML,
FeatureFullFP16, FeatureMatMulInt8, FeatureNEON,
FeaturePerfMon, FeatureRandGen, FeatureSPE,
FeatureSSBS, FeatureSVE,
- FeatureSHA3, FeatureSM4, FeatureDotProd];
+ FeatureSHA3, FeatureSM4, FeatureDotProd, FeatureComplxNum,
+ FeatureCRC, FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS,
+ FeatureRCPC, FeatureRDM];
list<SubtargetFeature> NeoverseV2 = [HasV9_0aOps, FeatureBF16, FeatureSPE,
FeaturePerfMon, FeatureETE, FeatureMatMulInt8,
FeatureNEON, FeatureSVE2BitPerm, FeatureFP16FML,
FeatureMTE, FeatureRandGen,
- FeatureSVE, FeatureSVE2, FeatureSSBS, FeatureFullFP16, FeatureDotProd];
+ FeatureSVE, FeatureSVE2, FeatureSSBS, FeatureFullFP16, FeatureDotProd,
+ FeatureComplxNum, FeatureCRC, FeatureFPARMv8, FeatureJS, FeatureLSE,
+ FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> NeoverseV3 = [HasV9_2aOps, FeatureETE, FeatureFP16FML,
FeatureFullFP16, FeatureLS64, FeatureMTE,
FeaturePerfMon, FeatureRandGen, FeatureSPE,
FeatureSPE_EEF, FeatureSVE2BitPerm, FeatureBRBE,
FeatureSSBS, FeatureSB, FeaturePredRes, FeaturePAuth, FeatureFlagM,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS, FeatureLSE,
+ FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> NeoverseV3AE = [HasV9_2aOps, FeatureETE, FeatureFP16FML,
FeatureFullFP16, FeatureLS64, FeatureMTE,
FeaturePerfMon, FeatureRandGen, FeatureSPE,
FeatureSPE_EEF, FeatureSVE2BitPerm, FeatureBRBE,
FeatureSSBS, FeatureSB, FeaturePredRes, FeaturePAuth, FeatureFlagM,
- FeatureSVE, FeatureSVE2];
+ FeatureSVE, FeatureSVE2, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS,
+ FeatureLSE, FeatureNEON, FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> Saphira = [HasV8_4aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
- FeatureNEON, FeatureSPE, FeaturePerfMon];
+ FeatureNEON, FeatureSPE, FeaturePerfMon, FeatureCRC,
+ FeatureLSE, FeatureRDM, FeatureRAS, FeatureRCPC];
list<SubtargetFeature> ThunderX = [HasV8_0aOps, FeatureCRC, FeatureSHA2, FeatureAES,
FeatureFPARMv8, FeaturePerfMon, FeatureNEON];
list<SubtargetFeature> ThunderX2T99 = [HasV8_1aOps, FeatureCRC, FeatureSHA2, FeatureAES,
- FeatureFPARMv8, FeatureNEON, FeatureLSE];
+ FeatureFPARMv8, FeatureNEON, FeatureLSE,
+ FeatureRDM];
list<SubtargetFeature> ThunderX3T110 = [HasV8_3aOps, FeatureCRC, FeatureSHA2, FeatureAES,
FeatureFPARMv8, FeatureNEON, FeatureLSE,
- FeaturePAuth, FeaturePerfMon];
+ FeaturePAuth, FeaturePerfMon, FeatureComplxNum,
+ FeatureJS, FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> TSV110 = [HasV8_2aOps, FeatureSHA2, FeatureAES, FeatureFPARMv8,
FeatureNEON, FeaturePerfMon, FeatureSPE,
FeatureFullFP16, FeatureFP16FML, FeatureDotProd,
- FeatureJS, FeatureComplxNum];
+ FeatureJS, FeatureComplxNum, FeatureCRC, FeatureLSE,
+ FeatureRAS, FeatureRDM];
list<SubtargetFeature> Ampere1 = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,
FeatureSSBS, FeatureRandGen, FeatureSB,
FeatureSHA2, FeatureSHA3, FeatureAES,
- FeatureFullFP16];
+ FeatureFullFP16, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8, FeatureJS,
+ FeatureLSE, FeaturePAuth, FeatureRAS, FeatureRCPC, FeatureRDM];
list<SubtargetFeature> Ampere1A = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,
FeatureMTE, FeatureSSBS, FeatureRandGen,
FeatureSB, FeatureSM4, FeatureSHA2,
FeatureSHA3, FeatureAES,
- FeatureFullFP16];
+ FeatureFullFP16, FeatureBF16, FeatureComplxNum,
+ FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8,
+ FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS, FeatureRCPC,
+ FeatureRDM];
list<SubtargetFeature> Ampere1B = [HasV8_7aOps, FeatureNEON, FeaturePerfMon,
FeatureMTE, FeatureSSBS, FeatureRandGen,
FeatureSB, FeatureSM4, FeatureSHA2,
FeatureSHA3, FeatureAES, FeatureCSSC,
- FeatureWFxT, FeatureFullFP16];
+ FeatureWFxT, FeatureFullFP16, FeatureBF16, FeatureComplxNum,
+ FeatureCRC, FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8,
+ FeatureJS, FeatureLSE, FeaturePAuth, FeatureRAS, FeatureRCPC,
+ FeatureRDM];
list<SubtargetFeature> Oryon = [HasV8_6aOps, FeatureNEON, FeaturePerfMon,
FeatureRandGen,
FeaturePAuth, FeatureSM4, FeatureSHA2,
FeatureSHA3, FeatureAES,
- FeatureSPE];
+ FeatureSPE, FeatureBF16, FeatureComplxNum, FeatureCRC,
+ FeatureDotProd, FeatureFPARMv8, FeatureMatMulInt8,
+ FeatureJS, FeatureLSE, FeatureRAS, FeatureRCPC, FeatureRDM];
// ETE and TRBE are future architecture extensions. We temporarily enable them
// by default for users targeting generic AArch64. The extensions do not
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index 62be718ba8d14..e5fd16f876989 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1228,18 +1228,18 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_PERFMON}),
AArch64CPUTestParams(
"cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8",
- {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
- AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
- AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
+ {AArch64::AEK_CRC, AArch64::AEK_AES,
+ AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
+ AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+ AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
AArch64CPUTestParams(
"cortex-a78ae", "armv8.2-a", "crypto-neon-fp-armv8",
- {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
- AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
- AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
- AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
- AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
+ {AArch64::AEK_CRC, AArch64::AEK_AES,
+ AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
+ AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
+ AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
+ AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
AArch64CPUTestParams(
"cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8",
{AArch64::AEK_RAS, AArch64::AEK_CRC, AArch64::AEK_AES,
@@ -1628,7 +1628,7 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_FP16FML, AArch64::AEK_SHA3, AArch64::AEK_BF16,
AArch64::AEK_I8MM, AArch64::AEK_JSCVT, AArch64::AEK_FCMA,
AArch64::AEK_PAUTH, AArch64::AEK_PERFMON, AArch64::AEK_HCX}),
- AArch64CPUTestParams("apple-m4", "armv8.7-a", "crypto-neon-fp-armv8",
+ AArch64CPUTestParams("apple-m4", "armv9.2-a", "crypto-neon-fp-armv8",
{AArch64::AEK_CRC, AArch64::AEK_AES,
AArch64::AEK_SHA2, AArch64::AEK_SHA3,
AArch64::AEK_FP, AArch64::AEK_SIMD,
@@ -1801,6 +1801,12 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_SIMD, AArch64::AEK_FP16,
AArch64::AEK_RAS, AArch64::AEK_LSE,
AArch64::AEK_RDM}),
+ AArch64CPUTestParams(
+ "saphira", "armv8.4-a", "crypto-neon-fp-armv8",
+ {AArch64::AEK_AES, AArch64::AEK_FP, AArch64::AEK_SIMD,
+ AArch64::AEK_PERFMON, AArch64::AEK_SHA2, AArch64::AEK_PROFILE,
+ AArch64::AEK_CRC, AArch64::AEK_LSE, AArch64::AEK_RDM,
+ AArch64::AEK_RAS, AArch64::AEK_RCPC}),
AArch64CPUTestParams(
"oryon-1", "armv8.6-a", "crypto-neon-fp-armv8",
{AArch64::AEK_CRC, AArch64::AEK_FP, AArch64::AEK_PAUTH,
>From 725317050edc87fb1d62737618c4ebd55d38c8e3 Mon Sep 17 00:00:00 2001
From: Jon Roelofs <jonathan_roelofs at apple.com>
Date: Wed, 10 Jul 2024 08:15:07 -0700
Subject: [PATCH 2/2] clang-format
---
.../TargetParser/TargetParserTest.cpp | 20 +++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/llvm/unittests/TargetParser/TargetParserTest.cpp b/llvm/unittests/TargetParser/TargetParserTest.cpp
index e5fd16f876989..06ffa58a220ed 100644
--- a/llvm/unittests/TargetParser/TargetParserTest.cpp
+++ b/llvm/unittests/TargetParser/TargetParserTest.cpp
@@ -1228,18 +1228,18 @@ INSTANTIATE_TEST_SUITE_P(
AArch64::AEK_PERFMON}),
AArch64CPUTestParams(
"cortex-a78", "armv8.2-a", "crypto-neon-fp-armv8",
- {AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
- AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
+ {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+ AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
+ AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
AArch64CPUTestParams(
"cortex-a78ae", "armv8.2-a", "crypto-neon-fp-armv8",
- {AArch64::AEK_CRC, AArch64::AEK_AES,
- AArch64::AEK_SHA2, AArch64::AEK_FP, AArch64::AEK_RDM,
- AArch64::AEK_SIMD, AArch64::AEK_RAS, AArch64::AEK_LSE,
- AArch64::AEK_FP16, AArch64::AEK_DOTPROD, AArch64::AEK_RCPC,
- AArch64::AEK_SSBS, AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
+ {AArch64::AEK_CRC, AArch64::AEK_AES, AArch64::AEK_SHA2,
+ AArch64::AEK_FP, AArch64::AEK_RDM, AArch64::AEK_SIMD,
+ AArch64::AEK_RAS, AArch64::AEK_LSE, AArch64::AEK_FP16,
+ AArch64::AEK_DOTPROD, AArch64::AEK_RCPC, AArch64::AEK_SSBS,
+ AArch64::AEK_PROFILE, AArch64::AEK_PERFMON}),
AArch64CPUTestParams(
"cortex-a78c", "armv8.2-a", "crypto-neon-fp-armv8",
{AArch64::AEK_RAS, AArch64::AEK_CRC, AArch64::AEK_AES,
More information about the llvm-commits
mailing list