From: Richard Biener Date: Thu, 23 Oct 2025 09:13:09 +0000 (+0200) Subject: Remove LOOP_VINFO_SLP_UNROLLING_FACTOR X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4eaffcd9962b3ff1685fc2fff6aea764cef70e9c;p=thirdparty%2Fgcc.git Remove LOOP_VINFO_SLP_UNROLLING_FACTOR The following removes LOOP_VINFO_SLP_UNROLLING_FACTOR in favor of using LOOP_VINFO_VECT_FACTOR directly now that there's no difference between the two possible. * tree-vectorizer.h (_loop_vec_info::slp_unrolling_factor): Remove. (LOOP_VINFO_SLP_UNROLLING_FACTOR): Likewise. * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): Adjust. (vect_analyze_loop_2): Likewise. * tree-vect-slp.cc (vect_make_slp_decision): Set LOOP_VINFO_VECT_FACTOR directly. --- diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index d44a77d85c3..a98c06dd066 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -738,7 +738,6 @@ _loop_vec_info::_loop_vec_info (class loop *loop_in, vec_info_shared *shared) nonlinear_iv (false), ivexpr_map (NULL), scan_map (NULL), - slp_unrolling_factor (1), inner_loop_cost_factor (param_vect_inner_loop_cost_factor), vectorizable (false), can_use_partial_vectors_p (param_vect_partial_vector_usage != 0), @@ -2236,16 +2235,15 @@ start_over: if (!ok) return ok; - /* If there are any SLP instances mark them as pure_slp. */ + /* If there are any SLP instances mark them as pure_slp and compute + the overall vectorization factor. */ if (!vect_make_slp_decision (loop_vinfo)) return opt_result::failure_at (vect_location, "no stmts to vectorize.\n"); if (dump_enabled_p ()) dump_printf_loc (MSG_NOTE, vect_location, "Loop contains only SLP stmts\n"); - /* Determine the vectorization factor from the SLP decision. */ - LOOP_VINFO_VECT_FACTOR (loop_vinfo) - = LOOP_VINFO_SLP_UNROLLING_FACTOR (loop_vinfo); + /* Dump the vectorization factor from the SLP decision. */ if (dump_enabled_p ()) { dump_printf_loc (MSG_NOTE, vect_location, "vectorization factor = "); diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 9698709f567..3c760b495af 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -8171,7 +8171,7 @@ vect_make_slp_decision (loop_vec_info loop_vinfo) decided_to_slp++; } - LOOP_VINFO_SLP_UNROLLING_FACTOR (loop_vinfo) = unrolling_factor; + LOOP_VINFO_VECT_FACTOR (loop_vinfo) = unrolling_factor; if (decided_to_slp && dump_enabled_p ()) { diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 905a29142d3..56b3a5ad2a4 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -945,7 +945,8 @@ public: used. */ poly_uint64 versioning_threshold; - /* Unrolling factor */ + /* Unrolling factor. In case of suitable super-word parallelism + it can be that no unrolling is needed, and thus this is 1. */ poly_uint64 vectorization_factor; /* If this loop is an epilogue loop whose main loop can be skipped, @@ -1090,10 +1091,6 @@ public: rhs of the store of the initializer. */ hash_map *scan_map; - /* The unrolling factor needed to SLP the loop. In case of that pure SLP is - applied to the loop, i.e., no unrolling is needed, this is 1. */ - poly_uint64 slp_unrolling_factor; - /* The factor used to over weight those statements in an inner loop relative to the loop being vectorized. */ unsigned int inner_loop_cost_factor; @@ -1294,7 +1291,6 @@ public: #define LOOP_VINFO_USER_UNROLL(L) (L)->user_unroll #define LOOP_VINFO_GROUPED_STORES(L) (L)->grouped_stores #define LOOP_VINFO_SLP_INSTANCES(L) (L)->slp_instances -#define LOOP_VINFO_SLP_UNROLLING_FACTOR(L) (L)->slp_unrolling_factor #define LOOP_VINFO_REDUCTIONS(L) (L)->reductions #define LOOP_VINFO_PEELING_FOR_GAPS(L) (L)->peeling_for_gaps #define LOOP_VINFO_PEELING_FOR_NITER(L) (L)->peeling_for_niter