Patchwork [4/8] Outline lst_niter_for_loop.

login
register
mail settings
Submitter Sebastian Pop
Date Sept. 9, 2010, 7:30 p.m.
Message ID <1284060606-26216-4-git-send-email-sebpop@gmail.com>
Download mbox | patch
Permalink /patch/64323/
State New
Headers show

Comments

Sebastian Pop - Sept. 9, 2010, 7:30 p.m.
2010-09-09  Sebastian Pop  <sebastian.pop@amd.com>

	* graphite-blocking.c (pbb_strip_mine_profitable_p): Renamed
	lst_strip_mine_profitable_p.  Call lst_niter_for_loop.
	* graphite-poly.h (lst_niter_for_loop): New.
---
 gcc/ChangeLog.graphite  |    6 ++++++
 gcc/graphite-blocking.c |   17 ++++++++---------
 gcc/graphite-poly.h     |   13 +++++++++++++
 3 files changed, 27 insertions(+), 9 deletions(-)

Patch

diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index 46dd03b..831c2fe 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,5 +1,11 @@ 
 2010-09-09  Sebastian Pop  <sebastian.pop@amd.com>
 
+	* graphite-blocking.c (pbb_strip_mine_profitable_p): Renamed
+	lst_strip_mine_profitable_p.  Call lst_niter_for_loop.
+	* graphite-poly.h (lst_niter_for_loop): New.
+
+2010-09-09  Sebastian Pop  <sebastian.pop@amd.com>
+
 	* graphite-poly.c (apply_poly_transforms): Do not abort when the
 	transform read from disk is not legal.  Call fatal_error instead.
 
diff --git a/gcc/graphite-blocking.c b/gcc/graphite-blocking.c
index 6e4334a..3951b60 100644
--- a/gcc/graphite-blocking.c
+++ b/gcc/graphite-blocking.c
@@ -172,25 +172,25 @@  pbb_strip_mine_time_depth (poly_bb_p pbb, int time_depth, int stride)
   return true;
 }
 
-/* Returns true when strip mining with STRIDE of the loop around PBB
-   at DEPTH is profitable.  */
+/* Returns true when strip mining with STRIDE of the loop LST is
+   profitable.  */
 
 static bool
-pbb_strip_mine_profitable_p (poly_bb_p pbb,
-			     graphite_dim_t depth,
-			     int stride)
+lst_strip_mine_profitable_p (lst_p lst, int stride)
 {
   mpz_t niter, strip_stride;
   bool res;
 
+  gcc_assert (LST_LOOP_P (lst));
   mpz_init (strip_stride);
   mpz_init (niter);
+
   mpz_set_si (strip_stride, stride);
-  pbb_number_of_iterations_at_time (pbb, psct_dynamic_dim (pbb, depth), niter);
+  lst_niter_for_loop (lst, niter);
   res = (mpz_cmp (niter, strip_stride) > 0);
+
   mpz_clear (strip_stride);
   mpz_clear (niter);
-
   return res;
 }
 
@@ -244,8 +244,7 @@  lst_do_strip_mine (lst_p lst)
 
   depth = lst_depth (lst);
   if (depth >= 0
-      && pbb_strip_mine_profitable_p (LST_PBB (lst_find_first_pbb (lst)),
-				      depth, stride))
+      && lst_strip_mine_profitable_p (lst, stride))
     {
       res |= lst_do_strip_mine_loop (lst, lst_depth (lst));
       lst_add_loop_under_loop (lst);
diff --git a/gcc/graphite-poly.h b/gcc/graphite-poly.h
index 5ed1b04..5f536a8 100644
--- a/gcc/graphite-poly.h
+++ b/gcc/graphite-poly.h
@@ -1062,6 +1062,19 @@  lst_remove_from_sequence (lst_p lst)
   LST_LOOP_FATHER (lst) = NULL;
 }
 
+/* Sets NITER to the upper bound approximation of the number of
+   iterations of loop LST.  */
+
+static inline void
+lst_niter_for_loop (lst_p lst, mpz_t niter)
+{
+  int depth = lst_depth (lst);
+  poly_bb_p pbb = LST_PBB (lst_find_first_pbb (lst));
+
+  gcc_assert (LST_LOOP_P (lst));
+  pbb_number_of_iterations_at_time (pbb, psct_dynamic_dim (pbb, depth), niter);
+}
+
 /* Updates the scattering of PBB to be at the DEWEY number in the loop
    at depth LEVEL.  */