@@ -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
@@ -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