Andrew Carlotti <andrew.carlo...@arm.com> writes:
> We agreed with LLVM developer 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.
>
>
>
> I have bootstrapped and regression tested this.  There are no test
> result changes between GCC+Binutils with old feature dependencies and
> GCC+Binutils with new feature dependencies, and some improvements
> compared to old GCC with new Binutils.
>
> Ok for master?
>
>
> 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.

OK, thanks.

Richard

> diff --git a/gcc/config/aarch64/aarch64-option-extensions.def 
> b/gcc/config/aarch64/aarch64-option-extensions.def
> index 
> cc42bd518dca5e4b947c81f06e543133b4f25440..aa8d315c240fbd25b49008b131cc09f04001eb80
>  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 
> 0dcfbec05bad5f446c9f169051c9b86b9844946d..97d68b94512e1ffdd5ceb484a6378b3a1ec9d115
>  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 
> d1a69f4ba54133a5d6d19b5fb73c2768ec29e60b..739ff4c6a75a8014637b2b48d8121127ad6a8539
>  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 
> 9ad789a8ad2c5df109d6471a7ca22355ba26edea..fa0df46db2262a5a3e17bec974fb4807886708e9
>  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 
> dec00e3abf15e054fbd3f0964c00732f71de14ea..f6fce2f5c40f3da214da115d76ad7600f98749bc
>  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 
> 83fe5cff5d3c8bfd428c834e81189475bcfc885a..ce16f8b26725bba5e4d01697650a41251cf977ba
>  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 
> 12e28e3284ff10fa58eae2db059fbaab87231e4d..c22019990ebf54f82b9163a5612e8c2eae2ed8bd
>  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
>  
>  /*

Reply via email to