> -----Original Message----- > From: Gcc-patches <gcc-patches-boun...@gcc.gnu.org> On Behalf Of > Christophe Lyon via Gcc-patches > Sent: 14 December 2020 10:16 > To: Tamar Christina <tamar.christ...@arm.com> > Cc: Richard Earnshaw <richard.earns...@arm.com>; nd <n...@arm.com>; > gcc Patches <gcc-patches@gcc.gnu.org>; Ramana Radhakrishnan > <ramana.radhakrish...@arm.com> > Subject: Re: [PATCH v2 13/16]Arm: Add support for auto-vectorization using > HF mode. > > 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?
Oops, sorry for not catching these. Ok. Thanks, Kyrill > > I'm sure why you didn't see problems with you ran the validations? > > Thanks, > > Christophe > > > > > > > > > > --