Lines Matching refs:build

33 	__isl_keep isl_ast_build *build, __isl_take isl_set *set)  in isl_ast_build_map_to_iterator()  argument
40 if (!build) in isl_ast_build_map_to_iterator()
43 map = isl_map_equate(map, isl_dim_in, build->depth, isl_dim_out, 0); in isl_ast_build_map_to_iterator()
44 map = isl_map_eliminate(map, isl_dim_in, build->depth, 1); in isl_ast_build_map_to_iterator()
56 __isl_take isl_ast_build *build, __isl_take isl_space *space) in isl_ast_build_init_derived() argument
62 build = isl_ast_build_cow(build); in isl_ast_build_init_derived()
63 if (!build || !build->domain) in isl_ast_build_init_derived()
66 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_init_derived()
73 isl_vec_free(build->strides); in isl_ast_build_init_derived()
74 build->strides = strides; in isl_ast_build_init_derived()
77 isl_multi_aff_free(build->offsets); in isl_ast_build_init_derived()
78 build->offsets = isl_multi_aff_zero(isl_space_copy(space)); in isl_ast_build_init_derived()
79 isl_multi_aff_free(build->values); in isl_ast_build_init_derived()
80 build->values = isl_multi_aff_identity(isl_space_copy(space)); in isl_ast_build_init_derived()
81 isl_multi_aff_free(build->internal2input); in isl_ast_build_init_derived()
82 build->internal2input = isl_multi_aff_identity(space); in isl_ast_build_init_derived()
84 if (!build->iterators || !build->domain || !build->generated || in isl_ast_build_init_derived()
85 !build->pending || !build->values || !build->internal2input || in isl_ast_build_init_derived()
86 !build->strides || !build->offsets || !build->options) in isl_ast_build_init_derived()
87 return isl_ast_build_free(build); in isl_ast_build_init_derived()
89 return build; in isl_ast_build_init_derived()
92 return isl_ast_build_free(build); in isl_ast_build_init_derived()
100 __isl_keep isl_ast_build *build) in generate_name() argument
104 isl_set *dom = build->domain; in generate_name()
125 isl_ast_build *build; in isl_ast_build_from_context() local
134 build = isl_calloc_type(ctx, isl_ast_build); in isl_ast_build_from_context()
135 if (!build) in isl_ast_build_from_context()
138 build->ref = 1; in isl_ast_build_from_context()
139 build->domain = set; in isl_ast_build_from_context()
140 build->generated = isl_set_copy(build->domain); in isl_ast_build_from_context()
141 build->pending = isl_set_universe(isl_set_get_space(build->domain)); in isl_ast_build_from_context()
142 build->options = isl_union_map_empty(isl_space_params_alloc(ctx, 0)); in isl_ast_build_from_context()
143 build->depth = n; in isl_ast_build_from_context()
144 build->iterators = isl_id_list_alloc(ctx, n); in isl_ast_build_from_context()
150 id = generate_name(ctx, i, build); in isl_ast_build_from_context()
151 build->iterators = isl_id_list_add(build->iterators, id); in isl_ast_build_from_context()
157 return isl_ast_build_init_derived(build, space); in isl_ast_build_from_context()
176 __isl_give isl_ast_build *isl_ast_build_copy(__isl_keep isl_ast_build *build) in isl_ast_build_copy() argument
178 if (!build) in isl_ast_build_copy()
181 build->ref++; in isl_ast_build_copy()
182 return build; in isl_ast_build_copy()
185 __isl_give isl_ast_build *isl_ast_build_dup(__isl_keep isl_ast_build *build) in isl_ast_build_dup() argument
190 if (!build) in isl_ast_build_dup()
193 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_dup()
199 dup->outer_pos = build->outer_pos; in isl_ast_build_dup()
200 dup->depth = build->depth; in isl_ast_build_dup()
201 dup->iterators = isl_id_list_copy(build->iterators); in isl_ast_build_dup()
202 dup->domain = isl_set_copy(build->domain); in isl_ast_build_dup()
203 dup->generated = isl_set_copy(build->generated); in isl_ast_build_dup()
204 dup->pending = isl_set_copy(build->pending); in isl_ast_build_dup()
205 dup->values = isl_multi_aff_copy(build->values); in isl_ast_build_dup()
206 dup->internal2input = isl_multi_aff_copy(build->internal2input); in isl_ast_build_dup()
207 dup->value = isl_pw_aff_copy(build->value); in isl_ast_build_dup()
208 dup->strides = isl_vec_copy(build->strides); in isl_ast_build_dup()
209 dup->offsets = isl_multi_aff_copy(build->offsets); in isl_ast_build_dup()
210 dup->executed = isl_union_map_copy(build->executed); in isl_ast_build_dup()
211 dup->single_valued = build->single_valued; in isl_ast_build_dup()
212 dup->options = isl_union_map_copy(build->options); in isl_ast_build_dup()
213 dup->at_each_domain = build->at_each_domain; in isl_ast_build_dup()
214 dup->at_each_domain_user = build->at_each_domain_user; in isl_ast_build_dup()
215 dup->before_each_for = build->before_each_for; in isl_ast_build_dup()
216 dup->before_each_for_user = build->before_each_for_user; in isl_ast_build_dup()
217 dup->after_each_for = build->after_each_for; in isl_ast_build_dup()
218 dup->after_each_for_user = build->after_each_for_user; in isl_ast_build_dup()
219 dup->before_each_mark = build->before_each_mark; in isl_ast_build_dup()
220 dup->before_each_mark_user = build->before_each_mark_user; in isl_ast_build_dup()
221 dup->after_each_mark = build->after_each_mark; in isl_ast_build_dup()
222 dup->after_each_mark_user = build->after_each_mark_user; in isl_ast_build_dup()
223 dup->create_leaf = build->create_leaf; in isl_ast_build_dup()
224 dup->create_leaf_user = build->create_leaf_user; in isl_ast_build_dup()
225 dup->node = isl_schedule_node_copy(build->node); in isl_ast_build_dup()
226 if (build->loop_type) { in isl_ast_build_dup()
229 dup->n = build->n; in isl_ast_build_dup()
235 dup->loop_type[i] = build->loop_type[i]; in isl_ast_build_dup()
241 (build->internal2input && !dup->internal2input) || in isl_ast_build_dup()
242 (build->executed && !dup->executed) || in isl_ast_build_dup()
243 (build->value && !dup->value) || in isl_ast_build_dup()
244 (build->node && !dup->node)) in isl_ast_build_dup()
254 __isl_take isl_ast_build *build, __isl_take isl_space *model) in isl_ast_build_align_params() argument
256 build = isl_ast_build_cow(build); in isl_ast_build_align_params()
257 if (!build) in isl_ast_build_align_params()
260 build->domain = isl_set_align_params(build->domain, in isl_ast_build_align_params()
262 build->generated = isl_set_align_params(build->generated, in isl_ast_build_align_params()
264 build->pending = isl_set_align_params(build->pending, in isl_ast_build_align_params()
266 build->values = isl_multi_aff_align_params(build->values, in isl_ast_build_align_params()
268 build->offsets = isl_multi_aff_align_params(build->offsets, in isl_ast_build_align_params()
270 build->options = isl_union_map_align_params(build->options, in isl_ast_build_align_params()
272 if (build->internal2input) { in isl_ast_build_align_params()
273 build->internal2input = in isl_ast_build_align_params()
274 isl_multi_aff_align_params(build->internal2input, in isl_ast_build_align_params()
276 if (!build->internal2input) in isl_ast_build_align_params()
277 return isl_ast_build_free(build); in isl_ast_build_align_params()
282 if (!build->domain || !build->values || !build->offsets || in isl_ast_build_align_params()
283 !build->options) in isl_ast_build_align_params()
284 return isl_ast_build_free(build); in isl_ast_build_align_params()
286 return build; in isl_ast_build_align_params()
292 __isl_give isl_ast_build *isl_ast_build_cow(__isl_take isl_ast_build *build) in isl_ast_build_cow() argument
294 if (!build) in isl_ast_build_cow()
297 if (build->ref == 1) in isl_ast_build_cow()
298 return build; in isl_ast_build_cow()
299 build->ref--; in isl_ast_build_cow()
300 return isl_ast_build_dup(build); in isl_ast_build_cow()
304 __isl_take isl_ast_build *build) in isl_ast_build_free() argument
306 if (!build) in isl_ast_build_free()
309 if (--build->ref > 0) in isl_ast_build_free()
312 isl_id_list_free(build->iterators); in isl_ast_build_free()
313 isl_set_free(build->domain); in isl_ast_build_free()
314 isl_set_free(build->generated); in isl_ast_build_free()
315 isl_set_free(build->pending); in isl_ast_build_free()
316 isl_multi_aff_free(build->values); in isl_ast_build_free()
317 isl_multi_aff_free(build->internal2input); in isl_ast_build_free()
318 isl_pw_aff_free(build->value); in isl_ast_build_free()
319 isl_vec_free(build->strides); in isl_ast_build_free()
320 isl_multi_aff_free(build->offsets); in isl_ast_build_free()
321 isl_multi_aff_free(build->schedule_map); in isl_ast_build_free()
322 isl_union_map_free(build->executed); in isl_ast_build_free()
323 isl_union_map_free(build->options); in isl_ast_build_free()
324 isl_schedule_node_free(build->node); in isl_ast_build_free()
325 free(build->loop_type); in isl_ast_build_free()
326 isl_set_free(build->isolated); in isl_ast_build_free()
328 free(build); in isl_ast_build_free()
333 isl_ctx *isl_ast_build_get_ctx(__isl_keep isl_ast_build *build) in isl_ast_build_get_ctx() argument
335 return build ? isl_set_get_ctx(build->domain) : NULL; in isl_ast_build_get_ctx()
341 __isl_take isl_ast_build *build, __isl_take isl_union_map *options) in isl_ast_build_set_options() argument
343 build = isl_ast_build_cow(build); in isl_ast_build_set_options()
345 if (!build || !options) in isl_ast_build_set_options()
348 isl_union_map_free(build->options); in isl_ast_build_set_options()
349 build->options = options; in isl_ast_build_set_options()
351 return build; in isl_ast_build_set_options()
354 return isl_ast_build_free(build); in isl_ast_build_set_options()
364 __isl_take isl_ast_build *build, __isl_take isl_id_list *iterators) in isl_ast_build_set_iterators() argument
368 build = isl_ast_build_cow(build); in isl_ast_build_set_iterators()
369 if (!build) in isl_ast_build_set_iterators()
372 dim = isl_ast_build_dim(build, isl_dim_set); in isl_ast_build_set_iterators()
373 n_it = isl_id_list_n_id(build->iterators); in isl_ast_build_set_iterators()
377 isl_die(isl_ast_build_get_ctx(build), isl_error_internal, in isl_ast_build_set_iterators()
380 build->iterators = isl_id_list_drop(build->iterators, in isl_ast_build_set_iterators()
382 build->iterators = isl_id_list_concat(build->iterators, iterators); in isl_ast_build_set_iterators()
383 if (!build->iterators) in isl_ast_build_set_iterators()
384 return isl_ast_build_free(build); in isl_ast_build_set_iterators()
386 return build; in isl_ast_build_set_iterators()
389 return isl_ast_build_free(build); in isl_ast_build_set_iterators()
395 __isl_take isl_ast_build *build, in isl_ast_build_set_at_each_domain() argument
397 __isl_keep isl_ast_build *build, void *user), void *user) in isl_ast_build_set_at_each_domain() argument
399 build = isl_ast_build_cow(build); in isl_ast_build_set_at_each_domain()
401 if (!build) in isl_ast_build_set_at_each_domain()
404 build->at_each_domain = fn; in isl_ast_build_set_at_each_domain()
405 build->at_each_domain_user = user; in isl_ast_build_set_at_each_domain()
407 return build; in isl_ast_build_set_at_each_domain()
413 __isl_take isl_ast_build *build, in isl_ast_build_set_before_each_for() argument
414 __isl_give isl_id *(*fn)(__isl_keep isl_ast_build *build, in isl_ast_build_set_before_each_for() argument
417 build = isl_ast_build_cow(build); in isl_ast_build_set_before_each_for()
419 if (!build) in isl_ast_build_set_before_each_for()
422 build->before_each_for = fn; in isl_ast_build_set_before_each_for()
423 build->before_each_for_user = user; in isl_ast_build_set_before_each_for()
425 return build; in isl_ast_build_set_before_each_for()
431 __isl_take isl_ast_build *build, in isl_ast_build_set_after_each_for() argument
433 __isl_keep isl_ast_build *build, void *user), void *user) in isl_ast_build_set_after_each_for() argument
435 build = isl_ast_build_cow(build); in isl_ast_build_set_after_each_for()
437 if (!build) in isl_ast_build_set_after_each_for()
440 build->after_each_for = fn; in isl_ast_build_set_after_each_for()
441 build->after_each_for_user = user; in isl_ast_build_set_after_each_for()
443 return build; in isl_ast_build_set_after_each_for()
449 __isl_take isl_ast_build *build, in isl_ast_build_set_before_each_mark() argument
450 isl_stat (*fn)(__isl_keep isl_id *mark, __isl_keep isl_ast_build *build, in isl_ast_build_set_before_each_mark() argument
453 build = isl_ast_build_cow(build); in isl_ast_build_set_before_each_mark()
455 if (!build) in isl_ast_build_set_before_each_mark()
458 build->before_each_mark = fn; in isl_ast_build_set_before_each_mark()
459 build->before_each_mark_user = user; in isl_ast_build_set_before_each_mark()
461 return build; in isl_ast_build_set_before_each_mark()
467 __isl_take isl_ast_build *build, in isl_ast_build_set_after_each_mark() argument
469 __isl_keep isl_ast_build *build, void *user), void *user) in isl_ast_build_set_after_each_mark() argument
471 build = isl_ast_build_cow(build); in isl_ast_build_set_after_each_mark()
473 if (!build) in isl_ast_build_set_after_each_mark()
476 build->after_each_mark = fn; in isl_ast_build_set_after_each_mark()
477 build->after_each_mark_user = user; in isl_ast_build_set_after_each_mark()
479 return build; in isl_ast_build_set_after_each_mark()
485 __isl_take isl_ast_build *build, in isl_ast_build_set_create_leaf() argument
486 __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_build *build, in isl_ast_build_set_create_leaf() argument
489 build = isl_ast_build_cow(build); in isl_ast_build_set_create_leaf()
491 if (!build) in isl_ast_build_set_create_leaf()
494 build->create_leaf = fn; in isl_ast_build_set_create_leaf()
495 build->create_leaf_user = user; in isl_ast_build_set_create_leaf()
497 return build; in isl_ast_build_set_create_leaf()
504 __isl_take isl_ast_build *build) in isl_ast_build_clear_local_info() argument
508 build = isl_ast_build_cow(build); in isl_ast_build_clear_local_info()
509 if (!build) in isl_ast_build_clear_local_info()
512 space = isl_union_map_get_space(build->options); in isl_ast_build_clear_local_info()
513 isl_union_map_free(build->options); in isl_ast_build_clear_local_info()
514 build->options = isl_union_map_empty(space); in isl_ast_build_clear_local_info()
516 build->at_each_domain = NULL; in isl_ast_build_clear_local_info()
517 build->at_each_domain_user = NULL; in isl_ast_build_clear_local_info()
518 build->before_each_for = NULL; in isl_ast_build_clear_local_info()
519 build->before_each_for_user = NULL; in isl_ast_build_clear_local_info()
520 build->after_each_for = NULL; in isl_ast_build_clear_local_info()
521 build->after_each_for_user = NULL; in isl_ast_build_clear_local_info()
522 build->before_each_mark = NULL; in isl_ast_build_clear_local_info()
523 build->before_each_mark_user = NULL; in isl_ast_build_clear_local_info()
524 build->after_each_mark = NULL; in isl_ast_build_clear_local_info()
525 build->after_each_mark_user = NULL; in isl_ast_build_clear_local_info()
526 build->create_leaf = NULL; in isl_ast_build_clear_local_info()
527 build->create_leaf_user = NULL; in isl_ast_build_clear_local_info()
529 if (!build->options) in isl_ast_build_clear_local_info()
530 return isl_ast_build_free(build); in isl_ast_build_clear_local_info()
532 return build; in isl_ast_build_clear_local_info()
539 static int any_eliminated(isl_ast_build *build) in any_eliminated() argument
543 for (i = 0; i < build->depth; ++i) in any_eliminated()
544 if (isl_ast_build_has_affine_value(build, i)) in any_eliminated()
556 static void isl_ast_build_reset_schedule_map(__isl_keep isl_ast_build *build) in isl_ast_build_reset_schedule_map() argument
558 if (!build) in isl_ast_build_reset_schedule_map()
560 isl_multi_aff_free(build->schedule_map); in isl_ast_build_reset_schedule_map()
561 build->schedule_map = NULL; in isl_ast_build_reset_schedule_map()
572 isl_bool isl_ast_build_need_schedule_map(__isl_keep isl_ast_build *build) in isl_ast_build_need_schedule_map() argument
576 dim = isl_ast_build_dim(build, isl_dim_set); in isl_ast_build_need_schedule_map()
579 return isl_bool_ok(build->depth != dim || any_eliminated(build)); in isl_ast_build_need_schedule_map()
601 __isl_keep isl_ast_build *build) in isl_ast_build_get_schedule_map_multi_aff() argument
607 if (!build) in isl_ast_build_get_schedule_map_multi_aff()
609 if (build->schedule_map) in isl_ast_build_get_schedule_map_multi_aff()
610 return isl_multi_aff_copy(build->schedule_map); in isl_ast_build_get_schedule_map_multi_aff()
611 needs_map = isl_ast_build_need_schedule_map(build); in isl_ast_build_get_schedule_map_multi_aff()
615 space = isl_ast_build_get_space(build, 1); in isl_ast_build_get_schedule_map_multi_aff()
620 isl_size dim = isl_ast_build_dim(build, isl_dim_set); in isl_ast_build_get_schedule_map_multi_aff()
625 build->depth, dim - build->depth); in isl_ast_build_get_schedule_map_multi_aff()
626 for (i = build->depth - 1; i >= 0; --i) in isl_ast_build_get_schedule_map_multi_aff()
627 if (isl_ast_build_has_affine_value(build, i)) in isl_ast_build_get_schedule_map_multi_aff()
632 build->schedule_map = ma; in isl_ast_build_get_schedule_map_multi_aff()
633 return isl_multi_aff_copy(build->schedule_map); in isl_ast_build_get_schedule_map_multi_aff()
640 __isl_keep isl_ast_build *build) in isl_ast_build_get_schedule_map() argument
644 ma = isl_ast_build_get_schedule_map_multi_aff(build); in isl_ast_build_get_schedule_map()
651 int isl_ast_build_get_depth(__isl_keep isl_ast_build *build) in isl_ast_build_get_depth() argument
653 return build ? build->depth : -1; in isl_ast_build_get_depth()
661 __isl_take isl_ast_build *build) in isl_ast_build_increase_depth() argument
663 build = isl_ast_build_cow(build); in isl_ast_build_increase_depth()
664 if (!build) in isl_ast_build_increase_depth()
666 build->depth++; in isl_ast_build_increase_depth()
667 isl_ast_build_reset_schedule_map(build); in isl_ast_build_increase_depth()
668 build->value = isl_pw_aff_free(build->value); in isl_ast_build_increase_depth()
669 return build; in isl_ast_build_increase_depth()
672 void isl_ast_build_dump(__isl_keep isl_ast_build *build) in isl_ast_build_dump() argument
674 if (!build) in isl_ast_build_dump()
678 isl_set_dump(build->domain); in isl_ast_build_dump()
680 isl_set_dump(build->generated); in isl_ast_build_dump()
682 isl_set_dump(build->pending); in isl_ast_build_dump()
684 isl_id_list_dump(build->iterators); in isl_ast_build_dump()
686 isl_multi_aff_dump(build->values); in isl_ast_build_dump()
687 if (build->value) { in isl_ast_build_dump()
689 isl_pw_aff_dump(build->value); in isl_ast_build_dump()
692 isl_vec_dump(build->strides); in isl_ast_build_dump()
694 isl_multi_aff_dump(build->offsets); in isl_ast_build_dump()
696 isl_multi_aff_dump(build->internal2input); in isl_ast_build_dump()
705 __isl_take isl_ast_build *build, __isl_take isl_space *space) in isl_ast_build_init() argument
709 build = isl_ast_build_cow(build); in isl_ast_build_init()
710 if (!build) in isl_ast_build_init()
714 build->domain = isl_set_intersect_params(isl_set_copy(set), in isl_ast_build_init()
715 build->domain); in isl_ast_build_init()
716 build->pending = isl_set_intersect_params(isl_set_copy(set), in isl_ast_build_init()
717 build->pending); in isl_ast_build_init()
718 build->generated = isl_set_intersect_params(set, build->generated); in isl_ast_build_init()
720 return isl_ast_build_init_derived(build, space); in isl_ast_build_init()
722 isl_ast_build_free(build); in isl_ast_build_init()
745 __isl_keep isl_ast_build *build) in intersect_stride_constraint() argument
749 if (!build) in intersect_stride_constraint()
751 if (!isl_ast_build_has_stride(build, build->depth)) in intersect_stride_constraint()
754 stride = isl_ast_build_get_stride_constraint(build); in intersect_stride_constraint()
776 __isl_take isl_ast_build *build, __isl_take isl_basic_set *bounds) in update_values() argument
786 set = isl_set_intersect(set, isl_set_copy(build->domain)); in update_values()
787 set = intersect_stride_constraint(set, build); in update_values()
788 it_map = isl_ast_build_map_to_iterator(build, set); in update_values()
792 build = isl_ast_build_free(build); in update_values()
793 if (!build || !sv) { in update_values()
795 return build; in update_values()
799 build->value = isl_pw_multi_aff_get_pw_aff(pma, 0); in update_values()
800 build->value = isl_ast_build_compute_gist_pw_aff(build, build->value); in update_values()
801 build->value = isl_pw_aff_coalesce(build->value); in update_values()
804 n = isl_pw_aff_n_piece(build->value); in update_values()
806 return isl_ast_build_free(build); in update_values()
808 return build; in update_values()
810 isl_pw_aff_foreach_piece(build->value, &extract_single_piece, &aff); in update_values()
812 build->values = isl_multi_aff_set_aff(build->values, build->depth, aff); in update_values()
813 if (!build->values) in update_values()
814 return isl_ast_build_free(build); in update_values()
815 isl_ast_build_reset_schedule_map(build); in update_values()
816 return build; in update_values()
851 __isl_take isl_ast_build *build, __isl_take isl_basic_set *bounds) in isl_ast_build_set_loop_bounds() argument
855 build = isl_ast_build_cow(build); in isl_ast_build_set_loop_bounds()
856 if (!build) in isl_ast_build_set_loop_bounds()
859 build = update_values(build, isl_basic_set_copy(bounds)); in isl_ast_build_set_loop_bounds()
860 if (!build) in isl_ast_build_set_loop_bounds()
863 if (isl_ast_build_has_affine_value(build, build->depth)) { in isl_ast_build_set_loop_bounds()
864 set = isl_set_eliminate(set, isl_dim_set, build->depth, 1); in isl_ast_build_set_loop_bounds()
866 build->pending = isl_set_intersect(build->pending, in isl_ast_build_set_loop_bounds()
868 build->domain = isl_set_intersect(build->domain, set); in isl_ast_build_set_loop_bounds()
870 build->domain = isl_set_intersect(build->domain, set); in isl_ast_build_set_loop_bounds()
871 build = isl_ast_build_include_stride(build); in isl_ast_build_set_loop_bounds()
872 if (!build) in isl_ast_build_set_loop_bounds()
877 if (!build->domain || !build->pending || !build->generated) in isl_ast_build_set_loop_bounds()
878 return isl_ast_build_free(build); in isl_ast_build_set_loop_bounds()
880 return build; in isl_ast_build_set_loop_bounds()
882 isl_ast_build_free(build); in isl_ast_build_set_loop_bounds()
893 __isl_take isl_ast_build *build, __isl_take isl_basic_set *bounds) in isl_ast_build_set_pending_generated() argument
897 if (!build) in isl_ast_build_set_pending_generated()
900 if (isl_ast_build_has_affine_value(build, build->depth)) { in isl_ast_build_set_pending_generated()
902 return build; in isl_ast_build_set_pending_generated()
905 build = isl_ast_build_cow(build); in isl_ast_build_set_pending_generated()
906 if (!build) in isl_ast_build_set_pending_generated()
911 isl_dim_set, build->depth, 1); in isl_ast_build_set_pending_generated()
912 build->pending = isl_set_intersect(build->pending, in isl_ast_build_set_pending_generated()
916 generated, isl_dim_set, build->depth, 1); in isl_ast_build_set_pending_generated()
917 build->generated = isl_set_intersect(build->generated, in isl_ast_build_set_pending_generated()
920 if (!build->pending || !build->generated) in isl_ast_build_set_pending_generated()
921 return isl_ast_build_free(build); in isl_ast_build_set_pending_generated()
923 return build; in isl_ast_build_set_pending_generated()
925 isl_ast_build_free(build); in isl_ast_build_set_pending_generated()
934 __isl_take isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_restrict_internal() argument
936 build = isl_ast_build_cow(build); in isl_ast_build_restrict_internal()
937 if (!build) in isl_ast_build_restrict_internal()
941 build->domain = isl_set_intersect(build->domain, set); in isl_ast_build_restrict_internal()
942 build->domain = isl_set_coalesce(build->domain); in isl_ast_build_restrict_internal()
944 if (!build->domain) in isl_ast_build_restrict_internal()
945 return isl_ast_build_free(build); in isl_ast_build_restrict_internal()
947 return build; in isl_ast_build_restrict_internal()
949 isl_ast_build_free(build); in isl_ast_build_restrict_internal()
958 __isl_take isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_restrict_generated() argument
961 build = isl_ast_build_restrict_internal(build, isl_set_copy(set)); in isl_ast_build_restrict_generated()
962 build = isl_ast_build_cow(build); in isl_ast_build_restrict_generated()
963 if (!build) in isl_ast_build_restrict_generated()
966 build->generated = isl_set_intersect(build->generated, set); in isl_ast_build_restrict_generated()
967 build->generated = isl_set_coalesce(build->generated); in isl_ast_build_restrict_generated()
969 if (!build->generated) in isl_ast_build_restrict_generated()
970 return isl_ast_build_free(build); in isl_ast_build_restrict_generated()
972 return build; in isl_ast_build_restrict_generated()
974 isl_ast_build_free(build); in isl_ast_build_restrict_generated()
985 __isl_take isl_ast_build *build, __isl_take isl_set *guard) in isl_ast_build_replace_pending_by_guard() argument
987 build = isl_ast_build_restrict_generated(build, guard); in isl_ast_build_replace_pending_by_guard()
988 build = isl_ast_build_cow(build); in isl_ast_build_replace_pending_by_guard()
989 if (!build) in isl_ast_build_replace_pending_by_guard()
992 isl_set_free(build->domain); in isl_ast_build_replace_pending_by_guard()
993 build->domain = isl_set_copy(build->generated); in isl_ast_build_replace_pending_by_guard()
994 isl_set_free(build->pending); in isl_ast_build_replace_pending_by_guard()
995 build->pending = isl_set_universe(isl_set_get_space(build->domain)); in isl_ast_build_replace_pending_by_guard()
997 if (!build->pending) in isl_ast_build_replace_pending_by_guard()
998 return isl_ast_build_free(build); in isl_ast_build_replace_pending_by_guard()
1000 return build; in isl_ast_build_replace_pending_by_guard()
1007 __isl_take isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_restrict() argument
1012 return isl_ast_build_restrict_generated(build, set); in isl_ast_build_restrict()
1014 needs_map = isl_ast_build_need_schedule_map(build); in isl_ast_build_restrict()
1019 ma = isl_ast_build_get_schedule_map_multi_aff(build); in isl_ast_build_restrict()
1022 return isl_ast_build_restrict_generated(build, set); in isl_ast_build_restrict()
1024 isl_ast_build_free(build); in isl_ast_build_restrict()
1032 __isl_take isl_ast_build *build, __isl_take isl_union_map *executed) in isl_ast_build_set_executed() argument
1034 build = isl_ast_build_cow(build); in isl_ast_build_set_executed()
1035 if (!build) in isl_ast_build_set_executed()
1038 isl_union_map_free(build->executed); in isl_ast_build_set_executed()
1039 build->executed = executed; in isl_ast_build_set_executed()
1041 return build; in isl_ast_build_set_executed()
1043 isl_ast_build_free(build); in isl_ast_build_set_executed()
1051 int isl_ast_build_has_schedule_node(__isl_keep isl_ast_build *build) in isl_ast_build_has_schedule_node() argument
1053 if (!build) in isl_ast_build_has_schedule_node()
1055 return build->node != NULL; in isl_ast_build_has_schedule_node()
1061 __isl_keep isl_ast_build *build) in isl_ast_build_get_schedule_node() argument
1063 if (!build) in isl_ast_build_get_schedule_node()
1065 return isl_schedule_node_copy(build->node); in isl_ast_build_get_schedule_node()
1072 __isl_take isl_ast_build *build) in extract_loop_types() argument
1079 if (!build) in extract_loop_types()
1081 n = isl_schedule_node_band_n_member(build->node); in extract_loop_types()
1083 return isl_ast_build_free(build); in extract_loop_types()
1084 ctx = isl_ast_build_get_ctx(build); in extract_loop_types()
1085 if (!build->node) in extract_loop_types()
1087 return isl_ast_build_free(build)); in extract_loop_types()
1089 free(build->loop_type); in extract_loop_types()
1090 build->n = n; in extract_loop_types()
1091 build->loop_type = isl_alloc_array(ctx, in extract_loop_types()
1092 enum isl_ast_loop_type, build->n); in extract_loop_types()
1093 if (build->n && !build->loop_type) in extract_loop_types()
1094 return isl_ast_build_free(build); in extract_loop_types()
1095 node = build->node; in extract_loop_types()
1096 for (i = 0; i < build->n; ++i) in extract_loop_types()
1097 build->loop_type[i] = in extract_loop_types()
1100 return build; in extract_loop_types()
1107 __isl_take isl_ast_build *build, in isl_ast_build_set_schedule_node() argument
1110 build = isl_ast_build_cow(build); in isl_ast_build_set_schedule_node()
1111 if (!build || !node) in isl_ast_build_set_schedule_node()
1114 isl_schedule_node_free(build->node); in isl_ast_build_set_schedule_node()
1115 build->node = node; in isl_ast_build_set_schedule_node()
1117 build = extract_loop_types(build); in isl_ast_build_set_schedule_node()
1119 return build; in isl_ast_build_set_schedule_node()
1121 isl_ast_build_free(build); in isl_ast_build_set_schedule_node()
1129 __isl_take isl_ast_build *build) in isl_ast_build_reset_schedule_node() argument
1131 build = isl_ast_build_cow(build); in isl_ast_build_reset_schedule_node()
1132 if (!build) in isl_ast_build_reset_schedule_node()
1135 isl_schedule_node_free(build->node); in isl_ast_build_reset_schedule_node()
1136 build->node = NULL; in isl_ast_build_reset_schedule_node()
1138 return build; in isl_ast_build_reset_schedule_node()
1143 __isl_give isl_set *isl_ast_build_get_domain(__isl_keep isl_ast_build *build) in isl_ast_build_get_domain() argument
1145 return build ? isl_set_copy(build->domain) : NULL; in isl_ast_build_get_domain()
1151 __isl_keep isl_ast_build *build) in isl_ast_build_get_pending() argument
1153 return build ? isl_set_copy(build->pending) : NULL; in isl_ast_build_get_pending()
1159 __isl_keep isl_ast_build *build) in isl_ast_build_get_generated() argument
1161 return build ? isl_set_copy(build->generated) : NULL; in isl_ast_build_get_generated()
1168 __isl_keep isl_ast_build *build) in isl_ast_build_get_internal2input() argument
1170 return build ? isl_multi_aff_copy(build->internal2input) : NULL; in isl_ast_build_get_internal2input()
1176 isl_size isl_ast_build_dim(__isl_keep isl_ast_build *build, in isl_ast_build_dim() argument
1179 if (!build) in isl_ast_build_dim()
1181 return isl_set_dim(build->domain, type); in isl_ast_build_dim()
1193 __isl_give isl_space *isl_ast_build_get_space(__isl_keep isl_ast_build *build, in isl_ast_build_get_space() argument
1201 if (!build) in isl_ast_build_get_space()
1204 space = isl_set_get_space(build->domain); in isl_ast_build_get_space()
1208 needs_map = isl_ast_build_need_schedule_map(build); in isl_ast_build_get_space()
1214 dim = isl_ast_build_dim(build, isl_dim_set); in isl_ast_build_get_space()
1218 build->depth, dim - build->depth); in isl_ast_build_get_space()
1219 for (i = build->depth - 1; i >= 0; --i) { in isl_ast_build_get_space()
1220 isl_bool affine = isl_ast_build_has_affine_value(build, i); in isl_ast_build_get_space()
1236 __isl_keep isl_ast_build *build) in isl_ast_build_get_schedule_space() argument
1241 if (!build) in isl_ast_build_get_schedule_space()
1244 space = isl_ast_build_get_space(build, 0); in isl_ast_build_get_schedule_space()
1247 for (i = 0; i < build->depth; ++i) { in isl_ast_build_get_schedule_space()
1250 if (isl_ast_build_has_affine_value(build, i)) { in isl_ast_build_get_schedule_space()
1255 id = isl_ast_build_get_iterator_id(build, i); in isl_ast_build_get_schedule_space()
1266 __isl_keep isl_ast_build *build) in isl_ast_build_get_schedule() argument
1272 needs_map = isl_ast_build_need_schedule_map(build); in isl_ast_build_get_schedule()
1276 executed = isl_union_map_copy(build->executed); in isl_ast_build_get_schedule()
1278 isl_map *proj = isl_ast_build_get_schedule_map(build); in isl_ast_build_get_schedule()
1290 __isl_keep isl_ast_build *build, int pos) in isl_ast_build_get_iterator_id() argument
1292 if (!build) in isl_ast_build_get_iterator_id()
1295 return isl_id_list_get_id(build->iterators, pos); in isl_ast_build_get_iterator_id()
1301 static __isl_give isl_ast_build *set_stride(__isl_take isl_ast_build *build, in set_stride() argument
1306 build = isl_ast_build_cow(build); in set_stride()
1307 if (!build || !stride || !offset) in set_stride()
1310 pos = build->depth; in set_stride()
1312 build->strides = isl_vec_set_element_val(build->strides, pos, stride); in set_stride()
1313 build->offsets = isl_multi_aff_set_aff(build->offsets, pos, offset); in set_stride()
1314 if (!build->strides || !build->offsets) in set_stride()
1315 return isl_ast_build_free(build); in set_stride()
1317 return build; in set_stride()
1321 return isl_ast_build_free(build); in set_stride()
1336 __isl_keep isl_ast_build *build) in isl_ast_build_get_stride_constraint() argument
1343 if (!build) in isl_ast_build_get_stride_constraint()
1346 pos = build->depth; in isl_ast_build_get_stride_constraint()
1348 if (!isl_ast_build_has_stride(build, pos)) in isl_ast_build_get_stride_constraint()
1349 return isl_set_universe(isl_ast_build_get_space(build, 1)); in isl_ast_build_get_stride_constraint()
1351 stride = isl_ast_build_get_stride(build, pos); in isl_ast_build_get_stride_constraint()
1352 aff = isl_ast_build_get_offset(build, pos); in isl_ast_build_get_stride_constraint()
1372 __isl_keep isl_ast_build *build) in isl_ast_build_get_stride_expansion() argument
1380 if (!build) in isl_ast_build_get_stride_expansion()
1383 pos = isl_ast_build_get_depth(build); in isl_ast_build_get_stride_expansion()
1384 space = isl_ast_build_get_space(build, 1); in isl_ast_build_get_stride_expansion()
1388 if (!isl_ast_build_has_stride(build, pos)) in isl_ast_build_get_stride_expansion()
1391 offset = isl_ast_build_get_offset(build, pos); in isl_ast_build_get_stride_expansion()
1392 stride = isl_ast_build_get_stride(build, pos); in isl_ast_build_get_stride_expansion()
1405 __isl_take isl_ast_build *build) in isl_ast_build_include_stride() argument
1409 if (!build) in isl_ast_build_include_stride()
1411 if (!isl_ast_build_has_stride(build, build->depth)) in isl_ast_build_include_stride()
1412 return build; in isl_ast_build_include_stride()
1413 build = isl_ast_build_cow(build); in isl_ast_build_include_stride()
1414 if (!build) in isl_ast_build_include_stride()
1417 set = isl_ast_build_get_stride_constraint(build); in isl_ast_build_include_stride()
1419 build->domain = isl_set_intersect(build->domain, isl_set_copy(set)); in isl_ast_build_include_stride()
1420 build->generated = isl_set_intersect(build->generated, set); in isl_ast_build_include_stride()
1421 if (!build->domain || !build->generated) in isl_ast_build_include_stride()
1422 return isl_ast_build_free(build); in isl_ast_build_include_stride()
1424 return build; in isl_ast_build_include_stride()
1439 __isl_take isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_detect_strides() argument
1447 if (!build) in isl_ast_build_detect_strides()
1450 pos = isl_ast_build_get_depth(build); in isl_ast_build_detect_strides()
1459 return set_stride(build, stride, offset); in isl_ast_build_detect_strides()
1463 return isl_ast_build_free(build); in isl_ast_build_detect_strides()
1464 return build; in isl_ast_build_detect_strides()
1481 int isl_ast_build_options_involve_depth(__isl_keep isl_ast_build *build) in isl_ast_build_options_involve_depth() argument
1485 if (!build) in isl_ast_build_options_involve_depth()
1488 free = isl_union_map_every_map(build->options, &free_of_depth, in isl_ast_build_options_involve_depth()
1489 &build->depth); in isl_ast_build_options_involve_depth()
1596 __isl_take isl_ast_build *build, int pos) in node_insert_dim() argument
1603 build = isl_ast_build_cow(build); in node_insert_dim()
1604 if (!build) in node_insert_dim()
1606 if (!build->node) in node_insert_dim()
1607 return build; in node_insert_dim()
1609 ctx = isl_ast_build_get_ctx(build); in node_insert_dim()
1610 local_pos = pos - build->outer_pos; in node_insert_dim()
1611 loop_type = isl_realloc_array(ctx, build->loop_type, in node_insert_dim()
1612 enum isl_ast_loop_type, build->n + 1); in node_insert_dim()
1614 return isl_ast_build_free(build); in node_insert_dim()
1615 build->loop_type = loop_type; in node_insert_dim()
1616 for (i = build->n - 1; i >= local_pos; --i) in node_insert_dim()
1619 build->n++; in node_insert_dim()
1621 return build; in node_insert_dim()
1643 __isl_take isl_ast_build *build, int pos) in isl_ast_build_insert_dim() argument
1650 build = isl_ast_build_cow(build); in isl_ast_build_insert_dim()
1651 if (!build) in isl_ast_build_insert_dim()
1654 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_insert_dim()
1656 if (!build->node) in isl_ast_build_insert_dim()
1657 space = isl_ast_build_get_space(build, 1); in isl_ast_build_insert_dim()
1658 build->iterators = isl_id_list_insert(build->iterators, pos, id); in isl_ast_build_insert_dim()
1659 build->domain = isl_set_insert_dims(build->domain, in isl_ast_build_insert_dim()
1661 build->generated = isl_set_insert_dims(build->generated, in isl_ast_build_insert_dim()
1663 build->pending = isl_set_insert_dims(build->pending, in isl_ast_build_insert_dim()
1665 build->strides = isl_vec_insert_els(build->strides, pos, 1); in isl_ast_build_insert_dim()
1666 build->strides = isl_vec_set_element_si(build->strides, pos, 1); in isl_ast_build_insert_dim()
1667 ma_space = isl_space_params(isl_multi_aff_get_space(build->offsets)); in isl_ast_build_insert_dim()
1672 build->offsets = isl_multi_aff_splice(build->offsets, pos, pos, ma); in isl_ast_build_insert_dim()
1674 build->values = isl_multi_aff_splice(build->values, pos, pos, ma); in isl_ast_build_insert_dim()
1675 if (!build->node) in isl_ast_build_insert_dim()
1676 build->options = options_insert_dim(build->options, space, pos); in isl_ast_build_insert_dim()
1677 build->internal2input = isl_multi_aff_free(build->internal2input); in isl_ast_build_insert_dim()
1679 if (!build->iterators || !build->domain || !build->generated || in isl_ast_build_insert_dim()
1680 !build->pending || !build->values || in isl_ast_build_insert_dim()
1681 !build->strides || !build->offsets || !build->options) in isl_ast_build_insert_dim()
1682 return isl_ast_build_free(build); in isl_ast_build_insert_dim()
1684 build = node_insert_dim(build, pos); in isl_ast_build_insert_dim()
1686 return build; in isl_ast_build_insert_dim()
1705 __isl_take isl_ast_build *build, __isl_take isl_val *m, in isl_ast_build_scale_down() argument
1712 build = isl_ast_build_cow(build); in isl_ast_build_scale_down()
1713 if (!build || !umap || !m) in isl_ast_build_scale_down()
1716 depth = build->depth; in isl_ast_build_scale_down()
1718 if (build->internal2input) { in isl_ast_build_scale_down()
1723 space = isl_multi_aff_get_space(build->internal2input); in isl_ast_build_scale_down()
1729 build->internal2input = in isl_ast_build_scale_down()
1730 isl_multi_aff_pullback_multi_aff(build->internal2input, ma); in isl_ast_build_scale_down()
1731 if (!build->internal2input) in isl_ast_build_scale_down()
1735 v = isl_vec_get_element_val(build->strides, depth); in isl_ast_build_scale_down()
1737 build->strides = isl_vec_set_element_val(build->strides, depth, v); in isl_ast_build_scale_down()
1739 aff = isl_multi_aff_get_aff(build->offsets, depth); in isl_ast_build_scale_down()
1741 build->offsets = isl_multi_aff_set_aff(build->offsets, depth, aff); in isl_ast_build_scale_down()
1742 build->options = isl_union_map_apply_domain(build->options, umap); in isl_ast_build_scale_down()
1743 if (!build->strides || !build->offsets || !build->options) in isl_ast_build_scale_down()
1744 return isl_ast_build_free(build); in isl_ast_build_scale_down()
1746 return build; in isl_ast_build_scale_down()
1750 return isl_ast_build_free(build); in isl_ast_build_scale_down()
1758 __isl_keep isl_ast_build *build) in generate_names() argument
1767 id = generate_name(ctx, first + i, build); in generate_names()
1835 __isl_take isl_ast_build *build, __isl_take isl_space *space) in isl_ast_build_product() argument
1843 build = isl_ast_build_cow(build); in isl_ast_build_product()
1844 if (!build) in isl_ast_build_product()
1847 build->outer_pos = build->depth; in isl_ast_build_product()
1849 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_product()
1850 dim = isl_ast_build_dim(build, isl_dim_set); in isl_ast_build_product()
1852 n_it = isl_id_list_n_id(build->iterators); in isl_ast_build_product()
1858 l = generate_names(ctx, dim - n_it, n_it, build); in isl_ast_build_product()
1859 build->iterators = isl_id_list_concat(build->iterators, l); in isl_ast_build_product()
1862 if (isl_set_is_params(build->domain)) in isl_ast_build_product()
1863 return isl_ast_build_init(build, space); in isl_ast_build_product()
1866 build->domain = isl_set_product(build->domain, isl_set_copy(set)); in isl_ast_build_product()
1867 build->pending = isl_set_product(build->pending, isl_set_copy(set)); in isl_ast_build_product()
1868 build->generated = isl_set_product(build->generated, set); in isl_ast_build_product()
1872 build->strides = isl_vec_concat(build->strides, strides); in isl_ast_build_product()
1875 build->offsets = isl_multi_aff_align_params(build->offsets, in isl_ast_build_product()
1877 build->offsets = isl_multi_aff_product(build->offsets, in isl_ast_build_product()
1879 build->values = isl_multi_aff_align_params(build->values, in isl_ast_build_product()
1882 build->values = isl_multi_aff_product(build->values, in isl_ast_build_product()
1884 if (build->internal2input) { in isl_ast_build_product()
1885 build->internal2input = in isl_ast_build_product()
1886 isl_multi_aff_product(build->internal2input, embedding); in isl_ast_build_product()
1887 build->internal2input = in isl_ast_build_product()
1888 isl_multi_aff_flatten_range(build->internal2input); in isl_ast_build_product()
1889 if (!build->internal2input) in isl_ast_build_product()
1890 return isl_ast_build_free(build); in isl_ast_build_product()
1895 space = isl_ast_build_get_space(build, 1); in isl_ast_build_product()
1896 build->options = embed_options(build->options, space); in isl_ast_build_product()
1898 if (!build->iterators || !build->domain || !build->generated || in isl_ast_build_product()
1899 !build->pending || !build->values || in isl_ast_build_product()
1900 !build->strides || !build->offsets || !build->options) in isl_ast_build_product()
1901 return isl_ast_build_free(build); in isl_ast_build_product()
1903 return build; in isl_ast_build_product()
1905 isl_ast_build_free(build); in isl_ast_build_product()
1913 int isl_ast_build_aff_is_nonneg(__isl_keep isl_ast_build *build, in isl_ast_build_aff_is_nonneg() argument
1919 if (!build) in isl_ast_build_aff_is_nonneg()
1924 test = isl_set_intersect(test, isl_set_copy(build->domain)); in isl_ast_build_aff_is_nonneg()
1933 isl_bool isl_ast_build_has_stride(__isl_keep isl_ast_build *build, int pos) in isl_ast_build_has_stride() argument
1938 if (!build) in isl_ast_build_has_stride()
1941 v = isl_vec_get_element_val(build->strides, pos); in isl_ast_build_has_stride()
1954 __isl_give isl_val *isl_ast_build_get_stride(__isl_keep isl_ast_build *build, in isl_ast_build_get_stride() argument
1957 if (!build) in isl_ast_build_get_stride()
1960 return isl_vec_get_element_val(build->strides, pos); in isl_ast_build_get_stride()
1970 __isl_keep isl_ast_build *build, int pos) in isl_ast_build_get_offset() argument
1972 if (!build) in isl_ast_build_get_offset()
1975 return isl_multi_aff_get_aff(build->offsets, pos); in isl_ast_build_get_offset()
1987 isl_bool isl_ast_build_has_affine_value(__isl_keep isl_ast_build *build, in isl_ast_build_has_affine_value() argument
1993 if (!build) in isl_ast_build_has_affine_value()
1996 aff = isl_multi_aff_get_aff(build->values, pos); in isl_ast_build_has_affine_value()
2010 __isl_keep isl_ast_build *build, __isl_take isl_union_map *umap) in isl_ast_build_substitute_values_union_map_domain() argument
2014 if (!build) in isl_ast_build_substitute_values_union_map_domain()
2017 values = isl_multi_aff_copy(build->values); in isl_ast_build_substitute_values_union_map_domain()
2025 int isl_ast_build_has_value(__isl_keep isl_ast_build *build) in isl_ast_build_has_value() argument
2027 if (!build) in isl_ast_build_has_value()
2030 return build->value != NULL; in isl_ast_build_has_value()
2039 __isl_keep isl_ast_build *build, __isl_take isl_basic_set *bset) in isl_ast_build_compute_gist_basic_set() argument
2041 if (!build) in isl_ast_build_compute_gist_basic_set()
2045 isl_multi_aff_copy(build->values)); in isl_ast_build_compute_gist_basic_set()
2047 isl_set_simple_hull(isl_set_copy(build->domain))); in isl_ast_build_compute_gist_basic_set()
2061 __isl_keep isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_compute_gist() argument
2063 if (!build) in isl_ast_build_compute_gist()
2068 isl_multi_aff_copy(build->values)); in isl_ast_build_compute_gist()
2069 set = isl_set_gist(set, isl_set_copy(build->domain)); in isl_ast_build_compute_gist()
2085 __isl_give isl_set *isl_ast_build_specialize(__isl_keep isl_ast_build *build, in isl_ast_build_specialize() argument
2088 if (!build) in isl_ast_build_specialize()
2092 isl_multi_aff_copy(build->values)); in isl_ast_build_specialize()
2098 __isl_keep isl_ast_build *build, __isl_take isl_basic_set *bset) in isl_ast_build_specialize_basic_set() argument
2100 if (!build) in isl_ast_build_specialize_basic_set()
2104 isl_multi_aff_copy(build->values)); in isl_ast_build_specialize_basic_set()
2113 __isl_keep isl_ast_build *build, __isl_take isl_map *map) in isl_ast_build_compute_gist_map_domain() argument
2115 if (!build) in isl_ast_build_compute_gist_map_domain()
2118 map = isl_map_gist_domain(map, isl_set_copy(build->domain)); in isl_ast_build_compute_gist_map_domain()
2132 __isl_keep isl_ast_build *build, __isl_take isl_aff *aff) in isl_ast_build_compute_gist_aff() argument
2134 if (!build) in isl_ast_build_compute_gist_aff()
2137 aff = isl_aff_gist(aff, isl_set_copy(build->domain)); in isl_ast_build_compute_gist_aff()
2151 __isl_keep isl_ast_build *build, __isl_take isl_pw_aff *pa) in isl_ast_build_compute_gist_pw_aff() argument
2153 if (!build) in isl_ast_build_compute_gist_pw_aff()
2156 if (!isl_set_is_params(build->domain)) in isl_ast_build_compute_gist_pw_aff()
2158 isl_multi_aff_copy(build->values)); in isl_ast_build_compute_gist_pw_aff()
2159 pa = isl_pw_aff_gist(pa, isl_set_copy(build->domain)); in isl_ast_build_compute_gist_pw_aff()
2173 __isl_keep isl_ast_build *build, __isl_take isl_pw_multi_aff *pma) in isl_ast_build_compute_gist_pw_multi_aff() argument
2175 if (!build) in isl_ast_build_compute_gist_pw_multi_aff()
2179 isl_multi_aff_copy(build->values)); in isl_ast_build_compute_gist_pw_multi_aff()
2180 pma = isl_pw_multi_aff_gist(pma, isl_set_copy(build->domain)); in isl_ast_build_compute_gist_pw_multi_aff()
2204 __isl_keep isl_ast_build *build, enum isl_ast_loop_type type) in isl_ast_build_get_option_domain() argument
2212 if (!build) in isl_ast_build_get_option_domain()
2216 local_pos = build->depth - build->outer_pos; in isl_ast_build_get_option_domain()
2218 space = isl_ast_build_get_space(build, 1); in isl_ast_build_get_option_domain()
2223 option = isl_union_map_extract_map(build->options, space); in isl_ast_build_get_option_domain()
2227 domain = isl_ast_build_eliminate(build, domain); in isl_ast_build_get_option_domain()
2244 __isl_keep isl_ast_build *build, int isolated) in isl_ast_build_get_loop_type() argument
2249 if (!build) in isl_ast_build_get_loop_type()
2251 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_get_loop_type()
2252 if (!build->node) in isl_ast_build_get_loop_type()
2257 local_pos = build->depth - build->outer_pos; in isl_ast_build_get_loop_type()
2259 return build->loop_type[local_pos]; in isl_ast_build_get_loop_type()
2261 build->node, local_pos); in isl_ast_build_get_loop_type()
2282 __isl_take isl_ast_build *build) in isl_ast_build_extract_isolated() argument
2286 if (!build) in isl_ast_build_extract_isolated()
2288 if (!build->internal2input) in isl_ast_build_extract_isolated()
2289 return build; in isl_ast_build_extract_isolated()
2290 if (build->isolated) in isl_ast_build_extract_isolated()
2291 return build; in isl_ast_build_extract_isolated()
2293 build = isl_ast_build_cow(build); in isl_ast_build_extract_isolated()
2294 if (!build) in isl_ast_build_extract_isolated()
2297 isolated = isl_schedule_node_band_get_ast_isolate_option(build->node); in isl_ast_build_extract_isolated()
2300 isl_multi_aff_copy(build->internal2input)); in isl_ast_build_extract_isolated()
2302 build->isolated = isolated; in isl_ast_build_extract_isolated()
2303 if (!build->isolated) in isl_ast_build_extract_isolated()
2304 return isl_ast_build_free(build); in isl_ast_build_extract_isolated()
2306 return build; in isl_ast_build_extract_isolated()
2313 int isl_ast_build_has_isolated(__isl_keep isl_ast_build *build) in isl_ast_build_has_isolated() argument
2317 if (!build) in isl_ast_build_has_isolated()
2319 if (!build->internal2input) in isl_ast_build_has_isolated()
2321 if (!build->isolated) in isl_ast_build_has_isolated()
2322 isl_die(isl_ast_build_get_ctx(build), isl_error_internal, in isl_ast_build_has_isolated()
2325 empty = isl_set_plain_is_empty(build->isolated); in isl_ast_build_has_isolated()
2337 __isl_give isl_set *isl_ast_build_get_isolated(__isl_keep isl_ast_build *build) in isl_ast_build_get_isolated() argument
2339 if (!build) in isl_ast_build_get_isolated()
2341 if (!build->internal2input) in isl_ast_build_get_isolated()
2342 isl_die(isl_ast_build_get_ctx(build), isl_error_internal, in isl_ast_build_get_isolated()
2345 return isl_set_copy(build->isolated); in isl_ast_build_get_isolated()
2362 __isl_keep isl_ast_build *build) in isl_ast_build_get_separation_class() argument
2369 if (!build) in isl_ast_build_get_separation_class()
2372 local_pos = build->depth - build->outer_pos; in isl_ast_build_get_separation_class()
2373 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_get_separation_class()
2378 space = isl_ast_build_get_space(build, 1); in isl_ast_build_get_separation_class()
2382 res = isl_union_map_extract_map(build->options, space); in isl_ast_build_get_separation_class()
2392 __isl_keep isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_eliminate_inner() argument
2397 if (!build) in isl_ast_build_eliminate_inner()
2401 depth = build->depth; in isl_ast_build_eliminate_inner()
2416 __isl_keep isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_eliminate_divs() argument
2420 if (!build) in isl_ast_build_eliminate_divs()
2424 depth = build->depth; in isl_ast_build_eliminate_divs()
2437 __isl_keep isl_ast_build *build, __isl_take isl_set *domain) in isl_ast_build_eliminate() argument
2439 domain = isl_ast_build_eliminate_inner(build, domain); in isl_ast_build_eliminate()
2440 domain = isl_ast_build_eliminate_divs(build, domain); in isl_ast_build_eliminate()
2447 __isl_take isl_ast_build *build, int sv) in isl_ast_build_set_single_valued() argument
2449 if (!build) in isl_ast_build_set_single_valued()
2450 return build; in isl_ast_build_set_single_valued()
2451 if (build->single_valued == sv) in isl_ast_build_set_single_valued()
2452 return build; in isl_ast_build_set_single_valued()
2453 build = isl_ast_build_cow(build); in isl_ast_build_set_single_valued()
2454 if (!build) in isl_ast_build_set_single_valued()
2455 return build; in isl_ast_build_set_single_valued()
2456 build->single_valued = sv; in isl_ast_build_set_single_valued()
2458 return build; in isl_ast_build_set_single_valued()