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. */ >