diff mbox series

Better vectorizer cost model debugging

Message ID alpine.LSU.2.20.1810081424540.16707@zhemvz.fhfr.qr
State New
Headers show
Series Better vectorizer cost model debugging | expand

Commit Message

Richard Biener Oct. 8, 2018, 12:28 p.m. UTC
We dump the target hook calls but sofar omit the resulting cost
(which might not be final).  It's still useful info for debugging
a target cost model.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2018-10-08  Richard Biener  <rguenther@suse.de>

	* tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
	Open a dump scope.
	* tree-vectorizer.c (dump_stmt_cost): Add cost param and dump it.
	* tree-vectorizer.h (dump_stmt_cost): Adjust.
	(add_stmt_cost): Dump return value of the hook.
diff mbox series

Patch

Index: gcc/tree-vect-loop.c
===================================================================
--- gcc/tree-vect-loop.c	(revision 264912)
+++ gcc/tree-vect-loop.c	(working copy)
@@ -1072,6 +1072,8 @@  vect_compute_single_scalar_iteration_cos
   int nbbs = loop->num_nodes, factor;
   int innerloop_iters, i;
 
+  DUMP_VECT_SCOPE ("vect_compute_single_scalar_iteration_cost");
+
   /* Gather costs for statements in the scalar loop.  */
 
   /* FORNOW.  */
Index: gcc/tree-vectorizer.c
===================================================================
--- gcc/tree-vectorizer.c	(revision 264912)
+++ gcc/tree-vectorizer.c	(working copy)
@@ -89,7 +89,7 @@  dump_user_location_t vect_location;
 
 void
 dump_stmt_cost (FILE *f, void *data, int count, enum vect_cost_for_stmt kind,
-		stmt_vec_info stmt_info, int misalign,
+		stmt_vec_info stmt_info, int misalign, unsigned cost,
 		enum vect_cost_model_location where)
 {
   fprintf (f, "%p ", data);
@@ -159,6 +159,7 @@  dump_stmt_cost (FILE *f, void *data, int
   fprintf (f, "%s ", ks);
   if (kind == unaligned_load || kind == unaligned_store)
     fprintf (f, "(misalign %d) ", misalign);
+  fprintf (f, "costs %u ", cost);
   const char *ws = "unknown";
   switch (where)
     {
Index: gcc/tree-vectorizer.h
===================================================================
--- gcc/tree-vectorizer.h	(revision 264912)
+++ gcc/tree-vectorizer.h	(working copy)
@@ -1199,7 +1199,8 @@  init_cost (struct loop *loop_info)
 }
 
 extern void dump_stmt_cost (FILE *, void *, int, enum vect_cost_for_stmt,
-			    stmt_vec_info, int, enum vect_cost_model_location);
+			    stmt_vec_info, int, unsigned,
+			    enum vect_cost_model_location);
 
 /* Alias targetm.vectorize.add_stmt_cost.  */
 
@@ -1208,10 +1209,12 @@  add_stmt_cost (void *data, int count, en
 	       stmt_vec_info stmt_info, int misalign,
 	       enum vect_cost_model_location where)
 {
+  unsigned cost = targetm.vectorize.add_stmt_cost (data, count, kind,
+						   stmt_info, misalign, where);
   if (dump_file && (dump_flags & TDF_DETAILS))
-    dump_stmt_cost (dump_file, data, count, kind, stmt_info, misalign, where);
-  return targetm.vectorize.add_stmt_cost (data, count, kind,
-					  stmt_info, misalign, where);
+    dump_stmt_cost (dump_file, data, count, kind, stmt_info, misalign,
+		    cost, where);
+  return cost;
 }
 
 /* Alias targetm.vectorize.finish_cost.  */