> -----Original Message----- > From: Gcc-patches <gcc-patches-boun...@gcc.gnu.org> On Behalf Of Richard > Biener > Sent: 05 May 2020 14:49 > To: gcc-patches@gcc.gnu.org > Subject: [PATCH] move permutation validity check > > > This delays the SLP permutation check to vectorizable_load and optimizes > permutations only after all SLP instances have been generated and the > vectorization factor is determined. > > Bootstrap and regtest running on x86_64-unknown-linux-gnu. > > Richard.
Hi Richard, This patch (bc484e25) introduced a test failure on arm and aarch64. The test gcc.dg/vect/slp-perm-9.c is now failing with: FAIL: gcc.dg/vect/slp-perm-9.c scan-tree-dump-times vect "permutation requires at least three vectors" 1 It seems this assertion isn't run on x86-64 which explains why this was missed. Thanks, Alex > > 2020-05-05 Richard Biener <rguent...@suse.de> > > * tree-vectorizer.h (vec_info::slp_loads): New. > (vect_optimize_slp): Declare. > * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Do > nothing when there are no loads. > (vect_gather_slp_loads): Gather loads into a vector. > (vect_supported_load_permutation_p): Remove. > (vect_analyze_slp_instance): Do not verify permutation > validity here. > (vect_analyze_slp): Optimize permutations of reductions > after all SLP instances have been gathered and gather > all loads. > (vect_optimize_slp): New function split out from > vect_supported_load_permutation_p. Elide some permutations. > (vect_slp_analyze_bb_1): Call vect_optimize_slp. > * tree-vect-loop.c (vect_analyze_loop_2): Likewise. > * tree-vect-stmts.c (vectorizable_load): Check whether > the load can be permuted. When generating code assert we can. > > * gcc.dg/vect/bb-slp-pr68892.c: Adjust for not supported > SLP permutations becoming builds from scalars. > * gcc.dg/vect/bb-slp-pr78205.c: Likewise. > * gcc.dg/vect/bb-slp-34.c: Likewise. > --- > gcc/testsuite/gcc.dg/vect/bb-slp-34.c | 3 +- > gcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c | 7 +- > gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c | 6 +- > gcc/tree-vect-loop.c | 3 + > gcc/tree-vect-slp.c | 262 +++++++++++------------ > ------ > gcc/tree-vect-stmts.c | 50 +++++- > gcc/tree-vectorizer.h | 4 +- > 7 files changed, 154 insertions(+), 181 deletions(-)