From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id BE3563858C66; Fri, 31 May 2024 12:26:18 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BE3563858C66 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1717158378; bh=NdwhwvwB+15huacui+Xsaflnz+S5olnjn4w7ID7OBJk=; h=From:To:Subject:Date:In-Reply-To:References:From; b=qMrX79tKl0uYbaEC3jqbWaOvyPNtb5tBXOXfgbfftCke/fGYJL0c3B48stxz1s9bJ lujZKPaZY0MfgRqrLWLWX7I9BLC1Bly6EfuQG/ECJPfASUbUT41LQAhsDYeLWX5JcA g00rdY9b7m6AElDeqdbfGTg8b3WcQF4+atQXEvMg= From: "rguenth at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/115304] gcc.dg/vect/slp-gap-1.c FAILs Date: Fri, 31 May 2024 12:26:18 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 15.0 X-Bugzilla-Keywords: testsuite-fail X-Bugzilla-Severity: normal X-Bugzilla-Who: rguenth at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 15.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: keywords Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D115304 Richard Biener changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |testsuite-fail --- Comment #2 from Richard Biener --- It should only need vect32 - basically I assumed the target can compose the 64bit vector from two 32bit elements. But it might be that for this to work the loads would need to be aligned. What is needed is char-to-short unpacking and vector composition. Either composing V2SImode or V8QImode from two V4QImode vectors. Does the following help? diff --git a/gcc/testsuite/gcc.dg/vect/slp-gap-1.c b/gcc/testsuite/gcc.dg/vect/slp-gap-1.c index 36463ca22c5..08942380caa 100644 --- a/gcc/testsuite/gcc.dg/vect/slp-gap-1.c +++ b/gcc/testsuite/gcc.dg/vect/slp-gap-1.c @@ -4,6 +4,9 @@ typedef unsigned char uint8_t; typedef short int16_t; void pixel_sub_wxh(int16_t * __restrict diff, uint8_t *pix1, uint8_t *pix2= ) { + diff =3D __builtin_assume_aligned (diff, __BIGGEST_ALIGNMENT__); + pix1 =3D __builtin_assume_aligned (pix1, 4); + pix2 =3D __builtin_assume_aligned (pix2, 4); for (int y =3D 0; y < 4; y++) { for (int x =3D 0; x < 4; x++) diff[x + y * 4] =3D pix1[x] - pix2[x];=