Thanks a lot ! I will send V2 for Richi to review.
juzhe.zh...@rivai.ai From: Andrew Stubbs Date: 2023-11-07 20:05 To: juzhe.zh...@rivai.ai; gcc-patches CC: jeffreyalaw; rguenther Subject: Re: [PATCH] test: Fix FAIL of pr97428.c for RVV On 07/11/2023 12:03, juzhe.zh...@rivai.ai wrote: > Sorry I made a mistake here. > > Does it work for you ? > > /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 > "vect" { target { { vect_hw_misalign } && { ! vect512 } } } } } */ > /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 > "vect" { target { vect512 } } } } */ > > Tested on RVV is OK. 5 PASS on amdgcn also. Andrew > ------------------------------------------------------------------------ > juzhe.zh...@rivai.ai > > *From:* Andrew Stubbs <mailto:a...@codesourcery.com> > *Date:* 2023-11-07 19:44 > *To:* juzhe.zh...@rivai.ai <mailto:juzhe.zh...@rivai.ai>; > gcc-patches <mailto:gcc-patches@gcc.gnu.org> > *CC:* jeffreyalaw <mailto:jeffreya...@gmail.com>; rguenther > <mailto:rguent...@suse.de> > *Subject:* Re: [PATCH] test: Fix FAIL of pr97428.c for RVV > On 07/11/2023 11:24, juzhe.zh...@rivai.ai wrote: > > Oh. Sorry maybe it's better like this: > > > > /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 > > "vect" { target { { ! vect_hw_misalign } || { vect512 } } } } } */ > > /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 > > "vect" { target{ ! vect512 } } } } */ > The conditions are backwards; this expects vect512 machines to match > twice. Also I think there's a space missing. > Andrew > > > > > ------------------------------------------------------------------------ > > juzhe.zh...@rivai.ai > > > > *From:* juzhe.zh...@rivai.ai <mailto:juzhe.zh...@rivai.ai> > > *Date:* 2023-11-07 19:23 > > *To:* ams <mailto:a...@codesourcery.com>; gcc-patches > > <mailto:gcc-patches@gcc.gnu.org> > > *CC:* jeffreyalaw <mailto:jeffreya...@gmail.com>; rguenther > > <mailto:rguent...@suse.de> > > *Subject:* Re: Re: [PATCH] test: Fix FAIL of pr97428.c for RVV > > Do you mean this ? > > > > /* { dg-final { scan-tree-dump-times "vectorizing stmts using > SLP" 2 > > "vect" { target { { ! vect_hw_misalign } || { vect512 } } } } > } */ > > /* { dg-final { scan-tree-dump-times "vectorizing stmts using > SLP" 4 > > "vect" { xfail { ! vect512 } } } } */ > > > > Could you try again ? If it works for you, I am gonna send V2 > patch > > to Richi. > > > > Thank you so much for help. > > > ------------------------------------------------------------------------ > > juzhe.zh...@rivai.ai > > > > *From:* Andrew Stubbs <mailto:a...@codesourcery.com> > > *Date:* 2023-11-07 19:21 > > *To:* juzhe.zh...@rivai.ai <mailto:juzhe.zh...@rivai.ai>; > > gcc-patches <mailto:gcc-patches@gcc.gnu.org> > > *CC:* jeffreyalaw <mailto:jeffreya...@gmail.com>; rguenther > > <mailto:rguent...@suse.de> > > *Subject:* Re: [PATCH] test: Fix FAIL of pr97428.c for RVV > > On 07/11/2023 11:05, juzhe.zh...@rivai.ai wrote: > > > Could you try this ? > > > > > > /* { dg-final { scan-tree-dump-times "vectorizing > stmts using > > SLP" 2 > > > "vect" { xfail { { ! vect_hw_misalign } || { vect512 } > } } } } */ > > > /* { dg-final { scan-tree-dump-times "vectorizing > stmts using > > SLP" 4 > > > "vect" { xfail { ! vect512 } } } } */ > > PASS: gcc.dg/vect/pr97428.c (test for excess errors) > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump vect "Detected > > interleaving > > load of size 8" > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump vect "Detected > > interleaving > > store of size 16" > > gcc.dg/vect/pr97428.c: pattern found 4 times > > XFAIL: gcc.dg/vect/pr97428.c scan-tree-dump-times vect > "vectorizing > > stmts using SLP" 2 > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump-times vect > > "vectorizing stmts > > using SLP" 4 > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump-not vect "gap of 6 > > elements" > > The passes are all correct (assuming that 4 matches are a > valid > > number), > > but if you have mutliple patterns with contractictory > > expectations then > > you probably want to use "target" rather than "xfail" to > avoid > > the noise > > (and invert the conditions, obviously). > > Andrew > > > > > > ------------------------------------------------------------------------ > > > juzhe.zh...@rivai.ai > > > > > > *From:* Andrew Stubbs <mailto:a...@codesourcery.com> > > > *Date:* 2023-11-07 18:59 > > > *To:* juzhe.zh...@rivai.ai > <mailto:juzhe.zh...@rivai.ai>; > > > gcc-patches <mailto:gcc-patches@gcc.gnu.org> > > > *CC:* jeffreyalaw <mailto:jeffreya...@gmail.com>; > rguenther > > > <mailto:rguent...@suse.de> > > > *Subject:* Re: [PATCH] test: Fix FAIL of pr97428.c > for RVV > > > On 07/11/2023 10:10, juzhe.zh...@rivai.ai wrote: > > > > So, this patch not only fixes RVV FAIL, but > also fixes > > GCN ? > > > Before the patch I have: > > > PASS: gcc.dg/vect/pr97428.c (test for excess errors) > > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump vect > "Detected > > interleaving > > > load of size 8" > > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump vect > "Detected > > interleaving > > > store of size 16" > > > gcc.dg/vect/pr97428.c: pattern found 4 times > > > XFAIL: gcc.dg/vect/pr97428.c scan-tree-dump-times vect > > "vectorizing > > > stmts using SLP" 2 > > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump-not > vect "gap > > of 6 elements" > > > With the patch I now get: > > > PASS: gcc.dg/vect/pr97428.c (test for excess errors) > > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump vect > "Detected > > interleaving > > > load of size 8" > > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump vect > "Detected > > interleaving > > > store of size 16" > > > gcc.dg/vect/pr97428.c: pattern found 4 times > > > XFAIL: gcc.dg/vect/pr97428.c scan-tree-dump-times vect > > "vectorizing > > > stmts using SLP" 2 > > > XPASS: gcc.dg/vect/pr97428.c scan-tree-dump-times vect > > "vectorizing > > > stmts using SLP" 4 > > > PASS: gcc.dg/vect/pr97428.c scan-tree-dump-not > vect "gap > > of 6 elements" > > > It's different, but not "fixed". > > > Andrew > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > juzhe.zh...@rivai.ai > > > > > > > > *From:* Andrew Stubbs > <mailto:a...@codesourcery.com> > > > > *Date:* 2023-11-07 18:09 > > > > *To:* Juzhe-Zhong > <mailto:juzhe.zh...@rivai.ai>; > > > > gcc-patches@gcc.gnu.org > > <mailto:gcc-patches@gcc.gnu.org> > > > > *CC:* jeffreya...@gmail.com > > <mailto:jeffreya...@gmail.com>; > > > > rguent...@suse.de <mailto:rguent...@suse.de> > > > > *Subject:* Re: [PATCH] test: Fix FAIL of > pr97428.c > > for RVV > > > > On 07/11/2023 07:44, Juzhe-Zhong wrote: > > > > > This test shows vectorizing stmts using > SLP 4 times > > > instead of 2 > > > > for RVV. > > > > > The reason is RVV has 512 bit vector. > > > > > Here is comparison between RVV ans ARM SVE: > > > > > https://godbolt.org/z/xc5KE5rPs > > > > > > > > > > But I notice AMDGCN also has 512 bit vector, > > seems this patch > > > > will cause FAIL in GCN ? > > > > > > > > > > Not sure whether GCN is 2 times or 4 times ? > > > > The pattern matches 4 times on GCN. > > > > > gcc/testsuite/ChangeLog: > > > > > > > > > > * gcc.dg/vect/pr97428.c: Fix FAIL for RVV. > > > > > > > > > > --- > > > > > gcc/testsuite/gcc.dg/vect/pr97428.c | > 3 ++- > > > > > 1 file changed, 2 insertions(+), 1 > deletion(-) > > > > > > > > > > diff --git > a/gcc/testsuite/gcc.dg/vect/pr97428.c > > > > b/gcc/testsuite/gcc.dg/vect/pr97428.c > > > > > index ad6416096aa..352c9bf04a7 100644 > > > > > --- a/gcc/testsuite/gcc.dg/vect/pr97428.c > > > > > +++ b/gcc/testsuite/gcc.dg/vect/pr97428.c > > > > > @@ -43,5 +43,6 @@ void foo_i2(dcmlx4_t > dst[], > > const dcmlx_t > > > > src[], int n) > > > > > /* { dg-final { scan-tree-dump "Detected > > interleaving > > > store of > > > > size 16" "vect" } } */ > > > > > /* We're not able to peel & apply > re-aligning > > to make > > > accesses > > > > well-aligned for !vect_hw_misalign, > > > > > but we could by peeling the stores for > > alignment and > > > > applying re-aligning loads. */ > > > > > -/* { dg-final { scan-tree-dump-times > > "vectorizing stmts using > > > > SLP" 2 "vect" { xfail { ! vect_hw_misalign > } } } } */ > > > > > +/* { dg-final { scan-tree-dump-times > > "vectorizing stmts using > > > > SLP" 2 "vect" { xfail { { ! > vect_hw_misalign } || > > { vect512 } > > > } } } } */ > > > > > +/* { dg-final { scan-tree-dump-times > > "vectorizing stmts using > > > > SLP" 4 "vect" { xfail { { ! > vect_hw_misalign } || > > { ! vect512 > > > } } } > > > > } } */ > > > > > /* { dg-final { scan-tree-dump-not > "gap of 6 > > elements" > > > "vect" } > > > > } */ > > > > > > > > > >