Am Fri, Feb 23, 2024 at 01:57:12PM +0000 schrieb Sam James:
> 
> Juergen Christ <jchr...@linux.ibm.com> writes:
> 
> > The emulation via word mode tries to perform integer arithmetic on floating
> > point values instead of floating point arithmetic.  This leads to
> > mis-compilations.
> 
> Is the bug ref + test missing?

Sorry, forgot to add the "bootstrapped and tested on s390x and x86_64".

Not sure how to reference a bugzilla here.  There is 114075 that
should be solved with this, too.

> >
> > 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:
> >
> >     * tree-vect-stmts.cc (vectorizable_operation): Don't emulate floating
> >           point vectors
> >
> > 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.  */
> 

Reply via email to