diff options
author | Andrew Carlotti <andrew.carlotti@arm.com> | 2025-01-30 19:14:46 +0000 |
---|---|---|
committer | Andrew Carlotti <andrew.carlotti@arm.com> | 2025-01-31 15:16:44 +0000 |
commit | 99b90c46110df304b9941dc1a2b38ec6a15774fc (patch) | |
tree | 4fab933dc3fa209ae044d56e5098ee154f9f12c2 | |
parent | 0fad7627cf886c5d93c526b2b9d203b3e51e8513 (diff) | |
download | binutils-99b90c46110df304b9941dc1a2b38ec6a15774fc.zip binutils-99b90c46110df304b9941dc1a2b38ec6a15774fc.tar.gz binutils-99b90c46110df304b9941dc1a2b38ec6a15774fc.tar.bz2 |
aarch64: Fix fp8 feature dependencies
We agreed with LLVM that we shouldn't enforce the architectural
dependencies between fp8 muliplication features, so remove them.
Additionally, fix a typo in the gating for FEAT_SME_F8F16 instructions,
which were mistakenly gated by +sme-f8f32 instead. Until now this
mistake had been masked by the dependency between the features.
-rw-r--r-- | gas/config/tc-aarch64.c | 10 | ||||
-rw-r--r-- | gas/doc/c-aarch64.texi | 16 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/fp8-mul-illegal.d | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/fp8-sve-mul-illegal.d | 2 | ||||
-rw-r--r-- | opcodes/aarch64-tbl.h | 2 |
5 files changed, 16 insertions, 16 deletions
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index b79af40..b40886d 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -10751,18 +10751,18 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = { {"brbe", AARCH64_FEATURE (BRBE), AARCH64_NO_FEATURES}, {"sme-lutv2", AARCH64_FEATURE (SME_LUTv2), AARCH64_FEATURE (SME2)}, {"fp8fma", AARCH64_FEATURE (FP8FMA), AARCH64_FEATURE (FP8)}, - {"fp8dot4", AARCH64_FEATURE (FP8DOT4), AARCH64_FEATURE (FP8FMA)}, - {"fp8dot2", AARCH64_FEATURE (FP8DOT2), AARCH64_FEATURE (FP8DOT4)}, + {"fp8dot4", AARCH64_FEATURE (FP8DOT4), AARCH64_FEATURE (FP8)}, + {"fp8dot2", AARCH64_FEATURE (FP8DOT2), AARCH64_FEATURE (FP8)}, {"ssve-fp8fma", AARCH64_FEATURE (SSVE_FP8FMA), AARCH64_FEATURES (2, FP8, SME2)}, {"ssve-fp8dot4", AARCH64_FEATURE (SSVE_FP8DOT4), - AARCH64_FEATURE (SSVE_FP8FMA)}, + AARCH64_FEATURES (2, FP8, SME2)}, {"ssve-fp8dot2", AARCH64_FEATURE (SSVE_FP8DOT2), - AARCH64_FEATURE (SSVE_FP8DOT4)}, + AARCH64_FEATURES (2, FP8, SME2)}, {"sme-f8f32", AARCH64_FEATURE (SME_F8F32), AARCH64_FEATURES (2, FP8, SME2)}, {"sme-f8f16", AARCH64_FEATURE (SME_F8F16), - AARCH64_FEATURE (SME_F8F32)}, + AARCH64_FEATURES (2, FP8, SME2)}, {"sme-f16f16", AARCH64_FEATURE (SME_F16F16), AARCH64_FEATURE (SME2)}, {"sme-b16b16", AARCH64_FEATURE (SME_B16B16), AARCH64_FEATURES (2, SVE_B16B16, SME2)}, diff --git a/gas/doc/c-aarch64.texi b/gas/doc/c-aarch64.texi index 5d0aac8..1dbefde 100644 --- a/gas/doc/c-aarch64.texi +++ b/gas/doc/c-aarch64.texi @@ -195,9 +195,9 @@ automatically cause those extensions to be disabled. @tab Enable floating-point extensions. @item @code{fp8} @tab @tab Enable the Floating Point 8 (FP8) extension. -@item @code{fp8dot2} @tab @code{fp8dot4} +@item @code{fp8dot2} @tab @code{fp8} @tab Enable the FP8 2-way dot product instructions. -@item @code{fp8dot4} @tab @code{fp8fma} +@item @code{fp8dot4} @tab @code{fp8} @tab Enable the FP8 4-way dot product instructions. @item @code{fp8fma} @tab @code{fp8} @tab Enable the FP8 FMA instructions. @@ -271,7 +271,7 @@ automatically cause those extensions to be disabled. @tab Enable the Scalable Matrix Extension. @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{sme-f8f32} +@item @code{sme-f8f16} @tab @code{sme2}, @code{fp8} @tab Enable the SME F8F16 Extension. @item @code{sme-f8f32} @tab @code{sme2}, @code{fp8} @tab Enable the SME F8F32 Extension. @@ -287,12 +287,12 @@ automatically cause those extensions to be disabled. @tab Enable SME2.1. @item @code{ssbs} @tab @tab Enable Speculative Store Bypassing Safe state read and write. -@item @code{ssve-fp8dot2} @tab @code{ssve-fp8dot4} - @tab Enable the Streaming SVE FP8 2-way dot product instructions. These can also be enabled using @code{+fp8dot2+sme2}. -@item @code{ssve-fp8dot4} @tab @code{ssve-fp8fma} - @tab Enable the Streaming SVE FP8 4-way dot product instructions. These can also be enabled using @code{+fp8dot4+sme2}. +@item @code{ssve-fp8dot2} @tab @code{sme2}, @code{fp8} + @tab Enable the Streaming SVE FP8 2-way dot product instructions. +@item @code{ssve-fp8dot4} @tab @code{sme2}, @code{fp8} + @tab Enable the Streaming SVE FP8 4-way dot product instructions. @item @code{ssve-fp8fma} @tab @code{sme2}, @code{fp8} - @tab Enable the Streaming SVE FP8 FMA instructions. These can also be enabled using @code{+fp8fma+sme2}. + @tab Enable the Streaming SVE FP8 FMA instructions. @item @code{sve} @tab @code{fcma} @tab Enable the Scalable Vector Extension. @item @code{sve-b16b16} @tab diff --git a/gas/testsuite/gas/aarch64/fp8-mul-illegal.d b/gas/testsuite/gas/aarch64/fp8-mul-illegal.d index 1dac59a..2a2224b 100644 --- a/gas/testsuite/gas/aarch64/fp8-mul-illegal.d +++ b/gas/testsuite/gas/aarch64/fp8-mul-illegal.d @@ -1,2 +1,2 @@ -#as: -march=armv8-a+fp8dot2 +#as: -march=armv8-a+fp8dot2+fp8dot4+fp8fma #error_output: fp8-mul-illegal.l diff --git a/gas/testsuite/gas/aarch64/fp8-sve-mul-illegal.d b/gas/testsuite/gas/aarch64/fp8-sve-mul-illegal.d index f1d98ee..45dcca3 100644 --- a/gas/testsuite/gas/aarch64/fp8-sve-mul-illegal.d +++ b/gas/testsuite/gas/aarch64/fp8-sve-mul-illegal.d @@ -1,2 +1,2 @@ -#as: -march=armv8-a+sve2+fp8dot2 +#as: -march=armv8-a+sve2+fp8dot2+fp8dot4+fp8fma #error_output: fp8-sve-mul-illegal.l diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 70cd3ff..0d42be3 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -2858,7 +2858,7 @@ static const aarch64_feature_set aarch64_feature_fp8dot2_sve = static const aarch64_feature_set aarch64_feature_sme_f8f32 = AARCH64_FEATURES (2, SME_F8F32, SME2); static const aarch64_feature_set aarch64_feature_sme_f8f16 = - AARCH64_FEATURES (2, SME_F8F32, SME2); + AARCH64_FEATURES (2, SME_F8F16, SME2); static const aarch64_feature_set aarch64_feature_sme_f16f16_f8f16 = AARCH64_FEATURES (2, SME_F16F16_F8F16, SME2); static const aarch64_feature_set aarch64_feature_sme_f16f16 = |