From 97c15cb3d94d3f213264abd7f0014de79338cac2 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sun, 19 Jan 2014 13:16:10 +0100 Subject: [PATCH] add isl_schedule_align_params Signed-off-by: Sven Verdoolaege --- doc/user.pod | 8 ++++++++ include/isl/schedule.h | 2 ++ isl_schedule.c | 23 +++++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/doc/user.pod b/doc/user.pod index 379e30aa..6d81317c 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -7331,6 +7331,14 @@ and tuple identifiers referenced by the nodes of the given schedule. __isl_give isl_schedule *isl_schedule_reset_user( __isl_take isl_schedule *schedule); +The following function aligns the parameters of all nodes +in the given schedule to the given space. + + #include + __isl_give isl_schedule *isl_schedule_align_params( + __isl_take isl_schedule *schedule, + __isl_take isl_space *space); + An C representation of the schedule can be obtained from an C using the following function. diff --git a/include/isl/schedule.h b/include/isl/schedule.h index 37b2b498..d743b6ec 100644 --- a/include/isl/schedule.h +++ b/include/isl/schedule.h @@ -108,6 +108,8 @@ __isl_give isl_schedule *isl_schedule_set( __isl_give isl_schedule *isl_schedule_reset_user( __isl_take isl_schedule *schedule); +__isl_give isl_schedule *isl_schedule_align_params( + __isl_take isl_schedule *schedule, __isl_take isl_space *space); __isl_give isl_band_list *isl_schedule_get_band_forest( __isl_keep isl_schedule *schedule); diff --git a/isl_schedule.c b/isl_schedule.c index 2a568ba2..39a2d6f4 100644 --- a/isl_schedule.c +++ b/isl_schedule.c @@ -392,6 +392,29 @@ __isl_give isl_schedule *isl_schedule_reset_user( return isl_schedule_map_schedule_node(schedule, &reset_user, NULL); } +/* Wrapper around isl_schedule_node_align_params for use as + * an isl_schedule_map_schedule_node callback. + */ +static __isl_give isl_schedule_node *align_params( + __isl_take isl_schedule_node *node, void *user) +{ + isl_space *space = user; + + return isl_schedule_node_align_params(node, isl_space_copy(space)); +} + +/* Align the parameters of all nodes in schedule "schedule" + * to those of "space". + */ +__isl_give isl_schedule *isl_schedule_align_params( + __isl_take isl_schedule *schedule, __isl_take isl_space *space) +{ + schedule = isl_schedule_map_schedule_node(schedule, + &align_params, space); + isl_space_free(space); + return schedule; +} + /* Return an isl_union_map representation of the schedule. * If we still have access to the schedule tree, then we return * an isl_union_map corresponding to the subtree schedule of the child -- 2.11.4.GIT