On Fri, Feb 23, 2024 at 02:43:45PM +0100, Juergen Christ wrote:
> The emulation via word mode tries to perform integer arithmetic on floating
> point values instead of floating point arithmetic.  This leads to
> mis-compilations.
> 
> Failure occured on s390x on these existing test cases:
> gcc.dg/vect/tsvc/vect-tsvc-s112.c
> gcc.dg/vect/tsvc/vect-tsvc-s113.c
> gcc.dg/vect/tsvc/vect-tsvc-s119.c
> gcc.dg/vect/tsvc/vect-tsvc-s121.c
> gcc.dg/vect/tsvc/vect-tsvc-s131.c
> gcc.dg/vect/tsvc/vect-tsvc-s132.c
> gcc.dg/vect/tsvc/vect-tsvc-s2233.c
> gcc.dg/vect/tsvc/vect-tsvc-s421.c
> gcc.dg/vect/vect-alias-check-14.c
> gcc.target/s390/vector/partial/s390-vec-length-epil-run-1.c
> gcc.target/s390/vector/partial/s390-vec-length-epil-run-3.c
> gcc.target/s390/vector/partial/s390-vec-length-full-run-3.c
> 
> gcc/ChangeLog:
> 

Please add
        PR tree-optimization/114075
above the * tree-vect-stmts line.
>       * tree-vect-stmts.cc (vectorizable_operation): Don't emulate floating
>           point vectors

This line should be tab indented like the first one, and end with .
And given what the patch does, perhaps say non-integral instead of floating
point.

As for testcase, I'll handle it separately, given that it already
fixes some pre-existing tests.

> Signed-off-by: Juergen Christ <jchr...@linux.ibm.com>
> ---
>  gcc/tree-vect-stmts.cc | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
> index 09749ae38174..f95ff2c2aa34 100644
> --- a/gcc/tree-vect-stmts.cc
> +++ b/gcc/tree-vect-stmts.cc
> @@ -6756,7 +6756,8 @@ vectorizable_operation (vec_info *vinfo,
>        those through even when the mode isn't word_mode.  For
>        ops we have to lower the lowering code assumes we are
>        dealing with word_mode.  */
> -      if ((((code == PLUS_EXPR || code == MINUS_EXPR || code == NEGATE_EXPR)
> +      if (!INTEGRAL_TYPE_P (TREE_TYPE (vectype))
> +       || (((code == PLUS_EXPR || code == MINUS_EXPR || code == NEGATE_EXPR)
>           || !target_support_p)
>          && maybe_ne (GET_MODE_SIZE (vec_mode), UNITS_PER_WORD))
>         /* Check only during analysis.  */

LGTM, but please wait until Monday evening so that Richi or Richard
have a chance to chime in.

        Jakub

Reply via email to