Thanks for reporting it. I think we may need to change it into: + /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" { target {! vect_load_lanes } } } } */ +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { target vect_strided5 && vect_load_lanes } } } */
Could you verify it whether it work for you ? Thanks. juzhe.zh...@rivai.ai From: Andrew Stubbs Date: 2023-10-06 22:29 To: Juzhe-Zhong; gcc-patches@gcc.gnu.org CC: rguent...@suse.de; jeffreya...@gmail.com; richard.sandif...@arm.com Subject: Re: [PATCH] test: Isolate slp-1.c check of target supports vect_strided5 On 15/09/2023 10:16, Juzhe-Zhong wrote: > This test failed in RISC-V: > FAIL: gcc.dg/vect/slp-1.c -flto -ffat-lto-objects scan-tree-dump-times vect > "vectorizing stmts using SLP" 4 > FAIL: gcc.dg/vect/slp-1.c scan-tree-dump-times vect "vectorizing stmts using > SLP" 4 > > Because this loop: > /* SLP with unrolling by 8. */ > for (i = 0; i < N; i++) > { > out[i*5] = 8; > out[i*5 + 1] = 7; > out[i*5 + 2] = 81; > out[i*5 + 3] = 28; > out[i*5 + 4] = 18; > } > > is using vect_load_lanes with array size = 5. > instead of SLP. > > When we adjust the COST of LANES load store, then it will use SLP. > > gcc/testsuite/ChangeLog: > > * gcc.dg/vect/slp-1.c: Add vect_stried5. > > --- > gcc/testsuite/gcc.dg/vect/slp-1.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/gcc/testsuite/gcc.dg/vect/slp-1.c > b/gcc/testsuite/gcc.dg/vect/slp-1.c > index 82e4f6469fb..d4a13f12df6 100644 > --- a/gcc/testsuite/gcc.dg/vect/slp-1.c > +++ b/gcc/testsuite/gcc.dg/vect/slp-1.c > @@ -122,5 +122,5 @@ int main (void) > } > > /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */ > -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" > } } */ > - > +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" > { target {! vect_strided5 } } } } */ > +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" > { target vect_strided5 } } } */ This patch causes a test regression on amdgcn because vect_strided5 is true (because check_effective_target_vect_fully_masked is true), but the testcase still gives the message 4 times. Perhaps because amdgcn uses masking and not vect_load_lanes? Andrew