24#include <isl_config.h>
63 if (!build || !build->domain)
74 build->strides = strides;
77 isl_multi_aff_free(build->offsets);
79 isl_multi_aff_free(build->values);
81 isl_multi_aff_free(build->internal2input);
82 build->internal2input = isl_multi_aff_identity(space);
84 if (!build->iterators || !build->domain || !build->generated ||
85 !build->pending || !build->values || !build->internal2input ||
86 !build->strides || !build->offsets || !build->options)
106 snprintf(
name,
sizeof(
name),
"c%d", i);
109 snprintf(
name,
sizeof(
name),
"c%d_%d", i, j++);
145 for (i = 0; i <
n; ++i) {
199 dup->outer_pos = build->outer_pos;
200 dup->depth = build->depth;
201 dup->iterators = isl_id_list_copy(build->iterators);
205 dup->values = isl_multi_aff_copy(build->values);
206 dup->internal2input = isl_multi_aff_copy(build->internal2input);
209 dup->offsets = isl_multi_aff_copy(build->offsets);
212 dup->at_each_domain = build->at_each_domain;
213 dup->at_each_domain_user = build->at_each_domain_user;
214 dup->before_each_for = build->before_each_for;
215 dup->before_each_for_user = build->before_each_for_user;
216 dup->after_each_for = build->after_each_for;
217 dup->after_each_for_user = build->after_each_for_user;
218 dup->before_each_mark = build->before_each_mark;
219 dup->before_each_mark_user = build->before_each_mark_user;
220 dup->after_each_mark = build->after_each_mark;
221 dup->after_each_mark_user = build->after_each_mark_user;
222 dup->create_leaf = build->create_leaf;
223 dup->create_leaf_user = build->create_leaf_user;
225 if (build->loop_type) {
231 if (
dup->n && !
dup->loop_type)
233 for (i = 0; i <
dup->n; ++i)
234 dup->loop_type[i] = build->loop_type[i];
237 if (!
dup->iterators || !
dup->domain || !
dup->generated ||
238 !
dup->pending || !
dup->values ||
239 !
dup->strides || !
dup->offsets || !
dup->options ||
240 (build->internal2input && !
dup->internal2input) ||
241 (build->executed && !
dup->executed) ||
242 (build->value && !
dup->value) ||
243 (build->node && !
dup->node))
265 build->values = isl_multi_aff_align_params(build->values,
267 build->offsets = isl_multi_aff_align_params(build->offsets,
271 if (build->internal2input) {
272 build->internal2input =
273 isl_multi_aff_align_params(build->internal2input,
275 if (!build->internal2input)
281 if (!build->domain || !build->values || !build->offsets ||
308 if (--build->ref > 0)
311 isl_id_list_free(build->iterators);
315 isl_multi_aff_free(build->values);
316 isl_multi_aff_free(build->internal2input);
319 isl_multi_aff_free(build->offsets);
320 isl_multi_aff_free(build->schedule_map);
324 free(build->loop_type);
372 n_it = isl_id_list_n_id(build->iterators);
373 if (dim < 0 || n_it < 0)
377 "isl_ast_build in inconsistent state",
goto error);
379 build->iterators = isl_id_list_drop(build->iterators,
381 build->iterators = isl_id_list_concat(build->iterators, iterators);
382 if (!build->iterators)
387 isl_id_list_free(iterators);
403 build->at_each_domain =
fn;
404 build->at_each_domain_user =
user;
421 build->before_each_for =
fn;
422 build->before_each_for_user =
user;
439 build->after_each_for =
fn;
440 build->after_each_for_user =
user;
457 build->before_each_mark =
fn;
458 build->before_each_mark_user =
user;
475 build->after_each_mark =
fn;
476 build->after_each_mark_user =
user;
493 build->create_leaf =
fn;
494 build->create_leaf_user =
user;
515 build->at_each_domain = NULL;
516 build->at_each_domain_user = NULL;
517 build->before_each_for = NULL;
518 build->before_each_for_user = NULL;
519 build->after_each_for = NULL;
520 build->after_each_for_user = NULL;
521 build->before_each_mark = NULL;
522 build->before_each_mark_user = NULL;
523 build->after_each_mark = NULL;
524 build->after_each_mark_user = NULL;
525 build->create_leaf = NULL;
526 build->create_leaf_user = NULL;
542 for (i = 0; i < build->
depth; ++i)
559 isl_multi_aff_free(build->schedule_map);
560 build->schedule_map = NULL;
608 if (build->schedule_map)
609 return isl_multi_aff_copy(build->schedule_map);
616 ma = isl_multi_aff_identity(space);
622 ma = isl_multi_aff_free(
ma);
624 build->depth, dim - build->depth);
625 for (i = build->depth - 1; i >= 0; --i)
627 ma = isl_multi_aff_drop_dims(
ma,
631 build->schedule_map =
ma;
632 return isl_multi_aff_copy(build->schedule_map);
676 fprintf(stderr,
"domain: ");
678 fprintf(stderr,
"generated: ");
680 fprintf(stderr,
"pending: ");
682 fprintf(stderr,
"iterators: ");
683 isl_id_list_dump(build->iterators);
684 fprintf(stderr,
"values: ");
687 fprintf(stderr,
"value: ");
690 fprintf(stderr,
"strides: ");
692 fprintf(stderr,
"offsets: ");
694 fprintf(stderr,
"internal2input: ");
811 build->values = isl_multi_aff_set_aff(build->values, build->depth,
aff);
876 if (!build->domain || !build->pending || !build->generated)
919 if (!build->pending || !build->generated)
968 if (!build->generated)
1038 build->executed = executed;
1054 return build->node != NULL;
1088 free(build->loop_type);
1092 if (build->n && !build->loop_type)
1095 for (i = 0; i < build->n; ++i)
1096 build->loop_type[i] =
1110 if (!build || !node)
1169 return build ? isl_multi_aff_copy(build->internal2input) : NULL;
1217 build->depth, dim - build->depth);
1218 for (i = build->depth - 1; i >= 0; --i) {
1246 for (i = 0; i < build->depth; ++i) {
1294 return isl_id_list_get_id(build->iterators,
pos);
1306 if (!build || !stride || !
offset)
1312 build->offsets = isl_multi_aff_set_aff(build->offsets,
pos,
offset);
1313 if (!build->strides || !build->offsets)
1385 ma = isl_multi_aff_identity(space);
1392 aff = isl_multi_aff_get_aff(
ma,
pos);
1420 if (!build->domain || !build->generated)
1457 if (no_stride >= 0 && !no_stride)
1553 const char *
name =
"separation_class";
1609 local_pos =
pos - build->outer_pos;
1614 build->loop_type = loop_type;
1615 for (i = build->n - 1; i >= local_pos; --i)
1616 loop_type[i + 1] = loop_type[i];
1657 build->iterators = isl_id_list_insert(build->iterators,
pos,
id);
1671 build->offsets = isl_multi_aff_splice(build->offsets,
pos,
pos,
ma);
1672 ma = isl_multi_aff_identity(ma_space);
1673 build->values = isl_multi_aff_splice(build->values,
pos,
pos,
ma);
1676 build->internal2input = isl_multi_aff_free(build->internal2input);
1678 if (!build->iterators || !build->domain || !build->generated ||
1679 !build->pending || !build->values ||
1680 !build->strides || !build->offsets || !build->options)
1712 if (!build || !umap || !
m)
1715 depth = build->depth;
1717 if (build->internal2input) {
1722 space = isl_multi_aff_get_space(build->internal2input);
1724 ma = isl_multi_aff_identity(space);
1725 aff = isl_multi_aff_get_aff(
ma, depth);
1727 ma = isl_multi_aff_set_aff(
ma, depth,
aff);
1728 build->internal2input =
1730 if (!build->internal2input)
1738 aff = isl_multi_aff_get_aff(build->offsets, depth);
1740 build->offsets = isl_multi_aff_set_aff(build->offsets, depth,
aff);
1742 if (!build->strides || !build->offsets || !build->options)
1762 names = isl_id_list_alloc(ctx,
n);
1763 for (i = 0; i <
n; ++i) {
1767 names = isl_id_list_add(names,
id);
1846 build->outer_pos = build->depth;
1851 n_it = isl_id_list_n_id(build->iterators);
1852 if (dim < 0 || space_dim < 0 || n_it < 0)
1858 build->iterators = isl_id_list_concat(build->iterators, l);
1874 build->offsets = isl_multi_aff_align_params(build->offsets,
1876 build->offsets = isl_multi_aff_product(build->offsets,
1878 build->values = isl_multi_aff_align_params(build->values,
1880 embedding = isl_multi_aff_identity(space);
1881 build->values = isl_multi_aff_product(build->values,
1882 isl_multi_aff_copy(embedding));
1883 if (build->internal2input) {
1884 build->internal2input =
1885 isl_multi_aff_product(build->internal2input, embedding);
1886 build->internal2input =
1887 isl_multi_aff_flatten_range(build->internal2input);
1888 if (!build->internal2input)
1891 isl_multi_aff_free(embedding);
1897 if (!build->iterators || !build->domain || !build->generated ||
1898 !build->pending || !build->values ||
1899 !build->strides || !build->offsets || !build->options)
1974 return isl_multi_aff_get_aff(build->offsets,
pos);
1995 aff = isl_multi_aff_get_aff(build->values,
pos);
2016 values = isl_multi_aff_copy(build->values);
2029 return build->value != NULL;
2044 isl_multi_aff_copy(build->values));
2067 isl_multi_aff_copy(build->values));
2091 isl_multi_aff_copy(build->values));
2103 isl_multi_aff_copy(build->values));
2157 isl_multi_aff_copy(build->values));
2178 isl_multi_aff_copy(build->values));
2215 local_pos = build->depth - build->outer_pos;
2253 "only works for schedule tree based AST generation",
2256 local_pos = build->depth - build->outer_pos;
2258 return build->loop_type[local_pos];
2260 build->node, local_pos);
2287 if (!build->internal2input)
2289 if (build->isolated)
2299 isl_multi_aff_copy(build->internal2input));
2301 build->isolated = isolated;
2302 if (!build->isolated)
2318 if (!build->internal2input)
2320 if (!build->isolated)
2322 "isolated set not extracted yet",
return -1);
2325 return empty < 0 ? -1 : !empty;
2340 if (!build->internal2input)
2342 "build cannot have isolated set",
return NULL);
2371 local_pos = build->depth - build->outer_pos;
2376 "separation_class");
2400 depth = build->depth;
2423 depth = build->depth;
void isl_multi_aff_dump(__isl_keep isl_multi_aff *maff)
__isl_null isl_aff * isl_aff_free(__isl_take isl_aff *aff)
__isl_give isl_basic_set * isl_aff_zero_basic_set(__isl_take isl_aff *aff)
__isl_overload __isl_give isl_pw_aff * isl_pw_aff_pullback_multi_aff(__isl_take isl_pw_aff *pa, __isl_take isl_multi_aff *ma)
__isl_overload __isl_give isl_aff * isl_aff_scale_val(__isl_take isl_aff *aff, __isl_take isl_val *v)
isl_stat isl_pw_aff_foreach_piece(__isl_keep isl_pw_aff *pwaff, isl_stat(*fn)(__isl_take isl_set *set, __isl_take isl_aff *aff, void *user), void *user)
__isl_overload __isl_give isl_multi_aff * isl_multi_aff_pullback_multi_aff(__isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2)
__isl_null isl_pw_aff * isl_pw_aff_free(__isl_take isl_pw_aff *pwaff)
__isl_overload __isl_give isl_aff * isl_aff_scale_down_val(__isl_take isl_aff *aff, __isl_take isl_val *v)
__isl_give isl_aff * isl_aff_copy(__isl_keep isl_aff *aff)
void isl_pw_aff_dump(__isl_keep isl_pw_aff *pwaff)
__isl_give isl_aff * isl_aff_add_coefficient_si(__isl_take isl_aff *aff, enum isl_dim_type type, int pos, int v)
__isl_give isl_basic_set * isl_aff_neg_basic_set(__isl_take isl_aff *aff)
__isl_export __isl_give isl_pw_multi_aff * isl_pw_multi_aff_gist(__isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set)
__isl_overload __isl_give isl_aff * isl_aff_mod_val(__isl_take isl_aff *aff, __isl_take isl_val *mod)
__isl_export __isl_give isl_aff * isl_aff_gist(__isl_take isl_aff *aff, __isl_take isl_set *context)
__isl_give isl_pw_multi_aff * isl_pw_multi_aff_from_map(__isl_take isl_map *map)
__isl_export __isl_give isl_aff * isl_aff_add(__isl_take isl_aff *aff1, __isl_take isl_aff *aff2)
__isl_null isl_pw_multi_aff * isl_pw_multi_aff_free(__isl_take isl_pw_multi_aff *pma)
__isl_overload __isl_give isl_pw_multi_aff * isl_pw_multi_aff_pullback_multi_aff(__isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_aff *ma)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_coalesce(__isl_take isl_pw_aff *pa)
isl_bool isl_aff_involves_dims(__isl_keep isl_aff *aff, enum isl_dim_type type, unsigned first, unsigned n)
isl_size isl_pw_aff_n_piece(__isl_keep isl_pw_aff *pwaff)
__isl_give isl_pw_aff * isl_pw_multi_aff_get_pw_aff(__isl_keep isl_pw_multi_aff *pma, int pos)
__isl_give isl_pw_aff * isl_pw_aff_copy(__isl_keep isl_pw_aff *pwaff)
__isl_export __isl_give isl_pw_aff * isl_pw_aff_gist(__isl_take isl_pw_aff *pwaff, __isl_take isl_set *context)
struct isl_multi_aff isl_multi_aff
__isl_give isl_constraint * isl_constraint_copy(__isl_keep isl_constraint *c)
__isl_give isl_constraint * isl_constraint_alloc_equality(__isl_take isl_local_space *ls)
__isl_give isl_basic_map * isl_basic_map_from_constraint(__isl_take isl_constraint *constraint)
__isl_give isl_constraint * isl_constraint_set_constant_si(__isl_take isl_constraint *constraint, int v)
__isl_give isl_constraint * isl_constraint_set_coefficient_si(__isl_take isl_constraint *constraint, enum isl_dim_type type, int pos, int v)
#define isl_calloc_type(ctx, type)
#define isl_die(ctx, errno, msg, code)
isl_bool isl_bool_ok(int b)
#define isl_alloc_array(ctx, type, n)
#define isl_realloc_array(ctx, ptr, type, n)
isl_bool isl_bool_not(isl_bool b)
isl_stat isl_stat(* fn)(__isl_take ISL_KEY *key, __isl_take ISL_VAL *val, void *user)
isl_stat isl_stat void * user
isl_bool isl_bool(* test)(__isl_keep ISL_KEY *key, __isl_keep ISL_VAL *val, void *user)
__isl_give isl_id * isl_id_alloc(isl_ctx *ctx, __isl_keep const char *name, void *user)
__isl_give isl_ast_build * isl_ast_build_increase_depth(__isl_take isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_set_before_each_mark(__isl_take isl_ast_build *build, isl_stat(*fn)(__isl_keep isl_id *mark, __isl_keep isl_ast_build *build, void *user), void *user)
static int any_eliminated(isl_ast_build *build)
static __isl_give isl_id_list * generate_names(isl_ctx *ctx, int n, int first, __isl_keep isl_ast_build *build)
int isl_ast_build_has_value(__isl_keep isl_ast_build *build)
__isl_give isl_set * isl_ast_build_eliminate_inner(__isl_keep isl_ast_build *build, __isl_take isl_set *set)
static __isl_give isl_ast_build * update_values(__isl_take isl_ast_build *build, __isl_take isl_basic_set *bounds)
static __isl_give isl_id * generate_name(isl_ctx *ctx, int i, __isl_keep isl_ast_build *build)
static __isl_give isl_ast_build * isl_ast_build_init_derived(__isl_take isl_ast_build *build, __isl_take isl_space *space)
__isl_give isl_aff * isl_ast_build_get_offset(__isl_keep isl_ast_build *build, int pos)
enum isl_ast_loop_type isl_ast_build_get_loop_type(__isl_keep isl_ast_build *build, int isolated)
__isl_give isl_map * isl_ast_build_map_to_iterator(__isl_keep isl_ast_build *build, __isl_take isl_set *set)
__isl_give isl_ast_build * isl_ast_build_copy(__isl_keep isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_set_before_each_for(__isl_take isl_ast_build *build, __isl_give isl_id *(*fn)(__isl_keep isl_ast_build *build, void *user), void *user)
static __isl_give isl_union_map * embed_options(__isl_take isl_union_map *options, __isl_take isl_space *space)
__isl_give isl_set * isl_ast_build_specialize(__isl_keep isl_ast_build *build, __isl_take isl_set *set)
__isl_give isl_ast_build * isl_ast_build_include_stride(__isl_take isl_ast_build *build)
isl_bool isl_ast_build_has_stride(__isl_keep isl_ast_build *build, int pos)
__isl_give isl_basic_set * isl_ast_build_compute_gist_basic_set(__isl_keep isl_ast_build *build, __isl_take isl_basic_set *bset)
__isl_give isl_ast_build * isl_ast_build_align_params(__isl_take isl_ast_build *build, __isl_take isl_space *model)
__isl_give isl_ast_build * isl_ast_build_cow(__isl_take isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_extract_isolated(__isl_take isl_ast_build *build)
isl_bool isl_ast_build_need_schedule_map(__isl_keep isl_ast_build *build)
__isl_give isl_union_map * isl_ast_build_get_schedule(__isl_keep isl_ast_build *build)
__isl_give isl_set * isl_ast_build_eliminate_divs(__isl_keep isl_ast_build *build, __isl_take isl_set *set)
__isl_give isl_ast_build * isl_ast_build_scale_down(__isl_take isl_ast_build *build, __isl_take isl_val *m, __isl_take isl_union_map *umap)
static __isl_give isl_set * intersect_stride_constraint(__isl_take isl_set *set, __isl_keep isl_ast_build *build)
isl_bool isl_ast_build_aff_is_nonneg(__isl_keep isl_ast_build *build, __isl_keep isl_aff *aff)
__isl_give isl_ast_build * isl_ast_build_set_options(__isl_take isl_ast_build *build, __isl_take isl_union_map *options)
static __isl_give isl_ast_build * isl_ast_build_init(__isl_take isl_ast_build *build, __isl_take isl_space *space)
static void isl_ast_build_reset_schedule_map(__isl_keep isl_ast_build *build)
__isl_give isl_pw_aff * isl_ast_build_compute_gist_pw_aff(__isl_keep isl_ast_build *build, __isl_take isl_pw_aff *pa)
__isl_give isl_ast_build * isl_ast_build_detect_strides(__isl_take isl_ast_build *build, __isl_take isl_set *set)
__isl_give isl_ast_build * isl_ast_build_set_after_each_mark(__isl_take isl_ast_build *build, __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_node *node, __isl_keep isl_ast_build *build, void *user), void *user)
__isl_give isl_ast_build * isl_ast_build_reset_schedule_node(__isl_take isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_clear_local_info(__isl_take isl_ast_build *build)
__isl_give isl_set * isl_ast_build_compute_gist(__isl_keep isl_ast_build *build, __isl_take isl_set *set)
__isl_null isl_ast_build * isl_ast_build_free(__isl_take isl_ast_build *build)
static __isl_give isl_map * construct_insertion_map(__isl_take isl_space *space, int pos)
__isl_give isl_set * isl_ast_build_get_generated(__isl_keep isl_ast_build *build)
void isl_ast_build_dump(__isl_keep isl_ast_build *build)
__isl_give isl_aff * isl_ast_build_compute_gist_aff(__isl_keep isl_ast_build *build, __isl_take isl_aff *aff)
__isl_give isl_map * isl_ast_build_get_schedule_map(__isl_keep isl_ast_build *build)
__isl_give isl_space * isl_ast_build_get_schedule_space(__isl_keep isl_ast_build *build)
__isl_give isl_union_map * isl_ast_build_substitute_values_union_map_domain(__isl_keep isl_ast_build *build, __isl_take isl_union_map *umap)
int isl_ast_build_has_schedule_node(__isl_keep isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_from_context(__isl_take isl_set *set)
__isl_give isl_map * isl_ast_build_get_separation_class(__isl_keep isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_dup(__isl_keep isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_replace_pending_by_guard(__isl_take isl_ast_build *build, __isl_take isl_set *guard)
__isl_give isl_ast_build * isl_ast_build_restrict(__isl_take isl_ast_build *build, __isl_take isl_set *set)
__isl_give isl_space * isl_ast_build_get_space(__isl_keep isl_ast_build *build, int internal)
static __isl_give isl_ast_build * isl_ast_build_restrict_internal(__isl_take isl_ast_build *build, __isl_take isl_set *set)
int isl_ast_build_has_isolated(__isl_keep isl_ast_build *build)
__isl_give isl_set * isl_ast_build_get_stride_constraint(__isl_keep isl_ast_build *build)
__isl_give isl_val * isl_ast_build_get_stride(__isl_keep isl_ast_build *build, int pos)
static __isl_give isl_ast_build * extract_loop_types(__isl_take isl_ast_build *build)
static __isl_give isl_union_map * options_insert_dim(__isl_take isl_union_map *options, __isl_take isl_space *space, int pos)
__isl_give isl_ast_build * isl_ast_build_set_executed(__isl_take isl_ast_build *build, __isl_take isl_union_map *executed)
__isl_give isl_multi_aff * isl_ast_build_get_stride_expansion(__isl_keep isl_ast_build *build)
isl_size isl_ast_build_get_depth(__isl_keep isl_ast_build *build)
static __isl_give isl_ast_build * node_insert_dim(__isl_take isl_ast_build *build, int pos)
__isl_give isl_set * isl_ast_build_get_domain(__isl_keep isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_set_loop_bounds(__isl_take isl_ast_build *build, __isl_take isl_basic_set *bounds)
__isl_give isl_ast_build * isl_ast_build_restrict_generated(__isl_take isl_ast_build *build, __isl_take isl_set *set)
__isl_give isl_set * isl_ast_build_get_option_domain(__isl_keep isl_ast_build *build, enum isl_ast_loop_type type)
__isl_give isl_id * isl_ast_build_get_iterator_id(__isl_keep isl_ast_build *build, int pos)
isl_ctx * isl_ast_build_get_ctx(__isl_keep isl_ast_build *build)
static __isl_give isl_ast_build * set_stride(__isl_take isl_ast_build *build, __isl_take isl_val *stride, __isl_take isl_aff *offset)
__isl_give isl_ast_build * isl_ast_build_set_at_each_domain(__isl_take isl_ast_build *build, __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_node *node, __isl_keep isl_ast_build *build, void *user), void *user)
__isl_give isl_ast_build * isl_ast_build_set_pending_generated(__isl_take isl_ast_build *build, __isl_take isl_basic_set *bounds)
__isl_give isl_set * isl_ast_build_get_isolated(__isl_keep isl_ast_build *build)
__isl_give isl_schedule_node * isl_ast_build_get_schedule_node(__isl_keep isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_set_after_each_for(__isl_take isl_ast_build *build, __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_node *node, __isl_keep isl_ast_build *build, void *user), void *user)
int isl_ast_build_options_involve_depth(__isl_keep isl_ast_build *build)
__isl_give isl_pw_multi_aff * isl_ast_build_compute_gist_pw_multi_aff(__isl_keep isl_ast_build *build, __isl_take isl_pw_multi_aff *pma)
__isl_give isl_map * isl_ast_build_compute_gist_map_domain(__isl_keep isl_ast_build *build, __isl_take isl_map *map)
static isl_bool free_of_depth(__isl_keep isl_map *map, void *user)
isl_size isl_ast_build_dim(__isl_keep isl_ast_build *build, enum isl_dim_type type)
__isl_give isl_ast_build * isl_ast_build_product(__isl_take isl_ast_build *build, __isl_take isl_space *space)
__isl_give isl_ast_build * isl_ast_build_insert_dim(__isl_take isl_ast_build *build, int pos)
__isl_give isl_ast_build * isl_ast_build_set_create_leaf(__isl_take isl_ast_build *build, __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_build *build, void *user), void *user)
isl_bool isl_ast_build_has_affine_value(__isl_keep isl_ast_build *build, int pos)
static const char * option_str[]
__isl_give isl_set * isl_ast_build_get_pending(__isl_keep isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_set_iterators(__isl_take isl_ast_build *build, __isl_take isl_id_list *iterators)
static isl_stat extract_single_piece(__isl_take isl_set *set, __isl_take isl_aff *aff, void *user)
__isl_give isl_set * isl_ast_build_eliminate(__isl_keep isl_ast_build *build, __isl_take isl_set *domain)
__isl_give isl_ast_build * isl_ast_build_set_schedule_node(__isl_take isl_ast_build *build, __isl_take isl_schedule_node *node)
__isl_give isl_basic_set * isl_ast_build_specialize_basic_set(__isl_keep isl_ast_build *build, __isl_take isl_basic_set *bset)
__isl_give isl_multi_aff * isl_ast_build_get_internal2input(__isl_keep isl_ast_build *build)
__isl_give isl_ast_build * isl_ast_build_alloc(isl_ctx *ctx)
__isl_give isl_multi_aff * isl_ast_build_get_schedule_map_multi_aff(__isl_keep isl_ast_build *build)
__isl_give dup(__isl_keep LIST(EL) *list)
static unsigned pos(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_local_space * isl_local_space_from_space(__isl_take isl_space *space)
__isl_export __isl_give isl_set * isl_map_domain(__isl_take isl_map *bmap)
__isl_export isl_bool isl_map_is_single_valued(__isl_keep isl_map *map)
__isl_export __isl_give isl_set * isl_set_flatten(__isl_take isl_set *set)
isl_bool isl_map_involves_dims(__isl_keep isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_map * isl_map_eliminate(__isl_take isl_map *map, enum isl_dim_type type, unsigned first, unsigned n)
__isl_export __isl_give isl_map * isl_map_universe(__isl_take isl_space *space)
__isl_give isl_map * isl_map_copy(__isl_keep isl_map *map)
__isl_give isl_map * isl_map_set_tuple_name(__isl_take isl_map *map, enum isl_dim_type type, const char *s)
__isl_export __isl_give isl_space * isl_map_get_space(__isl_keep isl_map *map)
__isl_give isl_basic_map * isl_basic_map_upper_bound_si(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, int value)
__isl_give isl_map * isl_map_range_map(__isl_take isl_map *map)
__isl_give isl_basic_map * isl_basic_map_lower_bound_si(__isl_take isl_basic_map *bmap, enum isl_dim_type type, unsigned pos, int value)
__isl_give isl_map * isl_map_equate(__isl_take isl_map *map, enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2)
__isl_export __isl_give isl_map * isl_map_product(__isl_take isl_map *map1, __isl_take isl_map *map2)
__isl_give isl_map * isl_map_from_domain(__isl_take isl_set *set)
__isl_give isl_map * isl_map_fix_si(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, int value)
__isl_export __isl_give isl_map * isl_map_coalesce(__isl_take isl_map *map)
__isl_give isl_map * isl_map_identity(__isl_take isl_space *space)
__isl_give isl_map * isl_map_insert_dims(__isl_take isl_map *map, enum isl_dim_type type, unsigned pos, unsigned n)
__isl_give isl_map * isl_map_add_dims(__isl_take isl_map *map, enum isl_dim_type type, unsigned n)
__isl_null isl_map * isl_map_free(__isl_take isl_map *map)
__isl_export __isl_give isl_map * isl_map_gist_domain(__isl_take isl_map *map, __isl_take isl_set *context)
__isl_export __isl_give isl_map * isl_basic_map_union(__isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2)
__isl_give isl_map * isl_map_from_multi_aff(__isl_take isl_multi_aff *maff)
__isl_export isl_size isl_schedule_node_band_n_member(__isl_keep isl_schedule_node *node)
enum isl_ast_loop_type isl_schedule_node_band_member_get_ast_loop_type(__isl_keep isl_schedule_node *node, int pos)
__isl_export __isl_give isl_set * isl_schedule_node_band_get_ast_isolate_option(__isl_keep isl_schedule_node *node)
enum isl_ast_loop_type isl_schedule_node_band_member_get_isolate_ast_loop_type(__isl_keep isl_schedule_node *node, int pos)
__isl_null isl_schedule_node * isl_schedule_node_free(__isl_take isl_schedule_node *node)
__isl_give isl_schedule_node * isl_schedule_node_copy(__isl_keep isl_schedule_node *node)
__isl_export __isl_give isl_set * isl_set_universe(__isl_take isl_space *space)
__isl_export __isl_give isl_set * isl_set_coalesce(__isl_take isl_set *set)
__isl_give isl_basic_set * isl_basic_set_drop_constraints_not_involving_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_export __isl_give isl_set * isl_set_product(__isl_take isl_set *set1, __isl_take isl_set *set2)
isl_ctx * isl_set_get_ctx(__isl_keep isl_set *set)
__isl_export __isl_give isl_space * isl_set_get_space(__isl_keep isl_set *set)
isl_bool isl_set_plain_is_empty(__isl_keep isl_set *set)
__isl_export __isl_give isl_set * isl_set_detect_equalities(__isl_take isl_set *set)
__isl_overload __isl_give isl_set * isl_set_preimage_multi_aff(__isl_take isl_set *set, __isl_take isl_multi_aff *ma)
__isl_give isl_basic_set * isl_basic_set_preimage_multi_aff(__isl_take isl_basic_set *bset, __isl_take isl_multi_aff *ma)
__isl_export __isl_give isl_set * isl_set_intersect_params(__isl_take isl_set *set, __isl_take isl_set *params)
__isl_give isl_set * isl_set_eliminate(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_null isl_basic_set * isl_basic_set_free(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_set_simple_hull(__isl_take isl_set *set)
int isl_set_find_dim_by_name(__isl_keep isl_set *set, enum isl_dim_type type, const char *name)
__isl_null isl_set * isl_set_free(__isl_take isl_set *set)
__isl_give isl_set * isl_set_remove_divs_involving_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned first, unsigned n)
__isl_give isl_set * isl_set_remove_unknown_divs(__isl_take isl_set *set)
__isl_give isl_set * isl_set_copy(__isl_keep isl_set *set)
void isl_set_dump(__isl_keep isl_set *set)
__isl_export __isl_give isl_set * isl_set_gist(__isl_take isl_set *set, __isl_take isl_set *context)
__isl_give isl_set * isl_set_compute_divs(__isl_take isl_set *set)
isl_bool isl_set_is_params(__isl_keep isl_set *set)
isl_size isl_set_dim(__isl_keep isl_set *set, enum isl_dim_type type)
__isl_export __isl_give isl_basic_set * isl_basic_set_gist(__isl_take isl_basic_set *bset, __isl_take isl_basic_set *context)
__isl_give isl_set * isl_set_align_params(__isl_take isl_set *set, __isl_take isl_space *model)
__isl_give isl_basic_set * isl_basic_set_drop_constraints_involving_dims(__isl_take isl_basic_set *bset, enum isl_dim_type type, unsigned first, unsigned n)
__isl_export __isl_give isl_set * isl_set_intersect(__isl_take isl_set *set1, __isl_take isl_set *set2)
__isl_give isl_id * isl_set_get_dim_id(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
__isl_give isl_set * isl_set_insert_dims(__isl_take isl_set *set, enum isl_dim_type type, unsigned pos, unsigned n)
__isl_constructor __isl_give isl_set * isl_set_from_basic_set(__isl_take isl_basic_set *bset)
__isl_give isl_basic_set * isl_basic_set_copy(__isl_keep isl_basic_set *bset)
isl_bool isl_set_has_dim_id(__isl_keep isl_set *set, enum isl_dim_type type, unsigned pos)
__isl_export isl_bool isl_set_is_empty(__isl_keep isl_set *set)
__isl_give isl_stride_info * isl_set_get_stride_info(__isl_keep isl_set *set, int pos)
__isl_null isl_space * isl_space_free(__isl_take isl_space *space)
__isl_give isl_space * isl_space_from_domain(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_params(__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_give isl_space * isl_space_align_params(__isl_take isl_space *space1, __isl_take isl_space *space2)
__isl_give isl_space * isl_space_map_from_domain_and_range(__isl_take isl_space *domain, __isl_take isl_space *range)
__isl_give isl_space * isl_space_set_dim_id(__isl_take isl_space *space, enum isl_dim_type type, unsigned pos, __isl_take isl_id *id)
__isl_give isl_space * isl_space_set_tuple_name(__isl_take isl_space *space, enum isl_dim_type type, const char *s)
__isl_export __isl_give isl_space * isl_space_wrap(__isl_take isl_space *space)
isl_bool isl_space_is_params(__isl_keep isl_space *space)
__isl_export __isl_give isl_space * isl_space_unwrap(__isl_take isl_space *space)
__isl_export __isl_give isl_space * isl_space_map_from_set(__isl_take isl_space *space)
__isl_give isl_space * isl_space_drop_dims(__isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned num)
isl_size isl_space_dim(__isl_keep isl_space *space, enum isl_dim_type type)
__isl_give isl_space * isl_space_alloc(isl_ctx *ctx, unsigned nparam, unsigned n_in, unsigned n_out)
__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_export __isl_give isl_space * isl_space_domain(__isl_take isl_space *space)
__isl_null isl_stride_info * isl_stride_info_free(__isl_take isl_stride_info *si)
__isl_give isl_aff * isl_stride_info_get_offset(__isl_keep isl_stride_info *si)
__isl_give isl_val * isl_stride_info_get_stride(__isl_keep isl_stride_info *si)
__isl_null isl_union_map * isl_union_map_free(__isl_take isl_union_map *umap)
__isl_export __isl_give isl_space * isl_union_map_get_space(__isl_keep isl_union_map *umap)
__isl_export __isl_give isl_union_map * isl_union_map_reverse(__isl_take isl_union_map *umap)
__isl_give isl_union_map * isl_union_map_add_map(__isl_take isl_union_map *umap, __isl_take isl_map *map)
__isl_give isl_union_map * isl_union_map_align_params(__isl_take isl_union_map *umap, __isl_take isl_space *model)
__isl_export __isl_give isl_map * isl_union_map_extract_map(__isl_keep isl_union_map *umap, __isl_take isl_space *space)
__isl_overload __isl_give isl_union_map * isl_union_map_preimage_domain_multi_aff(__isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma)
__isl_export isl_bool isl_union_map_every_map(__isl_keep isl_union_map *umap, isl_bool(*test)(__isl_keep isl_map *map, void *user), void *user)
__isl_export __isl_give isl_union_map * isl_union_map_apply_range(__isl_take isl_union_map *umap1, __isl_take isl_union_map *umap2)
__isl_give isl_union_map * isl_union_map_copy(__isl_keep isl_union_map *umap)
__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_constructor __isl_give isl_union_map * isl_union_map_from_map(__isl_take isl_map *map)
__isl_give isl_val * isl_val_copy(__isl_keep isl_val *v)
__isl_export __isl_give isl_val * isl_val_div(__isl_take isl_val *v1, __isl_take isl_val *v2)
__isl_null isl_val * isl_val_free(__isl_take isl_val *v)
__isl_export isl_bool isl_val_is_one(__isl_keep isl_val *v)
__isl_give isl_val * isl_vec_get_element_val(__isl_keep isl_vec *vec, int pos)
__isl_null isl_vec * isl_vec_free(__isl_take isl_vec *vec)
__isl_give isl_vec * isl_vec_set_si(__isl_take isl_vec *vec, int v)
__isl_give isl_vec * isl_vec_concat(__isl_take isl_vec *vec1, __isl_take isl_vec *vec2)
__isl_give isl_vec * isl_vec_insert_els(__isl_take isl_vec *vec, unsigned pos, unsigned n)
__isl_give isl_vec * isl_vec_copy(__isl_keep isl_vec *vec)
__isl_give isl_vec * isl_vec_set_element_si(__isl_take isl_vec *vec, int pos, int v)
__isl_give isl_vec * isl_vec_set_element_val(__isl_take isl_vec *vec, int pos, __isl_take isl_val *v)
void isl_vec_dump(__isl_keep isl_vec *vec)
__isl_give isl_vec * isl_vec_alloc(isl_ctx *ctx, unsigned size)