aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Carlotti <andrew.carlotti@arm.com>2025-02-05 17:27:56 +0000
committerAndrew Carlotti <andrew.carlotti@arm.com>2025-02-11 17:59:27 +0000
commit299a8e2dc667e795991bc439d2cad5ea5bd379e2 (patch)
treeda9e8517842a46b4f98c6d093db3d3e6c94477ac
parent00d943bf840386bd6e3e8a04554df5b528722e46 (diff)
downloadgcc-299a8e2dc667e795991bc439d2cad5ea5bd379e2.zip
gcc-299a8e2dc667e795991bc439d2cad5ea5bd379e2.tar.gz
gcc-299a8e2dc667e795991bc439d2cad5ea5bd379e2.tar.bz2
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.
-rw-r--r--gcc/config/aarch64/aarch64-option-extensions.def10
-rw-r--r--gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c6
-rw-r--r--gcc/testsuite/gcc.target/aarch64/simd/vmla_lane_indices_1.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_1.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_mfloat8_lane_group_selection_1.c2
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_lane_mf8.c4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/dot_mf8.c4
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 cc42bd5..aa8d315 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 0dcfbec..97d68b9 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 d1a69f4..739ff4c 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 9ad789a..fa0df46 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 dec00e3..f6fce2f 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 83fe5cf..ce16f8b 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 12e28e3..c220199 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
/*