From 5a552c21eae010bdf71354952fbf156fcc980186 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Sun, 28 Jul 2013 18:40:18 +0200 Subject: [PATCH] deprecate band forests Now that isl_schedule_constraints_compute_schedule produces schedule tree based schedules and schedule trees have support for all the operations that band forests support (and many more), we no longer have any use for band forests. We still keep the code around for a while for backward compatibility. Signed-off-by: Sven Verdoolaege --- doc/user.pod | 110 ++--------------------------------------------------------- 1 file changed, 2 insertions(+), 108 deletions(-) diff --git a/doc/user.pod b/doc/user.pod index 84fd469b..3c191ccf 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -222,6 +222,8 @@ to compute the sum on the union of definition domains. The original behavior of C was confused and is no longer available. +=item * Band forests have been replaced by schedule trees. + =back =head1 License @@ -7976,114 +7978,6 @@ The generated schedule represents a schedule tree. For more information on schedule trees, see L. -A representation of the schedule as a forest of bands can be obtained -using the following function. - - __isl_give isl_band_list *isl_schedule_get_band_forest( - __isl_keep isl_schedule *schedule); - -If the input schedule is represented by a schedule tree, then a call -to C replaces the internal schedule tree -representation by a band forest representation. - -The individual bands can be visited in depth-first post-order -using the following function. - - #include - int isl_schedule_foreach_band( - __isl_keep isl_schedule *sched, - int (*fn)(__isl_keep isl_band *band, void *user), - void *user); - -The list can be manipulated as explained in L<"Lists">. -The bands inside the list can be copied and freed using the following -functions. - - #include - __isl_give isl_band *isl_band_copy( - __isl_keep isl_band *band); - __isl_null isl_band *isl_band_free( - __isl_take isl_band *band); - -Each band contains zero or more scheduling dimensions. -These are referred to as the members of the band. -The section of the schedule that corresponds to the band is -referred to as the partial schedule of the band. -For those nodes that participate in a band, the outer scheduling -dimensions form the prefix schedule, while the inner scheduling -dimensions form the suffix schedule. -That is, if we take a cut of the band forest, then the union of -the concatenations of the prefix, partial and suffix schedules of -each band in the cut is equal to the entire schedule (modulo -some possible padding at the end with zero scheduling dimensions). -The properties of a band can be inspected using the following functions. - - #include - int isl_band_has_children(__isl_keep isl_band *band); - __isl_give isl_band_list *isl_band_get_children( - __isl_keep isl_band *band); - - __isl_give isl_union_map *isl_band_get_prefix_schedule( - __isl_keep isl_band *band); - __isl_give isl_union_map *isl_band_get_partial_schedule( - __isl_keep isl_band *band); - __isl_give isl_union_map *isl_band_get_suffix_schedule( - __isl_keep isl_band *band); - - int isl_band_n_member(__isl_keep isl_band *band); - int isl_band_member_is_coincident( - __isl_keep isl_band *band, int pos); - - int isl_band_list_foreach_band( - __isl_keep isl_band_list *list, - int (*fn)(__isl_keep isl_band *band, void *user), - void *user); - -Note that a scheduling dimension is considered to be ``coincident'' -if it satisfies the coincidence constraints within its band. -That is, if the dependence distances of the coincidence -constraints are all zero in that direction (for fixed -iterations of outer bands). -Like C, -the function C calls C on the bands -in depth-first post-order. - -A band can be tiled using the following function. - - #include - int isl_band_tile(__isl_keep isl_band *band, - __isl_take isl_vec *sizes); - - int isl_options_set_tile_scale_tile_loops(isl_ctx *ctx, - int val); - int isl_options_get_tile_scale_tile_loops(isl_ctx *ctx); - int isl_options_set_tile_shift_point_loops(isl_ctx *ctx, - int val); - int isl_options_get_tile_shift_point_loops(isl_ctx *ctx); - -The C function tiles the band using the given tile sizes -inside its schedule. -A new child band is created to represent the point loops and it is -inserted between the modified band and its children. -The C option specifies whether the tile -loops iterators should be scaled by the tile sizes. -If the C option is set, then the point loops -are shifted to start at zero. - -A band can be split into two nested bands using the following function. - - int isl_band_split(__isl_keep isl_band *band, int pos); - -The resulting outer band contains the first C dimensions of C -while the inner band contains the remaining dimensions. - -A representation of the band can be printed using - - #include - __isl_give isl_printer *isl_printer_print_band( - __isl_take isl_printer *p, - __isl_keep isl_band *band); - =head3 Options #include -- 2.11.4.GIT