Changes to target-supports.exp from
r16-6519-g56dd47c073cabf introduced
some new failures for complex fp16 tests with some arm-eabi targets
configured with -mfpu=auto. This patch fixes those by (a) requiring the
full arm_v8_3a_fp16_complex_neon_ok target instead of just float16 in
vect/complex fp16 tests, and (b) simplifying down to one
dg-require-effective-target and one dg-add-options and removing the
explicit -march in advsimd-intrinsics/vector-complex_f16.c.
Regtested on aarch64, and the Linaro CI also delivers a positive verdict
for the relevant cortex-m33/-m3/-m55/-m7 configurations (after the
accompanying patch to target-supports.exp that follows). Huge thanks to
Christophe for testing this on arm.
gcc/testsuite/ChangeLog:
* gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c:
Adjust testcase.
* gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c:
Likewise.
* gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c:
Likewise.
* gcc.dg/vect/complex/fast-math-bb-slp-complex-mls-half-float.c:
Likewise.
* gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c:
Likewise.
* gcc.dg/vect/complex/fast-math-complex-add-half-float.c: Likewise.
* gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c:
Likewise.
* gcc.dg/vect/complex/fast-math-complex-mla-half-float.c:
Likewise.
* gcc.dg/vect/complex/fast-math-complex-mls-half-float.c:
Likewise.
* gcc.dg/vect/complex/fast-math-complex-mul-half-float.c:
Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vector-complex_f16.c:
Likewise.
/* { dg-do compile } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
/* { dg-additional-options "-ffast-math -fno-tree-loop-vectorize" } */
/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
/* { dg-do compile } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
/* { dg-additional-options "-ffast-math -fno-tree-loop-vectorize" } */
/* { dg-do compile } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
/* { dg-additional-options "-ffast-math -fno-tree-loop-vectorize" } */
/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
/* { dg-do compile } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
/* { dg-additional-options "-ffast-math -fno-tree-loop-vectorize" } */
/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
/* { dg-do compile } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
/* { dg-additional-options "-ffast-math -fno-tree-loop-vectorize" } */
/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
/* { dg-do compile } */
/* { dg-additional-options "-ffast-math --param vect-epilogues-nomask=0" } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
#define TYPE _Float16
/* { dg-do compile } */
/* { dg-additional-options "-ffast-math" } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
#define TYPE _Float16
/* { dg-do compile } */
/* { dg-additional-options "-ffast-math" } */
-/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
#define TYPE _Float16
#define N 200
/* { dg-do compile } */
/* { dg-additional-options "-ffast-math" } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
#define TYPE _Float16
/* { dg-do compile } */
/* { dg-additional-options "-ffast-math" } */
/* { dg-require-effective-target vect_complex_add_half } */
-/* { dg-require-effective-target float16 } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
#define TYPE _Float16
/* { dg-do compile } */
-/* { dg-require-effective-target arm_v8_3a_complex_neon_ok } */
-/* { dg-require-effective-target arm_v8_2a_fp16_neon_ok } */
-/* { dg-add-options arm_v8_3a_complex_neon } */
-/* { dg-add-options arm_v8_2a_fp16_neon } */
-/* { dg-additional-options "-O2 -march=armv8.3-a+fp16 -save-temps" } */
+/* { dg-require-effective-target arm_v8_3a_fp16_complex_neon_ok } */
+/* { dg-add-options arm_v8_3a_fp16_complex_neon } */
+/* { dg-additional-options "-O2 -save-temps" } */
#include <arm_neon.h>