Skip to content

Commit f576cbe

Browse files
authored
[AArch64] Correctly mark Neoverse N2 as an Armv9.0a core (#75055)
Neoverse N2 was incorrectly marked as an Armv8.5a core. This has been changed to an Armv9.0a core. However, crypto options are not enabled by default for Armv9 cores, so -mcpu=neoverse-n2+crypto is required to enable crypto for this core. Neoverse N2 Technical Reference Manual: https://developer.arm.com/documentation/102099/0003/
1 parent b1a91b7 commit f576cbe

File tree

8 files changed

+18
-15
lines changed

8 files changed

+18
-15
lines changed

clang/test/Driver/arm-cortex-cpus-2.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@
566566
// CHECK-CORTEX-M52: "-cc1"{{.*}} "-triple" "thumbv8.1m.main-{{.*}} "-target-cpu" "cortex-m52"
567567

568568
// RUN: %clang -target arm -mcpu=neoverse-n2 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-NEOVERSE-N2 %s
569-
// CHECK-NEOVERSE-N2: "-cc1"{{.*}} "-triple" "armv8.5a-{{.*}}" "-target-cpu" "neoverse-n2"
569+
// CHECK-NEOVERSE-N2: "-cc1"{{.*}} "-triple" "armv9a-{{.*}}" "-target-cpu" "neoverse-n2"
570570

571571
// ================== Check whether -mcpu accepts mixed-case values.
572572
// RUN: %clang -target arm-linux-gnueabi -mcpu=Cortex-a5 -### -c %s 2>&1 | FileCheck -check-prefix=CHECK-CASE-INSENSITIVE-CPUV7A %s

llvm/docs/ReleaseNotes.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,13 @@ Changes to the AArch64 Backend
9494

9595
* Added support for Cortex-A520, Cortex-A720 and Cortex-X4 CPUs.
9696

97+
* Neoverse-N2 was incorrectly marked as an Armv8.5a core. This has been
98+
changed to an Armv9.0a core. However, crypto options are not enabled
99+
by default for Armv9 cores, so `-mcpu=neoverse-n2+crypto` is now required
100+
to enable crypto for this core. As far as the compiler is concerned,
101+
Armv9.0a has the same features enabled as Armv8.5a, with the exception
102+
of crypto.
103+
97104
Changes to the AMDGPU Backend
98105
-----------------------------
99106

llvm/include/llvm/TargetParser/AArch64TargetParser.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -536,10 +536,9 @@ inline constexpr CpuInfo CpuInfos[] = {
536536
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_DOTPROD,
537537
AArch64::AEK_FP16, AArch64::AEK_PROFILE, AArch64::AEK_RCPC,
538538
AArch64::AEK_SSBS}))},
539-
{"neoverse-n2", ARMV8_5A,
539+
{"neoverse-n2", ARMV9A,
540540
(AArch64::ExtensionBitset(
541-
{AArch64::AEK_AES, AArch64::AEK_SHA2, AArch64::AEK_SHA3,
542-
AArch64::AEK_SM4, AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
541+
{AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
543542
AArch64::AEK_FP16, AArch64::AEK_I8MM, AArch64::AEK_MTE,
544543
AArch64::AEK_SB, AArch64::AEK_SSBS, AArch64::AEK_SVE,
545544
AArch64::AEK_SVE2, AArch64::AEK_SVE2BITPERM}))},

llvm/include/llvm/TargetParser/ARMTargetParser.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ ARM_CPU_NAME("cortex-x1c", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
340340
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
341341
ARM_CPU_NAME("neoverse-n1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
342342
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
343-
ARM_CPU_NAME("neoverse-n2", ARMV8_5A, FK_CRYPTO_NEON_FP_ARMV8, false,
343+
ARM_CPU_NAME("neoverse-n2", ARMV9A, FK_NEON_FP_ARMV8, false,
344344
(ARM::AEK_BF16 | ARM::AEK_DOTPROD | ARM::AEK_I8MM | ARM::AEK_RAS |
345345
ARM::AEK_SB))
346346
ARM_CPU_NAME("neoverse-v1", ARMV8_4A, FK_CRYPTO_NEON_FP_ARMV8, false,

llvm/lib/Target/AArch64/AArch64.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1480,9 +1480,9 @@ def ProcessorFeatures {
14801480
FeatureFPARMv8, FeatureFullFP16, FeatureNEON,
14811481
FeatureRCPC, FeatureSPE, FeatureSSBS,
14821482
FeaturePerfMon];
1483-
list<SubtargetFeature> NeoverseN2 = [HasV8_5aOps, FeatureBF16, FeatureETE,
1483+
list<SubtargetFeature> NeoverseN2 = [HasV9_0aOps, FeatureBF16, FeatureETE,
14841484
FeatureMatMulInt8, FeatureMTE, FeatureSVE2,
1485-
FeatureSVE2BitPerm, FeatureTRBE, FeatureCrypto,
1485+
FeatureSVE2BitPerm, FeatureTRBE,
14861486
FeaturePerfMon];
14871487
list<SubtargetFeature> Neoverse512TVB = [HasV8_4aOps, FeatureBF16, FeatureCacheDeepPersist,
14881488
FeatureCrypto, FeatureFPARMv8, FeatureFP16FML,

llvm/lib/Target/ARM/ARM.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1662,7 +1662,7 @@ def : ProcNoItin<"neoverse-n1", [ARMv82a,
16621662
FeatureCRC,
16631663
FeatureDotProd]>;
16641664

1665-
def : ProcNoItin<"neoverse-n2", [ARMv85a,
1665+
def : ProcNoItin<"neoverse-n2", [ARMv9a,
16661666
FeatureBF16,
16671667
FeatureMatMulInt8]>;
16681668

llvm/test/CodeGen/AArch64/misched-fusion-aes.ll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
; RUN: llc %s -o - -mtriple=aarch64-unknown -mcpu=cortex-x1 | FileCheck %s
1313
; RUN: llc %s -o - -mtriple=aarch64-unknown -mcpu=neoverse-e1 | FileCheck %s
1414
; RUN: llc %s -o - -mtriple=aarch64-unknown -mcpu=neoverse-n1 | FileCheck %s
15-
; RUN: llc %s -o - -mtriple=aarch64-unknown -mcpu=neoverse-n2 | FileCheck %s
1615
; RUN: llc %s -o - -mtriple=aarch64-unknown -mcpu=neoverse-v1 | FileCheck %s
1716
; RUN: llc %s -o - -mtriple=aarch64-unknown -mcpu=neoverse-512tvb | FileCheck %s
1817
; RUN: llc %s -o - -mtriple=aarch64-unknown -mcpu=exynos-m3 | FileCheck %s

llvm/unittests/TargetParser/TargetParserTest.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -416,13 +416,13 @@ INSTANTIATE_TEST_SUITE_P(
416416
ARM::AEK_HWDIVTHUMB | ARM::AEK_DSP |
417417
ARM::AEK_FP16 | ARM::AEK_RAS | ARM::AEK_DOTPROD,
418418
"8.2-A"),
419-
ARMCPUTestParams<uint64_t>("neoverse-n2", "armv8.5-a", "crypto-neon-fp-armv8",
419+
ARMCPUTestParams<uint64_t>("neoverse-n2", "armv9-a", "neon-fp-armv8",
420420
ARM::AEK_CRC | ARM::AEK_HWDIVTHUMB |
421421
ARM::AEK_HWDIVARM | ARM::AEK_MP | ARM::AEK_SEC |
422422
ARM::AEK_VIRT | ARM::AEK_DSP | ARM::AEK_BF16 |
423423
ARM::AEK_DOTPROD | ARM::AEK_RAS | ARM::AEK_I8MM |
424424
ARM::AEK_SB,
425-
"8.5-A"),
425+
"9-A"),
426426
ARMCPUTestParams<uint64_t>("neoverse-v1", "armv8.4-a", "crypto-neon-fp-armv8",
427427
ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
428428
ARM::AEK_HWDIVARM | ARM::AEK_HWDIVTHUMB |
@@ -1521,11 +1521,9 @@ INSTANTIATE_TEST_SUITE_P(
15211521
AArch64::AEK_SSBS})),
15221522
"8.2-A"),
15231523
ARMCPUTestParams<AArch64::ExtensionBitset>(
1524-
"neoverse-n2", "armv8.5-a", "crypto-neon-fp-armv8",
1524+
"neoverse-n2", "armv9-a", "crypto-neon-fp-armv8",
15251525
(AArch64::ExtensionBitset(
1526-
{AArch64::AEK_CRC, AArch64::AEK_AES,
1527-
AArch64::AEK_SHA2, AArch64::AEK_SHA3,
1528-
AArch64::AEK_SM4, AArch64::AEK_FP,
1526+
{AArch64::AEK_CRC, AArch64::AEK_FP,
15291527
AArch64::AEK_SIMD, AArch64::AEK_FP16,
15301528
AArch64::AEK_RAS, AArch64::AEK_LSE,
15311529
AArch64::AEK_SVE, AArch64::AEK_DOTPROD,

0 commit comments

Comments
 (0)