From: Andrew Carlotti Date: Wed, 5 Feb 2025 17:27:56 +0000 (+0000) Subject: aarch64: Update fp8 dependencies X-Git-Tag: basepoints/gcc-16~2073 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=299a8e2dc667e795991bc439d2cad5ea5bd379e2;p=thirdparty%2Fgcc.git 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 --git a/gcc/config/aarch64/aarch64-option-extensions.def b/gcc/config/aarch64/aarch64-option-extensions.def index cc42bd518dc..aa8d315c240 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 0dcfbec05ba..97d68b94512 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 d1a69f4ba54..739ff4c6a75 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 9ad789a8ad2..fa0df46db22 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 -#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 dec00e3abf1..f6fce2f5c40 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 -#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 83fe5cff5d3..ce16f8b2672 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 12e28e3284f..c22019990eb 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 /*