On Fri, 25 Sept 2020 at 16:31, Tamar Christina <tamar.christ...@arm.com> wrote:
>
> Hi All,
>
> This adds support to the auto-vectorizer to support HFmode vectorization for
> AArch32.  This is supported when +fp16 is used.  I wonder if I should disable
> the returning of the type if the option isn't enabled.
>
> At the moment it will be returned but the vectorizer will try and fail to use
> it.  It wastes a few compile cycles but doesn't result in bad code.
>
> Bootstrapped Regtested on arm-none-linux-gnueabihf and no issues.
>
> Ok for master?
>
> Thanks,
> Tamar
>
> gcc/ChangeLog:
>
>         * config/arm/arm.c (arm_preferred_simd_mode): Add E_HFmode.
>
> gcc/testsuite/ChangeLog:
>
>         * gcc.target/arm/vect-half-floats.c: New test.
>

Hi Tamar,

I have noticed problems with the new tests:
ERROR: gcc.target/arm/vect-half-floats.c: unknown effective target
keyword `target_float16' for " dg-require-effective-target 2
target_float16 "

This is because there are two typos in the new test:
+/* { dg-require-effective-target target_float16 } */
+/* { dg-add-options for_float16 } */
where target_float16 and for_float16 should just be "float16"

However, this is not sufficient for the test to pass on my side,
because the test is then compiled with:
-ansi -pedantic-errors -mfp16-format=ieee -Ofast -ftree-vectorize
-fdump-tree-vect-all -std=c11
leading to:
vect-half-floats.c:7:11: error: ISO C does not support the '_Float16'
type [-Wpedantic]


This patch makes the test pass for me:

diff --git a/gcc/testsuite/gcc.target/arm/vect-half-floats.c
b/gcc/testsuite/gcc.target/arm/vect-half-floats.c
index ebfe7f9..49ca2e9 100644
--- a/gcc/testsuite/gcc.target/arm/vect-half-floats.c
+++ b/gcc/testsuite/gcc.target/arm/vect-half-floats.c
@@ -1,8 +1,8 @@
 /* { dg-do compile }  */
-/* { dg-require-effective-target target_float16 } */
+/* { dg-options "-Ofast -ftree-vectorize -fdump-tree-vect-all -std=c11" } */
+/* { dg-require-effective-target float16 } */
 /* { dg-require-effective-target arm_fp16_ok } */
-/* { dg-add-options for_float16 } */
-/* { dg-additional-options "-Ofast -ftree-vectorize
-fdump-tree-vect-all -std=c11" } */
+/* { dg-add-options float16 } */

 void foo (_Float16 n1[], _Float16 n2[], _Float16 r[], int n)
 {


OK?

I'm sure why you didn't see problems with you ran the validations?

Thanks,

Christophe








> --

Reply via email to