aboutsummaryrefslogtreecommitdiff
path: root/gas/doc
diff options
context:
space:
mode:
authorAndrew Carlotti <andrew.carlotti@arm.com>2025-01-31 05:07:30 +0000
committerAndrew Carlotti <andrew.carlotti@arm.com>2025-01-31 15:16:44 +0000
commit71e59ebefc25c50465e3fe5943a15c5da9120c8c (patch)
tree60c3d6c27ffd6b8134019dab3df60fd82464c61f /gas/doc
parent99b90c46110df304b9941dc1a2b38ec6a15774fc (diff)
downloadbinutils-71e59ebefc25c50465e3fe5943a15c5da9120c8c.zip
binutils-71e59ebefc25c50465e3fe5943a15c5da9120c8c.tar.gz
binutils-71e59ebefc25c50465e3fe5943a15c5da9120c8c.tar.bz2
aarch64: Support +sme+nosve permissively
There is inconsistency regarding whether or not +sme implies +sve2 and whether +nosve2 implies +nosme. In particular, GCC 14 assumes the dependency exists, and canonicalises target strings accordingly, whereas LLVM treats the features as independent. This patch removes the positive implication while retaining the negative implication. This is the more permissive choice in each case, and allows us to support target strings written with either interpretation in mind. This reduces our ability to detect invalid instructions, but we already can't rely on this detection because gas doesn't know whether functions might be executed in streaming mode and/or non-streaming mode. The aarch64_feature_enable_set change is functionally redundant within this patch. It is included because the longer term intention is to instead remove the workaround in aarch64_parse_features, once the internal feature checks have been modified to support having both AARCH64_FEATURE_SME set and AARCH64_FEATURE_SVE unset. Similarly, the dependency from +sme to +fp16 is currently redundant, but this redundancy relies upon an incorrect dependency from +fcma to +fp16. This can be fixed in the future, but it might require modifying internal feature checks for a few FCMA instructions, so it's left unchanged for now.
Diffstat (limited to 'gas/doc')
-rw-r--r--gas/doc/c-aarch64.texi4
1 files changed, 2 insertions, 2 deletions
diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi
index 1dbefde..10888d1 100644
--- a/gas/doc/c-aarch64.texi
+++ b/gas/doc/c-aarch64.texi
@@ -267,8 +267,8 @@ automatically cause those extensions to be disabled.
@tab Enable Advanced SIMD extensions.
@item @code{sm4} @tab @code{simd}
@tab Enable the SM3 and SM4 cryptographic extensions.
-@item @code{sme} @tab @code{sve2}, @code{bf16}
- @tab Enable the Scalable Matrix Extension.
+@item @code{sme} @tab @code{bf16}, @code{fp16}, @code{fcma}
+ @tab Enable the Scalable Matrix Extension. This will also enable @code{sve2}, but disabling @code{sve2} does not disable @code{sme}.
@item @code{sme-b16b16} @tab @code{sme2}, @code{sve-b16b16}
@tab Enable SME ZA-targeting non-widening BFloat16 instructions.
@item @code{sme-f8f16} @tab @code{sme2}, @code{fp8}