Skip to content

Commit 147dc81

Browse files
authored
[ARM][AArch64] Enable FEAT_FHM for Arm Neoverse N2 (llvm#82613)
Correct an issue with Arm Neoverse N2 after it was changed to a v9a core in change f576cbe: * FEAT_FHM should be enabled for this core.
1 parent 962f3e4 commit 147dc81

File tree

5 files changed

+10
-8
lines changed

5 files changed

+10
-8
lines changed

llvm/include/llvm/TargetParser/AArch64TargetParser.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -658,8 +658,8 @@ inline constexpr CpuInfo CpuInfos[] = {
658658
AArch64::AEK_SSBS}))},
659659
{"neoverse-n2", ARMV9A,
660660
(AArch64::ExtensionBitset(
661-
{AArch64::AEK_BF16, AArch64::AEK_DOTPROD,
662-
AArch64::AEK_FP16, AArch64::AEK_I8MM, AArch64::AEK_MTE,
661+
{AArch64::AEK_BF16, AArch64::AEK_DOTPROD, AArch64::AEK_FP16,
662+
AArch64::AEK_FP16FML, AArch64::AEK_I8MM, AArch64::AEK_MTE,
663663
AArch64::AEK_SB, AArch64::AEK_SSBS, AArch64::AEK_SVE,
664664
AArch64::AEK_SVE2, AArch64::AEK_SVE2BITPERM}))},
665665
{"neoverse-512tvb", ARMV8_4A,

llvm/include/llvm/TargetParser/ARMTargetParser.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,8 @@ ARM_CPU_NAME("cortex-x1c", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
346346
ARM_CPU_NAME("neoverse-n1", ARMV8_2A, FK_CRYPTO_NEON_FP_ARMV8, false,
347347
(ARM::AEK_FP16 | ARM::AEK_DOTPROD))
348348
ARM_CPU_NAME("neoverse-n2", ARMV9A, FK_NEON_FP_ARMV8, false,
349-
(ARM::AEK_BF16 | ARM::AEK_DOTPROD | ARM::AEK_I8MM | ARM::AEK_RAS |
350-
ARM::AEK_SB))
349+
(ARM::AEK_BF16 | ARM::AEK_DOTPROD | ARM::AEK_FP16FML |
350+
ARM::AEK_I8MM | ARM::AEK_RAS | ARM::AEK_SB ))
351351
ARM_CPU_NAME("neoverse-v1", ARMV8_4A, FK_CRYPTO_NEON_FP_ARMV8, false,
352352
(ARM::AEK_RAS | ARM::AEK_FP16 | ARM::AEK_BF16 | ARM::AEK_DOTPROD))
353353
ARM_CPU_NAME("cyclone", ARMV8A, FK_CRYPTO_NEON_FP_ARMV8, false, ARM::AEK_CRC)

llvm/lib/Target/AArch64/AArch64.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1514,7 +1514,7 @@ def ProcessorFeatures {
15141514
FeatureFPARMv8, FeatureFullFP16, FeatureNEON,
15151515
FeatureRCPC, FeatureSPE, FeatureSSBS,
15161516
FeaturePerfMon];
1517-
list<SubtargetFeature> NeoverseN2 = [HasV9_0aOps, FeatureBF16, FeatureETE,
1517+
list<SubtargetFeature> NeoverseN2 = [HasV9_0aOps, FeatureBF16, FeatureETE, FeatureFP16FML,
15181518
FeatureMatMulInt8, FeatureMTE, FeatureSVE2,
15191519
FeatureSVE2BitPerm, FeatureTRBE,
15201520
FeaturePerfMon];

llvm/lib/Target/ARM/ARM.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1682,6 +1682,7 @@ def : ProcNoItin<"neoverse-n1", [ARMv82a,
16821682

16831683
def : ProcNoItin<"neoverse-n2", [ARMv9a,
16841684
FeatureBF16,
1685+
FeatureFP16FML,
16851686
FeatureMatMulInt8]>;
16861687

16871688
def : ProcessorModel<"cyclone", SwiftModel, [ARMv8a, ProcSwift,

llvm/unittests/TargetParser/TargetParserTest.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ INSTANTIATE_TEST_SUITE_P(
439439
ARM::AEK_HWDIVARM | ARM::AEK_MP | ARM::AEK_SEC |
440440
ARM::AEK_VIRT | ARM::AEK_DSP | ARM::AEK_BF16 |
441441
ARM::AEK_DOTPROD | ARM::AEK_RAS | ARM::AEK_I8MM |
442-
ARM::AEK_SB,
442+
ARM::AEK_FP16FML | ARM::AEK_SB,
443443
"9-A"),
444444
ARMCPUTestParams<uint64_t>("neoverse-v1", "armv8.4-a", "crypto-neon-fp-armv8",
445445
ARM::AEK_SEC | ARM::AEK_MP | ARM::AEK_VIRT |
@@ -1575,8 +1575,9 @@ INSTANTIATE_TEST_SUITE_P(
15751575
AArch64::AEK_SB, AArch64::AEK_SVE2,
15761576
AArch64::AEK_SVE2BITPERM, AArch64::AEK_BF16,
15771577
AArch64::AEK_I8MM, AArch64::AEK_JSCVT,
1578-
AArch64::AEK_FCMA, AArch64::AEK_PAUTH})),
1579-
"8.5-A"),
1578+
AArch64::AEK_FCMA, AArch64::AEK_PAUTH,
1579+
AArch64::AEK_FP16FML})),
1580+
"9-A"),
15801581
ARMCPUTestParams<AArch64::ExtensionBitset>(
15811582
"ampere1", "armv8.6-a", "crypto-neon-fp-armv8",
15821583
(AArch64::ExtensionBitset(

0 commit comments

Comments
 (0)