-
- Downloads
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. 2020-05-08 Richard Biener <rguenther@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.
Showing
- gcc/ChangeLog 20 additions, 0 deletionsgcc/ChangeLog
- gcc/testsuite/ChangeLog 7 additions, 0 deletionsgcc/testsuite/ChangeLog
- gcc/testsuite/gcc.dg/vect/bb-slp-34.c 1 addition, 2 deletionsgcc/testsuite/gcc.dg/vect/bb-slp-34.c
- gcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c 4 additions, 3 deletionsgcc/testsuite/gcc.dg/vect/bb-slp-pr68892.c
- gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c 4 additions, 2 deletionsgcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c
- gcc/tree-vect-loop.c 3 additions, 0 deletionsgcc/tree-vect-loop.c
- gcc/tree-vect-slp.c 97 additions, 165 deletionsgcc/tree-vect-slp.c
- gcc/tree-vect-stmts.c 41 additions, 7 deletionsgcc/tree-vect-stmts.c
- gcc/tree-vectorizer.h 3 additions, 1 deletiongcc/tree-vectorizer.h
Loading
Please register or sign in to comment