summaryrefslogtreecommitdiff
path: root/gcc/ChangeLog
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-02-24 15:36:40 +0100
committerRichard Biener <rguenther@suse.de>2020-05-08 19:47:30 +0200
commitbc484e250990393e887f7239157cc85ce6fadcce (patch)
treee57aa7d95c2998da04902d8c0144a03dd2c7e999 /gcc/ChangeLog
parentdebfaee5d51e3c07bb88a971618de2baff35d9c0 (diff)
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.
Diffstat (limited to 'gcc/ChangeLog')
-rw-r--r--gcc/ChangeLog20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 14605950a8b..21eabf82113 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,25 @@
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.
+
+2020-05-08 Richard Biener <rguenther@suse.de>
+
* tree-ssa-sccvn.c (rpo_avail): Change type to
eliminate_dom_walker *.
(eliminate_with_rpo_vn): Adjust rpo_avail to make vn_valueize