Skip to content

Conversation

@jthackray
Copy link
Contributor

The ArmARM says:

    "In an Armv9.4 implementation, if FEAT_SVE2 is implemented,
     FEAT_SVE2p1 is implemented."

Since FEAT_SVE2 is already enabled for Armv9.0-A and later, then FEAT_SVE2p1 should also be enabled by default.

The ArmARM says:
```
    "In an Armv9.4 implementation, if FEAT_SVE2 is implemented,
     FEAT_SVE2p1 is implemented."
```
Since FEAT_SVE2 is already enabled for Armv9.0-A and later,
then FEAT_SVE2p1 should also be enabled by default.
@llvmbot llvmbot added clang Clang issues not falling into any other category backend:AArch64 clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' labels Dec 20, 2024
@llvmbot
Copy link
Member

llvmbot commented Dec 20, 2024

@llvm/pr-subscribers-clang
@llvm/pr-subscribers-clang-driver

@llvm/pr-subscribers-backend-aarch64

Author: Jonathan Thackray (jthackray)

Changes

The ArmARM says:

    "In an Armv9.4 implementation, if FEAT_SVE2 is implemented,
     FEAT_SVE2p1 is implemented."

Since FEAT_SVE2 is already enabled for Armv9.0-A and later, then FEAT_SVE2p1 should also be enabled by default.


Full diff: https://github.com/llvm/llvm-project/pull/120753.diff

3 Files Affected:

  • (modified) clang/test/Driver/print-enabled-extensions/aarch64-armv9.4-a.c (+1)
  • (modified) clang/test/Driver/print-enabled-extensions/aarch64-armv9.5-a.c (+1)
  • (modified) llvm/lib/Target/AArch64/AArch64Features.td (+1-1)
diff --git a/clang/test/Driver/print-enabled-extensions/aarch64-armv9.4-a.c b/clang/test/Driver/print-enabled-extensions/aarch64-armv9.4-a.c
index 0032c926c22d96..1cfda6c996b9e3 100644
--- a/clang/test/Driver/print-enabled-extensions/aarch64-armv9.4-a.c
+++ b/clang/test/Driver/print-enabled-extensions/aarch64-armv9.4-a.c
@@ -58,6 +58,7 @@
 // CHECK-NEXT:     FEAT_SSBS, FEAT_SSBS2                                  Enable Speculative Store Bypass Safe bit
 // CHECK-NEXT:     FEAT_SVE                                               Enable Scalable Vector Extension (SVE) instructions
 // CHECK-NEXT:     FEAT_SVE2                                              Enable Scalable Vector Extension 2 (SVE2) instructions
+// CHECK-NEXT:     FEAT_SVE2p1                                            Enable Scalable Vector Extension 2.1 instructions
 // CHECK-NEXT:     FEAT_TLBIOS, FEAT_TLBIRANGE                            Enable Armv8.4-A TLB Range and Maintenance instructions
 // CHECK-NEXT:     FEAT_TRBE                                              Enable Trace Buffer Extension
 // CHECK-NEXT:     FEAT_TRF                                               Enable Armv8.4-A Trace extension
diff --git a/clang/test/Driver/print-enabled-extensions/aarch64-armv9.5-a.c b/clang/test/Driver/print-enabled-extensions/aarch64-armv9.5-a.c
index be24bd0bbddb68..76c8b34a56b75b 100644
--- a/clang/test/Driver/print-enabled-extensions/aarch64-armv9.5-a.c
+++ b/clang/test/Driver/print-enabled-extensions/aarch64-armv9.5-a.c
@@ -61,6 +61,7 @@
 // CHECK-NEXT:     FEAT_SSBS, FEAT_SSBS2                                  Enable Speculative Store Bypass Safe bit
 // CHECK-NEXT:     FEAT_SVE                                               Enable Scalable Vector Extension (SVE) instructions
 // CHECK-NEXT:     FEAT_SVE2                                              Enable Scalable Vector Extension 2 (SVE2) instructions
+// CHECK-NEXT:     FEAT_SVE2p1                                            Enable Scalable Vector Extension 2.1 instructions
 // CHECK-NEXT:     FEAT_TLBIOS, FEAT_TLBIRANGE                            Enable Armv8.4-A TLB Range and Maintenance instructions
 // CHECK-NEXT:     FEAT_TRBE                                              Enable Trace Buffer Extension
 // CHECK-NEXT:     FEAT_TRF                                               Enable Armv8.4-A Trace extension
diff --git a/llvm/lib/Target/AArch64/AArch64Features.td b/llvm/lib/Target/AArch64/AArch64Features.td
index 3a6bef81f4a0d8..96473e55f01d8e 100644
--- a/llvm/lib/Target/AArch64/AArch64Features.td
+++ b/llvm/lib/Target/AArch64/AArch64Features.td
@@ -872,7 +872,7 @@ def HasV9_3aOps : Architecture64<9, 3, "a", "v9.3a",
   [HasV8_8aOps, HasV9_2aOps],
   !listconcat(HasV9_2aOps.DefaultExts, [FeatureMOPS, FeatureHBC])>;
 def HasV9_4aOps : Architecture64<9, 4, "a", "v9.4a",
-  [HasV8_9aOps, HasV9_3aOps],
+  [HasV8_9aOps, HasV9_3aOps, FeatureSVE2p1],
   !listconcat(HasV9_3aOps.DefaultExts, [FeatureSPECRES2, FeatureCSSC,
     FeatureRASv2])>;
 def HasV9_5aOps : Architecture64<9, 5, "a", "v9.5a",

@jthackray
Copy link
Contributor Author

Note that we already have this code downstream for AC6.24:

  [HasV8_9aOps, HasV9_3aOps, FeatureSVE2p1], // downstream diff

but for some reason, it never was upstreamed.

Copy link
Contributor

@tmatheson-arm tmatheson-arm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense to me.

@tmatheson-arm
Copy link
Contributor

Actually this is being added as a mandatory dependency of 9.4, should it not be added as one of the default features instead?

@jthackray
Copy link
Contributor Author

Actually this is being added as a mandatory dependency of 9.4, should it not be added as one of the default features instead?

Good point. I'll amend.

@jthackray jthackray requested a review from rgwott December 20, 2024 16:50
@jthackray jthackray merged commit 952c8d3 into llvm:main Dec 20, 2024
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backend:AArch64 clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' clang Clang issues not falling into any other category

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants