]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Use scalar_costs in vect_get_known_peeling_cost
authorRichard Biener <rguenther@suse.de>
Tue, 10 Mar 2026 13:36:24 +0000 (14:36 +0100)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 28 Apr 2026 09:12:09 +0000 (11:12 +0200)
The following makes us use the scalar_costs summary when computing
the peeling cost part comparing different peelings for alignment.
That gets rid of repeated walks of LOOP_VINFO_SCALAR_ITERATION_COST
and the fallback to builtin_vectorization_cost.

* tree-vect-loop.cc (vect_get_known_peeling_cost): Use
scalar_costs instead of guesstimating it.

gcc/tree-vect-loop.cc

index cc40f43c2520ca2d3f340bd609665c224948558d..94f3d00d60eca5365be94391f17d8271ab5082da 100644 (file)
@@ -3943,16 +3943,10 @@ vect_get_known_peeling_cost (loop_vec_info loop_vinfo, int peel_iters_prologue)
        retval += builtin_vectorization_cost (cond_branch_taken, NULL_TREE, 0);
     }
 
-  stmt_info_for_cost *si;
-  int j;
-  if (peel_iters_prologue)
-    FOR_EACH_VEC_ELT (LOOP_VINFO_SCALAR_ITERATION_COST (loop_vinfo), j, si)
-      retval += (builtin_vectorization_cost (si->kind, NULL_TREE, si->misalign)
-                * peel_iters_prologue);
-  if (peel_iters_epilogue)
-    FOR_EACH_VEC_ELT (LOOP_VINFO_SCALAR_ITERATION_COST (loop_vinfo), j, si)
-      retval += (builtin_vectorization_cost (si->kind, NULL_TREE, si->misalign)
-                * peel_iters_epilogue);
+  retval += ((peel_iters_prologue + peel_iters_epilogue)
+            * loop_vinfo->scalar_costs->body_cost ());
+  retval += (((peel_iters_prologue != 0) + (peel_iters_epilogue != 0))
+            * loop_vinfo->scalar_costs->outside_cost ());
 
   return retval;
 }