isl_flow.c: sched_info_alloc: use isl_val
[platform/upstream/isl.git] / include / isl / band.h
1 #ifndef ISL_BAND_H
2 #define ISL_BAND_H
3
4 #include <isl/printer.h>
5 #include <isl/list.h>
6 #include <isl/union_map_type.h>
7 #include <isl/vec.h>
8
9 #if defined(__cplusplus)
10 extern "C" {
11 #endif
12
13 struct isl_band;
14 typedef struct isl_band isl_band;
15
16 ISL_DECLARE_LIST(band)
17
18 __isl_give isl_band *isl_band_copy(__isl_keep isl_band *band);
19 void *isl_band_free(__isl_take isl_band *band);
20
21 isl_ctx *isl_band_get_ctx(__isl_keep isl_band *band);
22
23 int isl_band_has_children(__isl_keep isl_band *band);
24 __isl_give isl_band_list *isl_band_get_children(
25         __isl_keep isl_band *band);
26
27 __isl_give isl_union_map *isl_band_get_prefix_schedule(
28         __isl_keep isl_band *band);
29 __isl_give isl_union_map *isl_band_get_partial_schedule(
30         __isl_keep isl_band *band);
31 __isl_give isl_union_map *isl_band_get_suffix_schedule(
32         __isl_keep isl_band *band);
33
34 int isl_options_set_tile_scale_tile_loops(isl_ctx *ctx, int val);
35 int isl_options_get_tile_scale_tile_loops(isl_ctx *ctx);
36 int isl_options_set_tile_shift_point_loops(isl_ctx *ctx, int val);
37 int isl_options_get_tile_shift_point_loops(isl_ctx *ctx);
38
39 int isl_band_tile(__isl_keep isl_band *band, __isl_take isl_vec *sizes);
40 int isl_band_split(__isl_keep isl_band *band, int pos);
41
42 int isl_band_n_member(__isl_keep isl_band *band);
43 int isl_band_member_is_zero_distance(__isl_keep isl_band *band, int pos);
44
45 int isl_band_list_foreach_band(__isl_keep isl_band_list *list,
46         int (*fn)(__isl_keep isl_band *band, void *user), void *user);
47
48 __isl_give isl_printer *isl_printer_print_band(__isl_take isl_printer *p,
49         __isl_keep isl_band *band);
50 void isl_band_dump(__isl_keep isl_band *band);
51
52 #if defined(__cplusplus)
53 }
54 #endif
55
56 #endif