__isl_take isl_printer *p,
__isl_keep isl_band *band);
-Alternatively, the schedule mapping
-can also be obtained in pieces using the following functions.
-
- int isl_schedule_n_band(__isl_keep isl_schedule *sched);
- __isl_give isl_union_map *isl_schedule_get_band(
- __isl_keep isl_schedule *sched, unsigned band);
-
-C<isl_schedule_n_band> returns the maximal number of bands.
-C<isl_schedule_get_band> returns a union of mappings from a domain to
-the band of consecutive schedule dimensions with the given sequence
-number for that domain. Bands with the same sequence number but for
-different domains may be completely unrelated.
-Within a band, the corresponding coordinates of the distance vectors
-are all non-negative, assuming that the coordinates for all previous
-bands are all zero.
-
=head2 Parametric Vertex Enumeration
The parametric vertex enumeration described in this section
__isl_give isl_band_list *isl_schedule_get_band_forest(
__isl_keep isl_schedule *schedule);
-int isl_schedule_n_band(__isl_keep isl_schedule *sched);
-__isl_give isl_union_map *isl_schedule_get_band(__isl_keep isl_schedule *sched,
- unsigned band);
-
__isl_give isl_printer *isl_printer_print_schedule(__isl_take isl_printer *p,
__isl_keep isl_schedule *schedule);
void isl_schedule_dump(__isl_keep isl_schedule *schedule);
return umap;
}
-int isl_schedule_n_band(__isl_keep isl_schedule *sched)
-{
- return sched ? sched->n_band : 0;
-}
-
-/* Construct a mapping that maps each domain to the band in its schedule
- * with the specified band index. Note that bands with the same index
- * but for different domains do not need to be related.
- */
-__isl_give isl_union_map *isl_schedule_get_band(__isl_keep isl_schedule *sched,
- unsigned band)
-{
- int i;
- isl_union_map *umap;
-
- if (!sched)
- return NULL;
-
- umap = isl_union_map_empty(isl_dim_copy(sched->dim));
- for (i = 0; i < sched->n; ++i) {
- int start, end;
- isl_map *map;
-
- if (band >= sched->node[i].n_band)
- continue;
-
- start = band > 0 ? sched->node[i].band_end[band - 1] : 0;
- end = sched->node[i].band_end[band];
-
- map = isl_map_copy(sched->node[i].sched);
-
- map = isl_map_project_out(map, isl_dim_out, end,
- sched->n_total_row - end);
- map = isl_map_project_out(map, isl_dim_out, 0, start);
-
- umap = isl_union_map_add_map(umap, map);
- }
-
- return umap;
-}
-
static __isl_give isl_band_list *construct_band_list(
__isl_keep isl_schedule *schedule, __isl_keep isl_band *parent,
int band_nr, int *parent_active, int n_active);