Patchwork [16/20] interchange with isl

login
register
mail settings
Submitter Sebastian Pop
Date Aug. 15, 2011, 7:12 a.m.
Message ID <1313392379-1525-16-git-send-email-sebpop@gmail.com>
Download mbox | patch
Permalink /patch/110002/
State New
Headers show

Comments

Sebastian Pop - Aug. 15, 2011, 7:12 a.m.
---
 gcc/graphite-interchange.c |   17 +++++++++++++++++
 gcc/graphite-poly.h        |   16 ++++++++++++++++
 2 files changed, 33 insertions(+), 0 deletions(-)

Patch

diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c
index b819ece..68b9c1e 100644
--- a/gcc/graphite-interchange.c
+++ b/gcc/graphite-interchange.c
@@ -502,6 +502,23 @@  pbb_interchange_loop_depths (graphite_dim_t depth1, graphite_dim_t depth2,
 
   ppl_Polyhedron_map_space_dimensions (poly, map, dim);
   free (map);
+
+  {
+    isl_dim *d = isl_map_get_dim (pbb->transformed);
+    isl_dim *d1 = isl_dim_range (d);
+    unsigned n = isl_dim_size (d1, isl_dim_out);
+    isl_dim *d2 = isl_dim_add (d1, isl_dim_in, n);
+    isl_map *x = isl_map_universe (d2);
+
+    x = isl_map_equate (x, isl_dim_in, dim1, isl_dim_out, dim2);
+    x = isl_map_equate (x, isl_dim_in, dim2, isl_dim_out, dim1);
+
+    for (i = 0; i < n; i++)
+      if (i != dim1 && i != dim2)
+	x = isl_map_equate (x, isl_dim_in, i, isl_dim_out, i);
+
+    pbb->transformed = isl_map_apply_range (pbb->transformed, x);
+  }
 }
 
 /* Apply the interchange of loops at depths DEPTH1 and DEPTH2 to all
diff --git a/gcc/graphite-poly.h b/gcc/graphite-poly.h
index b05e2e7..bf537b1 100644
--- a/gcc/graphite-poly.h
+++ b/gcc/graphite-poly.h
@@ -1148,6 +1148,22 @@  pbb_update_scattering (poly_bb_p pbb, graphite_dim_t level, int dewey)
   ppl_delete_Linear_Expression (expr);
   ppl_Polyhedron_add_constraint (ph, new_cstr);
   ppl_delete_Constraint (new_cstr);
+
+  {
+    isl_dim *d = isl_map_get_dim (pbb->transformed);
+    isl_dim *d1 = isl_dim_range (d);
+    unsigned i, n = isl_dim_size (d1, isl_dim_out);
+    isl_dim *d2 = isl_dim_add (d1, isl_dim_in, n);
+    isl_map *x = isl_map_universe (d2);
+
+    x = isl_map_fix_si (x, isl_dim_out, sched, dewey);
+
+    for (i = 0; i < n; i++)
+      if (i != sched)
+	x = isl_map_equate (x, isl_dim_in, i, isl_dim_out, i);
+
+    pbb->transformed = isl_map_apply_range (pbb->transformed, x);
+  }
 }
 
 /* Updates the scattering of all the PBBs under LST to be at the DEWEY