This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fix vect_float markup for a couple of tests (PR 83888)
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>, Richard Sandiford <richard dot sandiford at linaro dot org>
- Date: Tue, 23 Jan 2018 11:25:49 +0100
- Subject: Re: Fix vect_float markup for a couple of tests (PR 83888)
- Authentication-results: sourceware.org; auth=none
- References: <87wp09ok1f.fsf@linaro.org>
On Mon, Jan 22, 2018 at 6:55 PM, Richard Sandiford
<richard.sandiford@linaro.org> wrote:
> vect_float is true for arm*-*-* targets, but the support is only
> available when -funsafe-math-optimizations is on. This caused
> failures in two tests that disable fast-math.
>
> The easiest fix seemed to be to add a new target selector for
> "vect_float without special options".
>
> Tested on aarch64-linux-gnu, x86_64-linux-gnu and powerpc64le-linux-gnu.
> OK to install?
Ok - so arm float vectors are not IEEE compliant?
Richard.
> Richard
>
>
> 2018-01-22 Richard Sandiford <richard.sandiford@linaro.org>
>
> gcc/
> PR testsuite/83888
> * doc/sourcebuild.texi (vect_float): Say that the selector
> only describes the situation when -funsafe-math-optimizations is on.
> (vect_float_strict): Document.
>
> gcc/testsuite/
> PR testsuite/83888
> * lib/target-supports.exp (check_effective_target_vect_float): Say
> that the result only holds when -funsafe-math-optimizations is on.
> (check_effective_target_vect_float_strict): New procedure.
> * gcc.dg/vect/no-fast-math-vect16.c: Use vect_float_strict instead
> of vect_float.
> * gcc.dg/vect/vect-reduc-6.c: Likewise.
>
> Index: gcc/doc/sourcebuild.texi
> ===================================================================
> --- gcc/doc/sourcebuild.texi 2018-01-22 17:51:03.860579049 +0000
> +++ gcc/doc/sourcebuild.texi 2018-01-22 17:54:02.172848564 +0000
> @@ -1403,7 +1403,13 @@ The target's preferred vector alignment
> alignment.
>
> @item vect_float
> -Target supports hardware vectors of @code{float}.
> +Target supports hardware vectors of @code{float} when
> +@option{-funsafe-math-optimizations} is in effect.
> +
> +@item vect_float_strict
> +Target supports hardware vectors of @code{float} when
> +@option{-funsafe-math-optimizations} is not in effect.
> +This implies @code{vect_float}.
>
> @item vect_int
> Target supports hardware vectors of @code{int}.
> Index: gcc/testsuite/lib/target-supports.exp
> ===================================================================
> --- gcc/testsuite/lib/target-supports.exp 2018-01-22 17:51:03.817580787 +0000
> +++ gcc/testsuite/lib/target-supports.exp 2018-01-22 17:54:02.173848531 +0000
> @@ -5492,7 +5492,8 @@ proc check_effective_target_vect_long {
> return $answer
> }
>
> -# Return 1 if the target supports hardware vectors of float, 0 otherwise.
> +# Return 1 if the target supports hardware vectors of float when
> +# -funsafe-math-optimizations is enabled, 0 otherwise.
> #
> # This won't change for different subtargets so cache the result.
>
> @@ -5525,6 +5526,14 @@ proc check_effective_target_vect_float {
> return $et_vect_float_saved($et_index)
> }
>
> +# Return 1 if the target supports hardware vectors of float without
> +# -funsafe-math-optimizations being enabled, 0 otherwise.
> +
> +proc check_effective_target_vect_float_strict { } {
> + return [expr { [check_effective_target_vect_float]
> + && ![istarget arm*-*-*] }]
> +}
> +
> # Return 1 if the target supports hardware vectors of double, 0 otherwise.
> #
> # This won't change for different subtargets so cache the result.
> Index: gcc/testsuite/gcc.dg/vect/no-fast-math-vect16.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/no-fast-math-vect16.c 2018-01-13 18:01:15.293116922 +0000
> +++ gcc/testsuite/gcc.dg/vect/no-fast-math-vect16.c 2018-01-22 17:54:02.172848564 +0000
> @@ -1,4 +1,4 @@
> -/* { dg-require-effective-target vect_float } */
> +/* { dg-require-effective-target vect_float_strict } */
>
> #include <stdarg.h>
> #include "tree-vect.h"
> Index: gcc/testsuite/gcc.dg/vect/vect-reduc-6.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-reduc-6.c 2018-01-13 18:01:15.294116882 +0000
> +++ gcc/testsuite/gcc.dg/vect/vect-reduc-6.c 2018-01-22 17:54:02.172848564 +0000
> @@ -1,4 +1,4 @@
> -/* { dg-require-effective-target vect_float } */
> +/* { dg-require-effective-target vect_float_strict } */
> /* { dg-additional-options "-fno-fast-math" } */
>
> #include <stdarg.h>