aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2011-01-25 06:45:04 +0000
committerSebastian Pop <spop@gcc.gnu.org>2011-01-25 06:45:04 +0000
commit92d236802c2627840591e08c522c3abe6e63ff70 (patch)
tree7fe78ae418b940d6266e911d1b01fdf12edfb407
parent2f51defffd48a3d6411a4000e6f286d92eb5a711 (diff)
downloadgcc-92d236802c2627840591e08c522c3abe6e63ff70.zip
gcc-92d236802c2627840591e08c522c3abe6e63ff70.tar.gz
gcc-92d236802c2627840591e08c522c3abe6e63ff70.tar.bz2
Test the profitability of interchange on the perfect nest.
2011-01-25 Sebastian Pop <sebastian.pop@amd.com> * graphite-interchange.c (lst_interchange_profitable_p): Takes a loop nest and two loop depths as parameters. (lst_try_interchange_loops): Call lst_interchange_profitable_p after lst_perfect_nestify. From-SVN: r169201
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/ChangeLog.graphite7
-rw-r--r--gcc/graphite-interchange.c16
3 files changed, 21 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 233f1b6..8d13d2c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2011-01-25 Sebastian Pop <sebastian.pop@amd.com>
+ * graphite-interchange.c (lst_interchange_profitable_p): Takes a loop
+ nest and two loop depths as parameters.
+ (lst_try_interchange_loops): Call lst_interchange_profitable_p after
+ lst_perfect_nestify.
+
+2011-01-25 Sebastian Pop <sebastian.pop@amd.com>
+
* graphite-dependences.c (print_pddr): Call
ppl_io_fprint_Pointset_Powerset_C_Polyhedron.
diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite
index 2dd40cc..2363df6 100644
--- a/gcc/ChangeLog.graphite
+++ b/gcc/ChangeLog.graphite
@@ -1,5 +1,12 @@
2011-01-15 Sebastian Pop <sebastian.pop@amd.com>
+ * graphite-interchange.c (lst_interchange_profitable_p): Takes a loop
+ nest and two loop depths as parameters.
+ (lst_try_interchange_loops): Call lst_interchange_profitable_p after
+ lst_perfect_nestify.
+
+2011-01-15 Sebastian Pop <sebastian.pop@amd.com>
+
* graphite-dependences.c (print_pddr): Call
ppl_io_fprint_Pointset_Powerset_C_Polyhedron.
diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c
index b90c4e7..934839a 100644
--- a/gcc/graphite-interchange.c
+++ b/gcc/graphite-interchange.c
@@ -446,20 +446,18 @@ memory_strides_in_loop (lst_p loop, graphite_dim_t depth, mpz_t strides)
profitable to interchange the loops at DEPTH1 and DEPTH2. */
static bool
-lst_interchange_profitable_p (lst_p loop1, lst_p loop2)
+lst_interchange_profitable_p (lst_p nest, int depth1, int depth2)
{
mpz_t d1, d2;
bool res;
- gcc_assert (loop1 && loop2
- && LST_LOOP_P (loop1) && LST_LOOP_P (loop2)
- && lst_depth (loop1) < lst_depth (loop2));
+ gcc_assert (depth1 < depth2);
mpz_init (d1);
mpz_init (d2);
- memory_strides_in_loop (loop1, lst_depth (loop1), d1);
- memory_strides_in_loop (loop2, lst_depth (loop2), d2);
+ memory_strides_in_loop (nest, depth1, d1);
+ memory_strides_in_loop (nest, depth2, d2);
res = mpz_cmp (d1, d2) < 0;
@@ -592,12 +590,12 @@ lst_try_interchange_loops (scop_p scop, lst_p loop1, lst_p loop2)
lst_p before = NULL, nest = NULL, after = NULL;
- if (!lst_interchange_profitable_p (loop1, loop2))
- return false;
-
if (!lst_perfectly_nested_p (loop1, loop2))
lst_perfect_nestify (loop1, loop2, &before, &nest, &after);
+ if (!lst_interchange_profitable_p (loop2, depth1, depth2))
+ return false;
+
lst_apply_interchange (loop2, depth1, depth2);
/* Sync the transformed LST information and the PBB scatterings