On Tue, 16 Jan 2024, juzhe.zh...@rivai.ai wrote: > I think it's vectorized by 128bit vector too. > > vector(4) int vect__9.9; > vector(4) int vect__2.6; > vector(4) int vect__1.5; > int _1; > int _5; > int _11; > int _13; > vector(4) int _27; > > <bb 2> [local count: 1073741824]: > vect__1.5_24 = MEM <vector(4) int> [(int *)&b]; > vect__2.6_25 = vect__1.5_24 + { 1, 2, 3, 4 }; > _1 = b[0]; > _5 = b[2]; > MEM <vector(4) int> [(int *)&a] = vect__2.6_25; > _11 = b[4]; > _13 = b[6]; > _27 = {_1, _5, _11, _13}; > vect__9.9_28 = _27 * { 3, 4, 5, 7 }; > MEM <vector(4) int> [(int *)&a + 16B] = vect__9.9_28; > > > We can confirm it here: https://godbolt.org/z/6jGrEoz9s
So same thing, add && { ! vect128 }? > > > juzhe.zh...@rivai.ai > > From: Richard Biener > Date: 2024-01-16 15:43 > To: Juzhe-Zhong > CC: gcc-patches; pinskia > Subject: Re: [PATCH] test regression fix: Remove xfail for variable length > targets of bb-slp-subgroups-3.c > On Tue, 16 Jan 2024, Juzhe-Zhong wrote: > > > Notice there is a regression recently: > > 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 > > > > Checked on both ARM SVE an RVV: > > > > https://godbolt.org/z/jz4cYbqc8 > > > > "optimized: basic block" appears twice. > > > > I guess ARM SVE has the same XPASS as RVV. > > > > Hi, Andrew. Could you confirm about it ? > > How does it vectorize it? See the comments in the testcase. The > intent was to check we can split the store and vectorize the > add and multiplication separately even when fed from the same > load group. So ideally we'd add sth similar as in bb-slp-43.c, > looking for not "vector operands from scalars" > > > gcc/testsuite/ChangeLog: > > > > * gcc.dg/vect/bb-slp-subgroups-3.c: Remove XFAIL of variable length. > > > > --- > > gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > 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-*-* } } } */ > > > > -- 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)