This is an archive of the discontinued LLVM Phabricator instance.

[AArch64] Add some missing Neoverse features
ClosedPublic

Authored by SjoerdMeijer on Feb 17 2021, 6:53 AM.

Details

Summary

This enables the post RA scheduler and AES fusion for the Neoverse cores.

Diff Detail

Event Timeline

SjoerdMeijer created this revision.Feb 17 2021, 6:53 AM
SjoerdMeijer requested review of this revision.Feb 17 2021, 6:53 AM
Herald added a project: Restricted Project. · View Herald TranscriptFeb 17 2021, 6:53 AM
dmgreen added inline comments.Feb 18 2021, 2:52 AM
llvm/lib/Target/AArch64/AArch64.td
1016

If this is adding crypto... shouldn't there be a test for that? The one in TargetParserTest?

My understanding of FeaturePostRAScheduler was that is was better/more important for in-order cores than out of order. Can you enable it for the A55 too (and UseAA)?

My understanding of FeaturePostRAScheduler was that is was better/more important for in-order cores than out of order. Can you enable it for the A55 too (and UseAA)?

While I probably agree with that, it doesn't do any harm, and can do some good. Another way to look at it is a consistency fix because other big(ger) cores have this too.
I am surprised about the A55, I thought I had fixed that!

SjoerdMeijer added inline comments.Feb 18 2021, 4:58 AM
llvm/lib/Target/AArch64/AArch64.td
1016

From llvm/unittests/Support/TargetParserTest.cpp:

ARMCPUTestParams("neoverse-n2", "armv8.5-a", "crypto-neon-fp-armv8",
                  AArch64::AEK_CRC | AArch64::AEK_CRYPTO |
                      AArch64::AEK_FP | AArch64::AEK_SIMD |
                      AArch64::AEK_FP16 | AArch64::AEK_RAS |
                      AArch64::AEK_LSE | AArch64::AEK_SVE |
                      AArch64::AEK_DOTPROD | AArch64::AEK_RCPC |
                      AArch64::AEK_RDM | AArch64::AEK_MTE |
                      AArch64::AEK_SSBS | AArch64::AEK_SB |
                      AArch64::AEK_SVE2 | AArch64::AEK_SVE2BITPERM |
                      AArch64::AEK_BF16 | AArch64::AEK_I8MM,
                  "8.5-A"),

And from llvm/include/llvm/Support/AArch64TargetParser.def:

AARCH64_CPU_NAME("neoverse-n2", ARMV8_5A, FK_CRYPTO_NEON_FP_ARMV8, false,

So, that all seems alright from the front-end and driver point of view, although looks like I need to add a driver test.

Thanks Dave, comments addressed.

dmgreen accepted this revision.Feb 19 2021, 12:13 AM

OK sure. Lets do these things.

LGTM.

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

+ neoverse-v1

This revision is now accepted and ready to land.Feb 19 2021, 12:13 AM
This revision was automatically updated to reflect the committed changes.
Herald added a project: Restricted Project. · View Herald TranscriptFeb 19 2021, 1:18 AM
Herald added a subscriber: cfe-commits. · View Herald Transcript