24#define EL isl_schedule_tree
29#define EL_BASE schedule_tree
87 "allocation should have failed",
108 if (!
dup->contraction || !
dup->expansion)
137 if (
tree->children) {
138 dup->children = isl_schedule_tree_list_copy(
tree->children);
142 dup->anchored =
tree->anchored;
184 switch (
tree->type) {
216 isl_schedule_tree_list_free(
tree->children);
317 if (!contraction || !expansion)
325 tree->contraction = contraction;
326 tree->expansion = expansion;
354 tree->extension = extension;
379 tree->filter = filter;
478 "unhandled case",
return -1);
496 if (anchored < 0 ||
n < 0)
499 for (i = 0; !anchored && i <
n; ++i) {
509 if (anchored ==
tree->anchored)
514 tree->anchored = anchored;
531 ctx = isl_schedule_tree_list_get_ctx(list);
536 tree->children = list;
541 isl_schedule_tree_list_free(list);
555 isl_schedule_tree_list *list;
557 if (!tree1 || !tree2)
562 list = isl_schedule_tree_list_copy(tree1->children);
565 list = isl_schedule_tree_list_alloc(ctx, 2);
566 list = isl_schedule_tree_list_add(list, tree1);
569 isl_schedule_tree_list *children;
571 children = isl_schedule_tree_list_copy(tree2->children);
572 list = isl_schedule_tree_list_concat(list, children);
575 list = isl_schedule_tree_list_add(list, tree2);
635 if (!tree1 || !tree2)
639 if (tree1->type != tree2->type)
642 switch (tree1->type) {
658 tree1->contraction, tree2->contraction);
688 if (n1 < 0 || n2 < 0)
692 for (i = 0; i < n1; ++i) {
715 return tree->children != NULL;
729 return isl_schedule_tree_list_n_schedule_tree(
tree->children);
741 "schedule tree has no explicit children",
return NULL);
742 return isl_schedule_tree_list_get_schedule_tree(
tree->children,
pos);
766 tree->children = isl_schedule_tree_list_free(
tree->children);
785 "tree does not have any explicit children",
787 if (pos < 0 || pos >=
n)
789 "position out of bounds",
794 tree->children = isl_schedule_tree_list_drop(
tree->children,
pos, 1);
821 if (!
tree->children &&
pos == 0)
829 "can only replace single child by leaf",
834 if (!
tree->children &&
pos == 0)
836 isl_schedule_tree_list_from_schedule_tree(child);
838 tree->children = isl_schedule_tree_list_set_schedule_tree(
859 if (!
tree || !children)
861 isl_schedule_tree_list_free(
tree->children);
862 tree->children = children;
866 isl_schedule_tree_list_free(children);
965 if (
n < 0 || !filter)
968 for (i = 0; i <
n; ++i) {
1111 "not a band node",
return NULL);
1127 "not a band node",
goto error);
1150 "not a band node",
return NULL);
1167 "not a band node",
return NULL);
1174 isl_multi_union_pw_aff_free(
schedule);
1268 "not a band node",
return NULL);
1288 "not a band node",
goto error);
1316 "not a band node",
return NULL);
1331 "not a context node",
return NULL);
1346 "not a domain node",
return NULL);
1362 "not a domain node",
goto error);
1384 "not an expansion node",
return NULL);
1399 "not an expansion node",
return NULL);
1414 if (!
tree || !contraction || !expansion)
1419 "not an expansion node",
return NULL);
1422 tree->contraction = contraction;
1424 tree->expansion = expansion;
1444 "not an extension node",
return NULL);
1455 if (!
tree || !extension)
1460 "not an extension node",
return NULL);
1462 tree->extension = extension;
1481 "not a filter node",
return NULL);
1492 if (!
tree || !filter)
1497 "not a filter node",
return NULL);
1500 tree->filter = filter;
1519 "not a guard node",
return NULL);
1534 "not a mark node",
return NULL);
1592 mv = isl_multi_val_zero(space);
1702 child = isl_schedule_tree_list_get_schedule_tree(
tree->children, 0);
1763 mv = isl_multi_val_zero(space);
1768 for (i = 0; i <
n; ++i) {
1777 child = isl_schedule_tree_list_get_schedule_tree(
1785 mv_copy = isl_multi_val_copy(mv);
1787 mv_copy = isl_multi_val_align_params(mv_copy, space);
1806 }
else if (dim < dim_i) {
1809 }
else if (dim_i < dim) {
1816 isl_multi_val_free(mv);
1843 switch (
tree->type) {
1848 "cannot construct subtree schedule of tree "
1849 "with extension nodes",
1885 "leaf node should be handled by caller",
return NULL);
1915 "missing children",
return NULL);
1920 for (i = 0; i <
n; ++i) {
1949 switch (
tree->type) {
1954 "context node should be handled by caller",
1958 "guard node should be handled by caller",
1962 "mark node should be handled by caller",
1966 "cannot construct subtree schedule of tree "
1967 "with extension nodes",
return NULL);
1975 "0D band should be handled by caller",
1996 "leaf node should be handled by caller",
return NULL);
2039 "not a band node",
goto error);
2052 isl_multi_val_free(mv);
2066 "not a band node",
goto error);
2079 isl_multi_val_free(mv);
2093 "not a band node",
goto error);
2106 isl_multi_val_free(mv);
2116 if (!
tree || !shift)
2120 "not a band node",
goto error);
2133 isl_multi_union_pw_aff_free(shift);
2145 isl_schedule_tree_list *list1, *list2;
2148 if (!
tree || !child)
2152 "not a sequence node",
goto error);
2156 if (pos < 0 || pos >=
n)
2158 "position out of bounds",
goto error);
2161 "not a sequence node",
goto error);
2163 list1 = isl_schedule_tree_list_copy(
tree->children);
2164 list1 = isl_schedule_tree_list_drop(list1,
pos,
n -
pos);
2165 list2 = isl_schedule_tree_list_copy(
tree->children);
2166 list2 = isl_schedule_tree_list_drop(list2, 0,
pos + 1);
2167 list1 = isl_schedule_tree_list_concat(list1,
2168 isl_schedule_tree_list_copy(child->children));
2169 list1 = isl_schedule_tree_list_concat(list1, list2);
2196 "not a band node",
goto error);
2201 if (!
tree || !child)
2205 isl_multi_val_copy(
sizes));
2218 isl_multi_val_free(
sizes);
2288 ma1 = isl_multi_aff_range_product(
ma1, ma2);
2322 if (pos < 0 || pos >
n)
2324 "position out of bounds",
2330 if (!
tree || !child)
2369 if (
n < 0 || !tree2)
2372 isl_schedule_tree_list *list;
2373 list = isl_schedule_tree_list_from_schedule_tree(tree2);
2377 for (i = 0; i <
n; ++i) {
2407 switch (
tree->type) {
2429 if (!
tree->contraction || !
tree->expansion)
2434 if (!
tree->extension)
2474 switch (
tree->type) {
2498 if (!
tree->contraction || !
tree->expansion)
2504 if (!
tree->extension)
2541 switch (
tree->type) {
2560 "unhandled case",
return -1);
2606 "cannot pullback expansion node",
goto error);
2610 tree->extension, upma);
2611 if (!
tree->extension)
2637 "not a band node",
goto error);
2662 for (i = 0; i <
n; ++i) {
2666 if (coincident < 0 || coincident)
2714 for (i = 0; i <
n; ++i) {
2741#define isl_str const char
2749#define BASE union_set
2753#define BASE union_map
2757#define BASE union_pw_multi_aff
2773 int n_ancestor,
int *child_pos)
2783 if (n_ancestor == 0 && block) {
2788 switch (
tree->type) {
2808 p = print_yaml_field_set(
p,
"context",
tree->context);
2811 p = print_yaml_field_union_set(
p,
"domain",
tree->domain);
2814 p = print_yaml_field_union_pw_multi_aff(
p,
"contraction",
2816 p = print_yaml_field_union_map(
p,
"expansion",
tree->expansion);
2819 p = print_yaml_field_union_map(
p,
"extension",
tree->extension);
2822 p = print_yaml_field_union_set(
p,
"filter",
tree->filter);
2825 p = print_yaml_field_set(
p,
"guard",
tree->guard);
2828 p = print_yaml_field_str(
p,
"mark",
2841 if (n_ancestor > 0 && block) {
2862 for (i = 0; i <
n; ++i) {
2866 if (n_ancestor > 0 && child_pos[0] == i)
2868 n_ancestor - 1, child_pos + 1);
polly Polly Forward operand tree
__isl_null isl_union_pw_multi_aff * isl_union_pw_multi_aff_free(__isl_take isl_union_pw_multi_aff *upma)
__isl_export __isl_give isl_union_set * isl_multi_union_pw_aff_domain(__isl_take isl_multi_union_pw_aff *mupa)
__isl_give isl_printer * isl_printer_print_multi_union_pw_aff(__isl_take isl_printer *p, __isl_keep isl_multi_union_pw_aff *mupa)
__isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_reset_user(__isl_take isl_union_pw_multi_aff *upma)
__isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_multi_val_on_domain(__isl_take isl_union_set *domain, __isl_take isl_multi_val *mv)
__isl_overload __isl_give isl_union_map * isl_union_map_from_multi_union_pw_aff(__isl_take isl_multi_union_pw_aff *mupa)
__isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_align_params(__isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *model)
__isl_give isl_union_pw_multi_aff * isl_union_pw_multi_aff_copy(__isl_keep isl_union_pw_multi_aff *upma)
__isl_give isl_multi_aff * isl_multi_aff_project_out_map(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned n)
__isl_overload __isl_give isl_union_map * isl_union_map_from_union_pw_multi_aff(__isl_take isl_union_pw_multi_aff *upma)
isl_bool isl_union_pw_multi_aff_plain_is_equal(__isl_keep isl_union_pw_multi_aff *upma1, __isl_keep isl_union_pw_multi_aff *upma2)
struct isl_union_pw_multi_aff isl_union_pw_multi_aff
struct isl_multi_aff isl_multi_aff
struct isl_multi_union_pw_aff isl_multi_union_pw_aff
#define isl_calloc_type(ctx, type)
#define isl_die(ctx, errno, msg, code)
void isl_ctx_deref(struct isl_ctx *ctx)
isl_bool isl_bool_ok(int b)
void isl_ctx_ref(struct isl_ctx *ctx)
isl_stat isl_stat(*) void user)
__isl_export __isl_keep const char * isl_id_get_name(__isl_keep isl_id *id)
__isl_null isl_id * isl_id_free(__isl_take isl_id *id)
isl_ctx * isl_id_get_ctx(__isl_keep isl_id *id)
__isl_give isl_id * isl_id_copy(isl_id *id)
__isl_give dup(__isl_keep LIST(EL) *list)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_union_set * isl_schedule_band_get_ast_build_options(__isl_keep isl_schedule_band *band)
isl_bool isl_schedule_band_get_permutable(__isl_keep isl_schedule_band *band)
__isl_give isl_schedule_band * isl_schedule_band_mod(__isl_take isl_schedule_band *band, __isl_take isl_multi_val *mv)
__isl_give isl_schedule_band * isl_schedule_band_pullback_union_pw_multi_aff(__isl_take isl_schedule_band *band, __isl_take isl_union_pw_multi_aff *upma)
__isl_give isl_schedule_band * isl_schedule_band_copy(__isl_keep isl_schedule_band *band)
int isl_schedule_band_is_anchored(__isl_keep isl_schedule_band *band)
__isl_give isl_schedule_band * isl_schedule_band_member_set_coincident(__isl_take isl_schedule_band *band, int pos, int coincident)
__isl_give isl_schedule_band * isl_schedule_band_reset_user(__isl_take isl_schedule_band *band)
__isl_give isl_schedule_band * isl_schedule_band_shift(__isl_take isl_schedule_band *band, __isl_take isl_multi_union_pw_aff *shift)
__isl_give isl_schedule_band * isl_schedule_band_tile(__isl_take isl_schedule_band *band, __isl_take isl_multi_val *sizes)
__isl_give isl_space * isl_schedule_band_get_space(__isl_keep isl_schedule_band *band)
__isl_give isl_schedule_band * isl_schedule_band_point(__isl_take isl_schedule_band *band, __isl_keep isl_schedule_band *tile, __isl_take isl_multi_val *sizes)
isl_ctx * isl_schedule_band_get_ctx(__isl_keep isl_schedule_band *band)
__isl_give isl_schedule_band * isl_schedule_band_member_set_isolate_ast_loop_type(__isl_take isl_schedule_band *band, int pos, enum isl_ast_loop_type type)
isl_size isl_schedule_band_n_member(__isl_keep isl_schedule_band *band)
__isl_give isl_schedule_band * isl_schedule_band_replace_ast_build_option(__isl_take isl_schedule_band *band, __isl_take isl_set *drop, __isl_take isl_set *add)
__isl_give isl_schedule_band * isl_schedule_band_gist(__isl_take isl_schedule_band *band, __isl_take isl_union_set *context)
__isl_give isl_schedule_band * isl_schedule_band_align_params(__isl_take isl_schedule_band *band, __isl_take isl_space *space)
__isl_give isl_schedule_band * isl_schedule_band_scale(__isl_take isl_schedule_band *band, __isl_take isl_multi_val *mv)
__isl_give isl_schedule_band * isl_schedule_band_member_set_ast_loop_type(__isl_take isl_schedule_band *band, int pos, enum isl_ast_loop_type type)
__isl_give isl_multi_union_pw_aff * isl_schedule_band_get_partial_schedule(__isl_keep isl_schedule_band *band)
__isl_give isl_schedule_band * isl_schedule_band_drop(__isl_take isl_schedule_band *band, int pos, int n)
__isl_give isl_schedule_band * isl_schedule_band_scale_down(__isl_take isl_schedule_band *band, __isl_take isl_multi_val *mv)
__isl_give isl_set * isl_schedule_band_get_ast_isolate_option(__isl_keep isl_schedule_band *band, int depth)
isl_bool isl_schedule_band_plain_is_equal(__isl_keep isl_schedule_band *band1, __isl_keep isl_schedule_band *band2)
__isl_give isl_schedule_band * isl_schedule_band_set_ast_build_options(__isl_take isl_schedule_band *band, __isl_take isl_union_set *options)
__isl_give isl_schedule_band * isl_schedule_band_intersect_domain(__isl_take isl_schedule_band *band, __isl_take isl_union_set *domain)
enum isl_ast_loop_type isl_schedule_band_member_get_ast_loop_type(__isl_keep isl_schedule_band *band, int pos)
enum isl_ast_loop_type isl_schedule_band_member_get_isolate_ast_loop_type(__isl_keep isl_schedule_band *band, int pos)
__isl_give isl_schedule_band * isl_schedule_band_set_partial_schedule(__isl_take isl_schedule_band *band, __isl_take isl_multi_union_pw_aff *schedule)
isl_bool isl_schedule_band_member_get_coincident(__isl_keep isl_schedule_band *band, int pos)
__isl_null isl_schedule_band * isl_schedule_band_free(__isl_take isl_schedule_band *band)
__isl_give isl_schedule_band * isl_schedule_band_set_permutable(__isl_take isl_schedule_band *band, int permutable)
static __isl_give isl_union_set * initial_domain_from_children(__isl_keep isl_schedule_tree *tree)
__isl_give isl_multi_union_pw_aff * isl_schedule_tree_band_get_partial_schedule(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_band_set_permutable(__isl_take isl_schedule_tree *tree, int permutable)
__isl_give isl_schedule_tree * isl_schedule_tree_from_pair(enum isl_schedule_node_type type, __isl_take isl_schedule_tree *tree1, __isl_take isl_schedule_tree *tree2)
__isl_null isl_schedule_tree * isl_schedule_tree_free(__isl_take isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_extension_set_extension(__isl_take isl_schedule_tree *tree, __isl_take isl_union_map *extension)
static __isl_give isl_union_map * subtree_schedule_extend(__isl_keep isl_schedule_tree *tree, __isl_take isl_union_map *outer)
__isl_give isl_schedule_tree * isl_schedule_tree_from_filter(__isl_take isl_union_set *filter)
__isl_give isl_schedule_tree * isl_schedule_tree_from_extension(__isl_take isl_union_map *extension)
__isl_give isl_schedule_tree * isl_schedule_tree_pullback_union_pw_multi_aff(__isl_take isl_schedule_tree *tree, __isl_take isl_union_pw_multi_aff *upma)
__isl_give isl_schedule_tree * isl_schedule_tree_band_scale_down(__isl_take isl_schedule_tree *tree, __isl_take isl_multi_val *mv)
isl_size isl_schedule_tree_band_n_member(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_insert_band(__isl_take isl_schedule_tree *tree, __isl_take isl_schedule_band *band)
__isl_give isl_schedule_tree * isl_schedule_tree_band_gist(__isl_take isl_schedule_tree *tree, __isl_take isl_union_set *context)
__isl_give isl_schedule_tree * isl_schedule_tree_from_band(__isl_take isl_schedule_band *band)
__isl_give isl_schedule_tree * isl_schedule_tree_band_mod(__isl_take isl_schedule_tree *tree, __isl_take isl_multi_val *mv)
__isl_give isl_space * isl_schedule_tree_band_get_space(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_from_domain(__isl_take isl_union_set *domain)
__isl_give isl_schedule_tree * isl_schedule_tree_insert_mark(__isl_take isl_schedule_tree *tree, __isl_take isl_id *mark)
__isl_give isl_schedule_tree * isl_schedule_tree_band_member_set_isolate_ast_loop_type(__isl_take isl_schedule_tree *tree, int pos, enum isl_ast_loop_type type)
static __isl_give isl_schedule_tree * isl_schedule_tree_alloc(isl_ctx *ctx, enum isl_schedule_node_type type)
__isl_give isl_schedule_tree * isl_schedule_tree_band_shift(__isl_take isl_schedule_tree *tree, __isl_take isl_multi_union_pw_aff *shift)
isl_bool isl_schedule_tree_band_member_get_coincident(__isl_keep isl_schedule_tree *tree, int pos)
void isl_schedule_tree_dump(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_copy(__isl_keep isl_schedule_tree *tree)
enum isl_ast_loop_type isl_schedule_tree_band_member_get_ast_loop_type(__isl_keep isl_schedule_tree *tree, int pos)
static isl_size range_dim(__isl_keep isl_union_map *umap)
__isl_give isl_union_pw_multi_aff * isl_schedule_tree_expansion_get_contraction(__isl_keep isl_schedule_tree *tree)
static isl_stat set_range_dim(__isl_take isl_map *map, void *user)
__isl_give isl_schedule_tree * isl_schedule_tree_band_split(__isl_take isl_schedule_tree *tree, int pos, int depth)
__isl_give isl_schedule_tree * isl_schedule_tree_domain_set_domain(__isl_take isl_schedule_tree *tree, __isl_take isl_union_set *domain)
__isl_give isl_schedule_tree * isl_schedule_tree_align_params(__isl_take isl_schedule_tree *tree, __isl_take isl_space *space)
isl_bool isl_schedule_tree_plain_is_equal(__isl_keep isl_schedule_tree *tree1, __isl_keep isl_schedule_tree *tree2)
static __isl_give isl_union_map * subtree_schedule_extend_from_children(__isl_keep isl_schedule_tree *tree, __isl_take isl_union_map *outer)
__isl_give isl_schedule_tree * isl_schedule_tree_insert_expansion(__isl_take isl_schedule_tree *tree, __isl_take isl_union_pw_multi_aff *contraction, __isl_take isl_union_map *expansion)
__isl_give isl_schedule_tree * isl_schedule_tree_reset_children(__isl_take isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_insert_domain(__isl_take isl_schedule_tree *tree, __isl_take isl_union_set *domain)
isl_size isl_schedule_tree_n_children(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_band_member_set_coincident(__isl_take isl_schedule_tree *tree, int pos, int coincident)
__isl_give isl_schedule_tree * isl_schedule_tree_set_pair(__isl_take isl_schedule_tree *tree1, __isl_take isl_schedule_tree *tree2)
__isl_give isl_schedule_tree * isl_schedule_tree_insert_guard(__isl_take isl_schedule_tree *tree, __isl_take isl_set *guard)
__isl_give isl_schedule_tree * isl_schedule_tree_dup(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_set_children(__isl_take isl_schedule_tree *tree, __isl_take isl_schedule_tree_list *children)
static isl_bool any_coincident(__isl_keep isl_schedule_band *band)
__isl_give isl_union_map * isl_schedule_tree_expansion_get_expansion(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_band_scale(__isl_take isl_schedule_tree *tree, __isl_take isl_multi_val *mv)
__isl_give isl_schedule_tree * isl_schedule_tree_filter_set_filter(__isl_take isl_schedule_tree *tree, __isl_take isl_union_set *filter)
static __isl_give isl_union_map * append_range(__isl_take isl_union_map *umap, int extra)
static __isl_give isl_space * extract_space_from_filter_child(__isl_keep isl_schedule_tree *tree)
__isl_give isl_printer * isl_printer_print_schedule_tree(__isl_take isl_printer *p, __isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_reset_user(__isl_take isl_schedule_tree *tree)
__isl_give isl_union_map * isl_schedule_tree_get_subtree_schedule_union_map(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_band_member_set_ast_loop_type(__isl_take isl_schedule_tree *tree, int pos, enum isl_ast_loop_type type)
__isl_give isl_schedule_tree * isl_schedule_tree_from_context(__isl_take isl_set *context)
__isl_give isl_schedule_tree * isl_schedule_tree_children_insert_filter(__isl_take isl_schedule_tree *tree, __isl_take isl_union_set *filter)
__isl_give isl_schedule_tree * isl_schedule_tree_update_anchored(__isl_take isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_leaf(isl_ctx *ctx)
__isl_give isl_schedule_tree * isl_schedule_tree_cow(__isl_take isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_from_children(enum isl_schedule_node_type type, __isl_take isl_schedule_tree_list *list)
__isl_give isl_id * isl_schedule_tree_mark_get_id(__isl_keep isl_schedule_tree *tree)
int isl_schedule_tree_has_children(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_insert_filter(__isl_take isl_schedule_tree *tree, __isl_take isl_union_set *filter)
static __isl_give isl_printer * print_tree_band(__isl_take isl_printer *p, __isl_keep isl_schedule_band *band)
static isl_bool domain_less(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_band_intersect_domain(__isl_take isl_schedule_tree *tree, __isl_take isl_union_set *domain)
__isl_give isl_schedule_tree * isl_schedule_tree_band_set_ast_build_options(__isl_take isl_schedule_tree *tree, __isl_take isl_union_set *options)
__isl_give isl_schedule_tree * isl_schedule_tree_expansion_set_contraction_and_expansion(__isl_take isl_schedule_tree *tree, __isl_take isl_union_pw_multi_aff *contraction, __isl_take isl_union_map *expansion)
int isl_schedule_tree_is_anchored(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_from_guard(__isl_take isl_set *guard)
__isl_give isl_schedule_tree * isl_schedule_tree_append_to_leaves(__isl_take isl_schedule_tree *tree1, __isl_take isl_schedule_tree *tree2)
__isl_give isl_schedule_tree * isl_schedule_tree_get_child(__isl_keep isl_schedule_tree *tree, int pos)
__isl_give isl_set * isl_schedule_tree_guard_get_guard(__isl_take isl_schedule_tree *tree)
isl_bool isl_schedule_tree_band_get_permutable(__isl_keep isl_schedule_tree *tree)
__isl_give isl_set * isl_schedule_tree_context_get_context(__isl_keep isl_schedule_tree *tree)
__isl_give isl_union_set * isl_schedule_tree_domain_get_domain(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_from_expansion(__isl_take isl_union_pw_multi_aff *contraction, __isl_take isl_union_map *expansion)
enum isl_schedule_node_type isl_schedule_tree_get_type(__isl_keep isl_schedule_tree *tree)
__isl_give isl_union_set * isl_schedule_tree_filter_get_filter(__isl_keep isl_schedule_tree *tree)
__isl_give isl_printer * isl_printer_print_schedule_tree_mark(__isl_take isl_printer *p, __isl_keep isl_schedule_tree *tree, int n_ancestor, int *child_pos)
static __isl_give isl_union_set * initial_domain(__isl_keep isl_schedule_tree *tree)
static __isl_give isl_union_map * subtree_schedule_extend_child(__isl_keep isl_schedule_tree *tree, __isl_take isl_union_map *outer)
__isl_give isl_schedule_tree * isl_schedule_tree_from_mark(__isl_take isl_id *mark)
static int involves_iteration_domain(__isl_keep isl_schedule_tree *tree)
__isl_give isl_schedule_tree * isl_schedule_tree_child(__isl_take isl_schedule_tree *tree, int pos)
__isl_give isl_schedule_tree * isl_schedule_tree_replace_child(__isl_take isl_schedule_tree *tree, int pos, __isl_take isl_schedule_tree *child)
__isl_give isl_schedule_tree * isl_schedule_tree_insert_context(__isl_take isl_schedule_tree *tree, __isl_take isl_set *context)
__isl_give isl_schedule_tree * isl_schedule_tree_drop_child(__isl_take isl_schedule_tree *tree, int pos)
__isl_give isl_schedule_tree * isl_schedule_tree_band_set_partial_schedule(__isl_take isl_schedule_tree *tree, __isl_take isl_multi_union_pw_aff *schedule)
__isl_give isl_set * isl_schedule_tree_band_get_ast_isolate_option(__isl_keep isl_schedule_tree *tree, int depth)
__isl_give isl_schedule_tree * isl_schedule_tree_band_tile(__isl_take isl_schedule_tree *tree, __isl_take isl_multi_val *sizes)
static __isl_give isl_set * isolate_initial(__isl_keep isl_set *isolate, int pos, int n)
__isl_give isl_schedule_tree * isl_schedule_tree_insert_extension(__isl_take isl_schedule_tree *tree, __isl_take isl_union_map *extension)
__isl_give isl_union_set * isl_schedule_tree_band_get_ast_build_options(__isl_keep isl_schedule_tree *tree)
static __isl_give isl_set * isolate_final(__isl_keep isl_set *isolate, int pos, int n)
__isl_give isl_schedule_tree * isl_schedule_tree_sequence_pair(__isl_take isl_schedule_tree *tree1, __isl_take isl_schedule_tree *tree2)
__isl_give isl_schedule_tree * isl_schedule_tree_first_schedule_descendant(__isl_take isl_schedule_tree *tree, __isl_keep isl_schedule_tree *leaf)
isl_ctx * isl_schedule_tree_get_ctx(__isl_keep isl_schedule_tree *tree)
isl_bool isl_schedule_tree_is_subtree_anchored(__isl_keep isl_schedule_tree *tree)
int isl_schedule_tree_is_leaf(__isl_keep isl_schedule_tree *tree)
__isl_give isl_union_map * isl_schedule_tree_extension_get_extension(__isl_take isl_schedule_tree *tree)
enum isl_ast_loop_type isl_schedule_tree_band_member_get_isolate_ast_loop_type(__isl_keep isl_schedule_tree *tree, int pos)
__isl_give isl_schedule_tree * isl_schedule_tree_sequence_splice(__isl_take isl_schedule_tree *tree, int pos, __isl_take isl_schedule_tree *child)
static __isl_give isl_map * isolate(__isl_take isl_set *set, int pos)
static __isl_give isl_map * universe(__isl_take isl_map *map)
__isl_export __isl_give isl_map * isl_map_apply_range(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_export __isl_give isl_space * isl_map_get_space(__isl_keep isl_map *map)
__isl_export __isl_give isl_map * isl_map_uncurry(__isl_take isl_map *map)
__isl_export __isl_give isl_map * isl_set_unwrap(__isl_take isl_set *set)
__isl_export __isl_give isl_set * isl_map_wrap(__isl_take isl_map *map)
isl_size isl_map_dim(__isl_keep isl_map *map, enum isl_dim_type type)
__isl_export __isl_give isl_map * isl_map_flatten_domain(__isl_take isl_map *map)
__isl_null isl_map * isl_map_free(__isl_take isl_map *map)
__isl_give isl_map * isl_map_project_out(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_map * isl_map_from_multi_aff(__isl_take isl_multi_aff *maff)
int isl_printer_get_yaml_style(__isl_keep isl_printer *p)
__isl_give isl_printer * isl_printer_yaml_start_mapping(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_yaml_next(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_print_int(__isl_take isl_printer *p, int i)
#define ISL_YAML_STYLE_FLOW
__isl_null isl_printer * isl_printer_free(__isl_take isl_printer *printer)
__isl_give isl_printer * isl_printer_yaml_end_mapping(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_yaml_end_sequence(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_yaml_start_sequence(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_to_file(isl_ctx *ctx, FILE *file)
#define ISL_YAML_STYLE_BLOCK
__isl_give isl_printer * isl_printer_print_str(__isl_take isl_printer *p, const char *s)
__isl_give isl_printer * isl_printer_start_line(__isl_take isl_printer *p)
__isl_give isl_printer * isl_printer_set_yaml_style(__isl_take isl_printer *p, int yaml_style)
isl_ctx * isl_printer_get_ctx(__isl_keep isl_printer *printer)
__isl_give isl_printer * isl_printer_end_line(__isl_take isl_printer *p)
int isl_options_get_schedule_separate_components(isl_ctx *ctx)
@ isl_schedule_node_filter
@ isl_schedule_node_domain
@ isl_schedule_node_guard
@ isl_schedule_node_extension
@ isl_schedule_node_expansion
@ isl_schedule_node_sequence
@ isl_schedule_node_error
@ isl_schedule_node_context
isl_ctx * isl_set_get_ctx(__isl_keep isl_set *set)
__isl_export isl_bool isl_set_is_equal(__isl_keep isl_set *set1, __isl_keep isl_set *set2)
__isl_give isl_set * isl_set_reset_user(__isl_take isl_set *set)
__isl_give isl_set * isl_set_set_tuple_id(__isl_take isl_set *set, __isl_take isl_id *id)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
__isl_give isl_set * isl_set_align_params(__isl_take isl_set *set, __isl_take isl_space *model)
__isl_give isl_id * isl_set_get_tuple_id(__isl_keep isl_set *set)
__isl_null isl_space * isl_space_free(__isl_take isl_space *space)
__isl_give isl_space * isl_space_set_from_params(__isl_take isl_space *space)
__isl_give isl_space * isl_space_copy(__isl_keep isl_space *space)
__isl_export __isl_give isl_space * isl_space_range(__isl_take isl_space *space)
__isl_give isl_space * isl_space_add_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned n)
__isl_give isl_space * isl_space_params_alloc(isl_ctx *ctx, unsigned nparam)
__isl_null isl_union_map * isl_union_map_free(__isl_take isl_union_map *umap)
__isl_give isl_union_map * isl_union_map_align_params(__isl_take isl_union_map *umap, __isl_take isl_space *model)
__isl_export isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap, isl_stat(*fn)(__isl_take isl_map *map, void *user), void *user)
__isl_give isl_union_map * isl_union_map_flat_range_product(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_give isl_union_set * isl_union_set_align_params(__isl_take isl_union_set *uset, __isl_take isl_space *model)
__isl_give isl_union_map * isl_union_map_copy(__isl_keep isl_union_map *umap)
__isl_export isl_bool isl_union_map_is_empty(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_from_domain(__isl_take isl_union_set *uset)
__isl_export __isl_give isl_union_map * isl_union_map_apply_domain(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_give isl_union_map * isl_union_map_empty(__isl_take isl_space *space)
__isl_overload __isl_give isl_union_map * isl_union_map_preimage_range_union_pw_multi_aff(__isl_take isl_union_map *umap, __isl_take isl_union_pw_multi_aff *upma)
__isl_export isl_bool isl_union_map_is_equal(__isl_keep isl_union_map *umap1, __isl_keep isl_union_map *umap2)
__isl_export __isl_give isl_union_map * isl_union_map_union(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
isl_ctx * isl_union_map_get_ctx(__isl_keep isl_union_map *umap)
isl_size isl_union_map_n_map(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_union_set * isl_union_map_domain(__isl_take isl_union_map *umap)
__isl_give isl_union_map * isl_union_map_reset_user(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_universe(__isl_take isl_union_map *umap)
struct isl_union_set isl_union_set
__isl_export isl_bool isl_union_set_is_empty(__isl_keep isl_union_set *uset)
__isl_give isl_union_set * isl_union_set_reset_user(__isl_take isl_union_set *uset)
__isl_export __isl_give isl_union_set * isl_union_set_universe(__isl_take isl_union_set *uset)
__isl_overload __isl_give isl_union_set * isl_union_set_preimage_union_pw_multi_aff(__isl_take isl_union_set *uset, __isl_take isl_union_pw_multi_aff *upma)
__isl_export __isl_give isl_union_set * isl_union_set_union(__isl_take isl_union_set *uset1, __isl_take isl_union_set *uset2)
__isl_give isl_printer * isl_printer_print_union_set(__isl_take isl_printer *p, __isl_keep isl_union_set *uset)
__isl_export __isl_give isl_union_set * isl_union_set_intersect(__isl_take isl_union_set *uset1, __isl_take isl_union_set *uset2)
__isl_give isl_union_set * isl_union_set_empty(__isl_take isl_space *space)
__isl_export isl_bool isl_union_set_is_equal(__isl_keep isl_union_set *uset1, __isl_keep isl_union_set *uset2)
__isl_export __isl_give isl_space * isl_union_set_get_space(__isl_keep isl_union_set *uset)
isl_ctx * isl_union_set_get_ctx(__isl_keep isl_union_set *uset)
__isl_give isl_union_set * isl_union_set_copy(__isl_keep isl_union_set *uset)
__isl_null isl_union_set * isl_union_set_free(__isl_take isl_union_set *uset)
__isl_give isl_val * isl_val_copy(__isl_keep isl_val *v)
__isl_give isl_val * isl_val_add_ui(__isl_take isl_val *v1, unsigned long v2)
__isl_export __isl_give isl_val * isl_val_zero(isl_ctx *ctx)
__isl_null isl_val * isl_val_free(__isl_take isl_val *v)
struct isl_multi_val isl_multi_val