Outline lst_niter_for_loop.
authorSebastian Pop <sebastian.pop@amd.com>
Thu, 30 Sep 2010 21:20:14 +0000 (21:20 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Thu, 30 Sep 2010 21:20:14 +0000 (21:20 +0000)
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.

From-SVN: r164800

gcc/ChangeLog
gcc/ChangeLog.graphite
gcc/graphite-blocking.c
gcc/graphite-poly.h

index 24655af..2461df8 100644 (file)
@@ -1,5 +1,11 @@
 2010-09-30  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-30  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.
 
index 313869c..a22f77e 100644 (file)
@@ -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.
 
index 6e4334a..3951b60 100644 (file)
@@ -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);
index 5ed1b04..5f536a8 100644 (file)
@@ -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.  */