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);
211 dup->single_valued = build->single_valued;
213 dup->at_each_domain = build->at_each_domain;
214 dup->at_each_domain_user = build->at_each_domain_user;
215 dup->before_each_for = build->before_each_for;
216 dup->before_each_for_user = build->before_each_for_user;
217 dup->after_each_for = build->after_each_for;
218 dup->after_each_for_user = build->after_each_for_user;
219 dup->before_each_mark = build->before_each_mark;
220 dup->before_each_mark_user = build->before_each_mark_user;
221 dup->after_each_mark = build->after_each_mark;
222 dup->after_each_mark_user = build->after_each_mark_user;
223 dup->create_leaf = build->create_leaf;
224 dup->create_leaf_user = build->create_leaf_user;
226 if (build->loop_type) {
232 if (
dup->n && !
dup->loop_type)
234 for (i = 0; i <
dup->n; ++i)
235 dup->loop_type[i] = build->loop_type[i];
238 if (!
dup->iterators || !
dup->domain || !
dup->generated ||
239 !
dup->pending || !
dup->values ||
240 !
dup->strides || !
dup->offsets || !
dup->options ||
241 (build->internal2input && !
dup->internal2input) ||
242 (build->executed && !
dup->executed) ||
243 (build->value && !
dup->value) ||
244 (build->node && !
dup->node))
266 build->values = isl_multi_aff_align_params(build->values,
268 build->offsets = isl_multi_aff_align_params(build->offsets,
272 if (build->internal2input) {
273 build->internal2input =
274 isl_multi_aff_align_params(build->internal2input,
276 if (!build->internal2input)
282 if (!build->domain || !build->values || !build->offsets ||
309 if (--build->ref > 0)
312 isl_id_list_free(build->iterators);
316 isl_multi_aff_free(build->values);
317 isl_multi_aff_free(build->internal2input);
320 isl_multi_aff_free(build->offsets);
321 isl_multi_aff_free(build->schedule_map);
325 free(build->loop_type);
373 n_it = isl_id_list_n_id(build->iterators);
374 if (dim < 0 || n_it < 0)
378 "isl_ast_build in inconsistent state",
goto error);
380 build->iterators = isl_id_list_drop(build->iterators,
382 build->iterators = isl_id_list_concat(build->iterators, iterators);
383 if (!build->iterators)
388 isl_id_list_free(iterators);
404 build->at_each_domain =
fn;
405 build->at_each_domain_user =
user;
422 build->before_each_for =
fn;
423 build->before_each_for_user =
user;
440 build->after_each_for =
fn;
441 build->after_each_for_user =
user;
458 build->before_each_mark =
fn;
459 build->before_each_mark_user =
user;
476 build->after_each_mark =
fn;
477 build->after_each_mark_user =
user;
494 build->create_leaf =
fn;
495 build->create_leaf_user =
user;
516 build->at_each_domain = NULL;
517 build->at_each_domain_user = NULL;
518 build->before_each_for = NULL;
519 build->before_each_for_user = NULL;
520 build->after_each_for = NULL;
521 build->after_each_for_user = NULL;
522 build->before_each_mark = NULL;
523 build->before_each_mark_user = NULL;
524 build->after_each_mark = NULL;
525 build->after_each_mark_user = NULL;
526 build->create_leaf = NULL;
527 build->create_leaf_user = NULL;
543 for (i = 0; i < build->
depth; ++i)
560 isl_multi_aff_free(build->schedule_map);
561 build->schedule_map = NULL;
609 if (build->schedule_map)
610 return isl_multi_aff_copy(build->schedule_map);
617 ma = isl_multi_aff_identity(space);
623 ma = isl_multi_aff_free(
ma);
625 build->depth, dim - build->depth);
626 for (i = build->depth - 1; i >= 0; --i)
628 ma = isl_multi_aff_drop_dims(
ma,
632 build->schedule_map =
ma;
633 return isl_multi_aff_copy(build->schedule_map);
677 fprintf(stderr,
"domain: ");
679 fprintf(stderr,
"generated: ");
681 fprintf(stderr,
"pending: ");
683 fprintf(stderr,
"iterators: ");
684 isl_id_list_dump(build->iterators);
685 fprintf(stderr,
"values: ");
688 fprintf(stderr,
"value: ");
691 fprintf(stderr,
"strides: ");
693 fprintf(stderr,
"offsets: ");
695 fprintf(stderr,
"internal2input: ");
812 build->values = isl_multi_aff_set_aff(build->values, build->depth,
aff);
877 if (!build->domain || !build->pending || !build->generated)
920 if (!build->pending || !build->generated)
969 if (!build->generated)
1039 build->executed = executed;
1055 return build->node != NULL;
1089 free(build->loop_type);
1093 if (build->n && !build->loop_type)
1096 for (i = 0; i < build->n; ++i)
1097 build->loop_type[i] =
1111 if (!build || !node)
1170 return build ? isl_multi_aff_copy(build->internal2input) : NULL;
1218 build->depth, dim - build->depth);
1219 for (i = build->depth - 1; i >= 0; --i) {
1247 for (i = 0; i < build->depth; ++i) {
1295 return isl_id_list_get_id(build->iterators,
pos);
1307 if (!build || !stride || !
offset)
1313 build->offsets = isl_multi_aff_set_aff(build->offsets,
pos,
offset);
1314 if (!build->strides || !build->offsets)
1386 ma = isl_multi_aff_identity(space);
1393 aff = isl_multi_aff_get_aff(
ma,
pos);
1421 if (!build->domain || !build->generated)
1458 if (no_stride >= 0 && !no_stride)
1554 const char *
name =
"separation_class";
1610 local_pos =
pos - build->outer_pos;
1615 build->loop_type = loop_type;
1616 for (i = build->n - 1; i >= local_pos; --i)
1617 loop_type[i + 1] = loop_type[i];
1658 build->iterators = isl_id_list_insert(build->iterators,
pos,
id);
1672 build->offsets = isl_multi_aff_splice(build->offsets,
pos,
pos,
ma);
1673 ma = isl_multi_aff_identity(ma_space);
1674 build->values = isl_multi_aff_splice(build->values,
pos,
pos,
ma);
1677 build->internal2input = isl_multi_aff_free(build->internal2input);
1679 if (!build->iterators || !build->domain || !build->generated ||
1680 !build->pending || !build->values ||
1681 !build->strides || !build->offsets || !build->options)
1713 if (!build || !umap || !
m)
1716 depth = build->depth;
1718 if (build->internal2input) {
1723 space = isl_multi_aff_get_space(build->internal2input);
1725 ma = isl_multi_aff_identity(space);
1726 aff = isl_multi_aff_get_aff(
ma, depth);
1728 ma = isl_multi_aff_set_aff(
ma, depth,
aff);
1729 build->internal2input =
1731 if (!build->internal2input)
1739 aff = isl_multi_aff_get_aff(build->offsets, depth);
1741 build->offsets = isl_multi_aff_set_aff(build->offsets, depth,
aff);
1743 if (!build->strides || !build->offsets || !build->options)
1763 names = isl_id_list_alloc(ctx,
n);
1764 for (i = 0; i <
n; ++i) {
1768 names = isl_id_list_add(names,
id);
1847 build->outer_pos = build->depth;
1852 n_it = isl_id_list_n_id(build->iterators);
1853 if (dim < 0 || space_dim < 0 || n_it < 0)
1859 build->iterators = isl_id_list_concat(build->iterators, l);
1875 build->offsets = isl_multi_aff_align_params(build->offsets,
1877 build->offsets = isl_multi_aff_product(build->offsets,
1879 build->values = isl_multi_aff_align_params(build->values,
1881 embedding = isl_multi_aff_identity(space);
1882 build->values = isl_multi_aff_product(build->values,
1883 isl_multi_aff_copy(embedding));
1884 if (build->internal2input) {
1885 build->internal2input =
1886 isl_multi_aff_product(build->internal2input, embedding);
1887 build->internal2input =
1888 isl_multi_aff_flatten_range(build->internal2input);
1889 if (!build->internal2input)
1892 isl_multi_aff_free(embedding);
1898 if (!build->iterators || !build->domain || !build->generated ||
1899 !build->pending || !build->values ||
1900 !build->strides || !build->offsets || !build->options)
1975 return isl_multi_aff_get_aff(build->offsets,
pos);
1996 aff = isl_multi_aff_get_aff(build->values,
pos);
2017 values = isl_multi_aff_copy(build->values);
2030 return build->value != NULL;
2045 isl_multi_aff_copy(build->values));
2068 isl_multi_aff_copy(build->values));
2092 isl_multi_aff_copy(build->values));
2104 isl_multi_aff_copy(build->values));
2158 isl_multi_aff_copy(build->values));
2179 isl_multi_aff_copy(build->values));
2216 local_pos = build->depth - build->outer_pos;
2254 "only works for schedule tree based AST generation",
2257 local_pos = build->depth - build->outer_pos;
2259 return build->loop_type[local_pos];
2261 build->node, local_pos);
2288 if (!build->internal2input)
2290 if (build->isolated)
2300 isl_multi_aff_copy(build->internal2input));
2302 build->isolated = isolated;
2303 if (!build->isolated)
2319 if (!build->internal2input)
2321 if (!build->isolated)
2323 "isolated set not extracted yet",
return -1);
2326 return empty < 0 ? -1 : !empty;
2341 if (!build->internal2input)
2343 "build cannot have isolated set",
return NULL);
2372 local_pos = build->depth - build->outer_pos;
2377 "separation_class");
2401 depth = build->depth;
2424 depth = build->depth;
2451 if (build->single_valued ==
sv)
2456 build->single_valued =
sv;
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)
__isl_give isl_ast_build * isl_ast_build_set_single_valued(__isl_take isl_ast_build *build, int sv)
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)
struct isl_basic_set isl_basic_set
__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)