On Tue, 19 Dec 2023, Tamar Christina wrote: > > Do you mean for ARM SVE, these tests need to be specified as only ARM SVE ? > > I think that would be the right thing to do. I think these tests are > checking if we support VLA SLP. > changing it to a PASS unconditionally means that if someone runs the > testsuite in SVE only mode they?ll fail. > > > The difference between RVV and ARM is that: variable-length and > > fixed-length vectors are both valid on RVV, using same RVV ISA. > > Wheras, for ARM, variable-length vectors use SVE ISA but fixed-length > > vectors use NEON ISA. > > Ah that makes sense why you want to remove the check. I guess whomever added > the vect_variable_length indended > It to fail when VLA though. Perhaps these tests need a dg-add-options > <option-to-force-vla>? Since I think other tests already test fixed-length > vectors. > > But lets see what Richi says.
The testcases are all very different, it doesn't make sense to discuss them together. Richard. > Thanks, > Tamar > > > From: ??? <juzhe.zh...@rivai.ai> > Sent: Tuesday, December 19, 2023 1:02 PM > To: Tamar Christina <tamar.christ...@arm.com>; gcc-patches > <gcc-patches@gcc.gnu.org> > Cc: rguenther <rguent...@suse.de> > Subject: Re: RE: [PATCH] Regression FIX: Remove vect_variable_length XFAIL > from some tests > > Do you mean for ARM SVE, these tests need to be specified as only ARM SVE ? > > Actually, for RVV, is same situation as ARM. We are using VLS modes > (fixed-length vectors) to vectorize these cases so that they are XPASS. > > The difference between RVV and ARM is that: variable-length and fixed-length > vectors are both valid on RVV, using same RVV ISA. > Wheras, for ARM, variable-length vectors use SVE ISA but fixed-length vectors > use NEON ISA. > > > ________________________________ > juzhe.zh...@rivai.ai<mailto:juzhe.zh...@rivai.ai> > > From: Tamar Christina<mailto:tamar.christ...@arm.com> > Date: 2023-12-19 20:29 > To: Juzhe-Zhong<mailto:juzhe.zh...@rivai.ai>; > gcc-patches@gcc.gnu.org<mailto:gcc-patches@gcc.gnu.org> > CC: rguent...@suse.de<mailto:rguent...@suse.de> > Subject: RE: [PATCH] Regression FIX: Remove vect_variable_length XFAIL from > some tests > Hi Juzhe, > > > -----Original Message----- > > From: Juzhe-Zhong <juzhe.zh...@rivai.ai<mailto:juzhe.zh...@rivai.ai>> > > Sent: Tuesday, December 19, 2023 11:19 AM > > To: gcc-patches@gcc.gnu.org<mailto:gcc-patches@gcc.gnu.org> > > Cc: rguent...@suse.de<mailto:rguent...@suse.de>; Tamar Christina > > <tamar.christ...@arm.com<mailto:tamar.christ...@arm.com>>; Juzhe- > > Zhong <juzhe.zh...@rivai.ai<mailto:juzhe.zh...@rivai.ai>> > > Subject: [PATCH] Regression FIX: Remove vect_variable_length XFAIL from some > > tests > > > > Hi, this patch fixes these following regression FAILs on RVV: > > > > XPASS: gcc.dg/tree-ssa/pr84512.c scan-tree-dump optimized "return 285;" > > XPASS: gcc.dg/vect/bb-slp-43.c -flto -ffat-lto-objects scan-tree-dump-not > > slp2 > > "vector operands from scalars" > > XPASS: gcc.dg/vect/bb-slp-43.c scan-tree-dump-not slp2 "vector operands from > > scalars" > > XPASS: gcc.dg/vect/bb-slp-subgroups-3.c -flto -ffat-lto-objects > > scan-tree-dump- > > times slp2 "optimized: basic block" 2 > > XPASS: gcc.dg/vect/bb-slp-subgroups-3.c scan-tree-dump-times slp2 > > "optimized: > > basic block" 2 > > > > Since vect_variable_length are available for ARM SVE and RVV, I just use > > compiler > > explorer to confirm ARM SVE same as > > RVV. > > > > Hi, @Tamar. Could you double check whether this patch fix is reasonable to > > you ? > > > > Hmm I would be surprised if this is working correctly for RVV since as far as > I know we don't have > variable length support in SLP i.e. SLP can't predicate operation during > build so the > current vectorizer only supports fixed length vector SLP, unless Richi did > some magic? > > For SVE the reason this XPASS is because the compiler will fallback to NEON > unless it's > told it can't. But that's not actually testing VLA SLP. > > i.e. https://godbolt.org/z/5n5fWahxh just using `+sve` isn't enough and it > has to be told > it can only use SVE. Is it perhaps something similar for RVV? > > If RVV has a similar param, perhaps the correct fix is to append it to the > tests so they > XFAIL correctly? > > Regards, > Tamar > > > And. > > > > Hi, @Richard. Is this patch Ok for trunk if this patch fixes regression for > > both RVV > > and ARM SVE. > > > > gcc/testsuite/ChangeLog: > > > > * gcc.dg/tree-ssa/pr84512.c: Remove vect_variable_length XFAIL. > > * gcc.dg/vect/bb-slp-43.c: Ditto. > > * gcc.dg/vect/bb-slp-subgroups-3.c: Ditto. > > > > --- > > gcc/testsuite/gcc.dg/tree-ssa/pr84512.c | 2 +- > > gcc/testsuite/gcc.dg/vect/bb-slp-43.c | 2 +- > > gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c | 2 +- > > 3 files changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr84512.c > > b/gcc/testsuite/gcc.dg/tree- > > ssa/pr84512.c > > index 496c78b28dc..3c027012670 100644 > > --- a/gcc/testsuite/gcc.dg/tree-ssa/pr84512.c > > +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr84512.c > > @@ -13,4 +13,4 @@ int foo() > > } > > > > /* Listed targets xfailed due to PR84958. */ > > -/* { dg-final { scan-tree-dump "return 285;" "optimized" { xfail { > > amdgcn*-*-* || > > vect_variable_length } } } } */ > > +/* { dg-final { scan-tree-dump "return 285;" "optimized" { xfail { > > amdgcn*-*-* } } } > > } */ > > diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-43.c > > b/gcc/testsuite/gcc.dg/vect/bb- > > slp-43.c > > index dad2d24262d..40bd2e0dfbf 100644 > > --- a/gcc/testsuite/gcc.dg/vect/bb-slp-43.c > > +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-43.c > > @@ -14,4 +14,4 @@ f (int *restrict x, short *restrict y) > > } > > > > /* { dg-final { scan-tree-dump-not "mixed mask and nonmask" "slp2" } } */ > > -/* { dg-final { scan-tree-dump-not "vector operands from scalars" "slp2" { > > target { > > { vect_int && vect_bool_cmp } && { vect_unpack && vect_hw_misalign } } > > xfail { > > vect_variable_length && { ! vect256 } } } } } */ > > +/* { dg-final { scan-tree-dump-not "vector operands from scalars" "slp2" { > > target { > > { vect_int && vect_bool_cmp } && { vect_unpack && vect_hw_misalign } } } } > > } */ > > diff --git a/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c > > b/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c > > index fb719915db7..3f0d45ce4a1 100644 > > --- a/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c > > +++ b/gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c > > @@ -42,7 +42,7 @@ main (int argc, char **argv) > > /* Because we disable the cost model, targets with variable-length > > vectors can end up vectorizing the store to a[0..7] on its own. > > With the cost model we do something sensible. */ > > -/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" { > > target { ! > > amdgcn-*-* } xfail vect_variable_length } } } */ > > +/* { dg-final { scan-tree-dump-times "optimized: basic block" 2 "slp2" { > > target { ! > > amdgcn-*-* } } } } */ > > > > /* amdgcn can do this in one vector. */ > > /* { dg-final { scan-tree-dump-times "optimized: basic block" 1 "slp2" { > > target > > amdgcn-*-* } } } */ > > -- > > 2.36.3 > > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)