https://gcc.gnu.org/g:299a8e2dc667e795991bc439d2cad5ea5bd379e2
commit r15-7480-g299a8e2dc667e795991bc439d2cad5ea5bd379e2 Author: Andrew Carlotti <andrew.carlo...@arm.com> Date: Wed Feb 5 17:27:56 2025 +0000 aarch64: Update fp8 dependencies We agreed with LLVM developers to not enforce the architectural dependencies between fp8 multiplication features, and they have already been removed from LLVM and Binutils. Remove them from GCC as well. gcc/ChangeLog: * config/aarch64/aarch64-option-extensions.def (SSVE_FP8FMA): Adjust formatting. (FP8DOT4): Replace FP8FMA dependency with FP8. (SSVE_FP8DOT4): Replace SSVE_FP8FMA dependency with SME2+FP8. (FP8DOT2): Replace FP8DOT4 dependency with FP8. (SSVE_FP8DOT2): Replace SSVE_FP8DOT4 dependency with SME2+FP8. gcc/testsuite/ChangeLog: * gcc.target/aarch64/pragma_cpp_predefs_4.c: Adjust expected defines. * gcc.target/aarch64/simd/vmla_lane_indices_1.c: Modify target pragmas. * gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_1.c: Ditto. * gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_lane_group_selection_1.c: Ditto. * gcc.target/aarch64/sve2/acle/asm/dot_lane_mf8.c: Ditto. * gcc.target/aarch64/sve2/acle/asm/dot_mf8.c: Ditto. Diff: --- gcc/config/aarch64/aarch64-option-extensions.def | 10 +++++----- gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c | 6 +++--- gcc/testsuite/gcc.target/aarch64/simd/vmla_lane_indices_1.c | 2 +- .../gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_1.c | 2 +- .../acle/general-c/ternary_mfloat8_lane_group_selection_1.c | 2 +- gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_mf8.c | 4 ++-- gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_mf8.c | 4 ++-- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/gcc/config/aarch64/aarch64-option-extensions.def b/gcc/config/aarch64/aarch64-option-extensions.def index cc42bd518dca..aa8d315c240f 100644 --- a/gcc/config/aarch64/aarch64-option-extensions.def +++ b/gcc/config/aarch64/aarch64-option-extensions.def @@ -261,17 +261,17 @@ AARCH64_OPT_EXTENSION("fp8", FP8, (SIMD), (), (), "f8cvt") AARCH64_OPT_EXTENSION("fp8fma", FP8FMA, (FP8), (), (), "f8fma") -AARCH64_OPT_EXTENSION("ssve-fp8fma", SSVE_FP8FMA, (SME2,FP8), (), (), "smesf8fma") +AARCH64_OPT_EXTENSION("ssve-fp8fma", SSVE_FP8FMA, (SME2, FP8), (), (), "smesf8fma") AARCH64_OPT_EXTENSION("faminmax", FAMINMAX, (SIMD), (), (), "faminmax") -AARCH64_OPT_EXTENSION("fp8dot4", FP8DOT4, (FP8FMA), (), (), "f8dp4") +AARCH64_OPT_EXTENSION("fp8dot4", FP8DOT4, (FP8), (), (), "f8dp4") -AARCH64_OPT_EXTENSION("ssve-fp8dot4", SSVE_FP8DOT4, (SSVE_FP8FMA), (), (), "smesf8dp4") +AARCH64_OPT_EXTENSION("ssve-fp8dot4", SSVE_FP8DOT4, (SME2, FP8), (), (), "smesf8dp4") -AARCH64_OPT_EXTENSION("fp8dot2", FP8DOT2, (FP8DOT4), (), (), "f8dp2") +AARCH64_OPT_EXTENSION("fp8dot2", FP8DOT2, (FP8), (), (), "f8dp2") -AARCH64_OPT_EXTENSION("ssve-fp8dot2", SSVE_FP8DOT2, (SSVE_FP8DOT4), (), (), "smesf8dp2") +AARCH64_OPT_EXTENSION("ssve-fp8dot2", SSVE_FP8DOT2, (SME2, FP8), (), (), "smesf8dp2") AARCH64_OPT_EXTENSION("lut", LUT, (SIMD), (), (), "lut") diff --git a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c index 0dcfbec05bad..97d68b94512e 100644 --- a/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c +++ b/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c @@ -292,7 +292,7 @@ #ifndef __ARM_FEATURE_FP8 #error Foo #endif -#ifndef __ARM_FEATURE_FP8FMA +#ifdef __ARM_FEATURE_FP8FMA #error Foo #endif #ifndef __ARM_FEATURE_FP8DOT4 @@ -306,10 +306,10 @@ #ifndef __ARM_FEATURE_FP8 #error Foo #endif -#ifndef __ARM_FEATURE_FP8FMA +#ifdef __ARM_FEATURE_FP8FMA #error Foo #endif -#ifndef __ARM_FEATURE_FP8DOT4 +#ifdef __ARM_FEATURE_FP8DOT4 #error Foo #endif #ifndef __ARM_FEATURE_FP8DOT2 diff --git a/gcc/testsuite/gcc.target/aarch64/simd/vmla_lane_indices_1.c b/gcc/testsuite/gcc.target/aarch64/simd/vmla_lane_indices_1.c index d1a69f4ba541..739ff4c6a75a 100644 --- a/gcc/testsuite/gcc.target/aarch64/simd/vmla_lane_indices_1.c +++ b/gcc/testsuite/gcc.target/aarch64/simd/vmla_lane_indices_1.c @@ -2,7 +2,7 @@ #include "arm_neon.h" -#pragma GCC target "+fp8dot4+fp8dot2" +#pragma GCC target "+fp8fma" void test(float16x4_t f16, float16x8_t f16q, float32x2_t f32, diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_1.c index 9ad789a8ad2c..fa0df46db226 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_1.c @@ -2,7 +2,7 @@ #include <arm_sve.h> -#pragma GCC target ("arch=armv8.2-a+sve2+fp8dot2") +#pragma GCC target ("arch=armv8.2-a+sve2+fp8fma+fp8dot4+fp8dot2") void test (svfloat16_t f16, svmfloat8_t f8, fpm_t fpm, diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_lane_group_selection_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_lane_group_selection_1.c index dec00e3abf15..f6fce2f5c40f 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_lane_group_selection_1.c +++ b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_lane_group_selection_1.c @@ -2,7 +2,7 @@ #include <arm_sve.h> -#pragma GCC target ("arch=armv8.2-a+ssve-fp8fma+ssve-fp8dot2") +#pragma GCC target ("arch=armv8.2-a+ssve-fp8fma+ssve-fp8dot4+ssve-fp8dot2") void f1 (svfloat16_t f16, svmfloat8_t f8, fpm_t fpm, diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_mf8.c b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_mf8.c index 83fe5cff5d3c..ce16f8b26725 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_mf8.c +++ b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_mf8.c @@ -4,9 +4,9 @@ #include "test_sve_acle.h" -#pragma GCC target "+fp8dot2" +#pragma GCC target "+fp8dot2+fp8dot4" #ifdef STREAMING_COMPATIBLE -#pragma GCC target "+ssve-fp8dot2" +#pragma GCC target "+ssve-fp8dot2+ssve-fp8dot4" #endif /* diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_mf8.c b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_mf8.c index 12e28e3284ff..c22019990ebf 100644 --- a/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_mf8.c +++ b/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_mf8.c @@ -4,9 +4,9 @@ #include "test_sve_acle.h" -#pragma GCC target "+fp8dot2" +#pragma GCC target "+fp8dot2+fp8dot4" #ifdef STREAMING_COMPATIBLE -#pragma GCC target "+ssve-fp8dot2" +#pragma GCC target "+ssve-fp8dot2+ssve-fp8dot4" #endif /*