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()
1491 int isl_ast_build_options_involve_depth(__isl_keep isl_ast_build *build) in isl_ast_build_options_involve_depth() argument
1495 if (!build) in isl_ast_build_options_involve_depth()
1498 data.depth = build->depth; in isl_ast_build_options_involve_depth()
1501 if (isl_union_map_foreach_map(build->options, in isl_ast_build_options_involve_depth()
1613 __isl_take isl_ast_build *build, int pos) in node_insert_dim() argument
1620 build = isl_ast_build_cow(build); in node_insert_dim()
1621 if (!build) in node_insert_dim()
1623 if (!build->node) in node_insert_dim()
1624 return build; in node_insert_dim()
1626 ctx = isl_ast_build_get_ctx(build); in node_insert_dim()
1627 local_pos = pos - build->outer_pos; in node_insert_dim()
1628 loop_type = isl_realloc_array(ctx, build->loop_type, in node_insert_dim()
1629 enum isl_ast_loop_type, build->n + 1); in node_insert_dim()
1631 return isl_ast_build_free(build); in node_insert_dim()
1632 build->loop_type = loop_type; in node_insert_dim()
1633 for (i = build->n - 1; i >= local_pos; --i) in node_insert_dim()
1636 build->n++; in node_insert_dim()
1638 return build; in node_insert_dim()
1660 __isl_take isl_ast_build *build, int pos) in isl_ast_build_insert_dim() argument
1667 build = isl_ast_build_cow(build); in isl_ast_build_insert_dim()
1668 if (!build) in isl_ast_build_insert_dim()
1671 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_insert_dim()
1673 if (!build->node) in isl_ast_build_insert_dim()
1674 space = isl_ast_build_get_space(build, 1); in isl_ast_build_insert_dim()
1675 build->iterators = isl_id_list_insert(build->iterators, pos, id); in isl_ast_build_insert_dim()
1676 build->domain = isl_set_insert_dims(build->domain, in isl_ast_build_insert_dim()
1678 build->generated = isl_set_insert_dims(build->generated, in isl_ast_build_insert_dim()
1680 build->pending = isl_set_insert_dims(build->pending, in isl_ast_build_insert_dim()
1682 build->strides = isl_vec_insert_els(build->strides, pos, 1); in isl_ast_build_insert_dim()
1683 build->strides = isl_vec_set_element_si(build->strides, pos, 1); in isl_ast_build_insert_dim()
1684 ma_space = isl_space_params(isl_multi_aff_get_space(build->offsets)); in isl_ast_build_insert_dim()
1689 build->offsets = isl_multi_aff_splice(build->offsets, pos, pos, ma); in isl_ast_build_insert_dim()
1691 build->values = isl_multi_aff_splice(build->values, pos, pos, ma); in isl_ast_build_insert_dim()
1692 if (!build->node) in isl_ast_build_insert_dim()
1693 build->options = options_insert_dim(build->options, space, pos); in isl_ast_build_insert_dim()
1694 build->internal2input = isl_multi_aff_free(build->internal2input); in isl_ast_build_insert_dim()
1696 if (!build->iterators || !build->domain || !build->generated || in isl_ast_build_insert_dim()
1697 !build->pending || !build->values || in isl_ast_build_insert_dim()
1698 !build->strides || !build->offsets || !build->options) in isl_ast_build_insert_dim()
1699 return isl_ast_build_free(build); in isl_ast_build_insert_dim()
1701 build = node_insert_dim(build, pos); in isl_ast_build_insert_dim()
1703 return build; in isl_ast_build_insert_dim()
1722 __isl_take isl_ast_build *build, __isl_take isl_val *m, in isl_ast_build_scale_down() argument
1729 build = isl_ast_build_cow(build); in isl_ast_build_scale_down()
1730 if (!build || !umap || !m) in isl_ast_build_scale_down()
1733 depth = build->depth; in isl_ast_build_scale_down()
1735 if (build->internal2input) { in isl_ast_build_scale_down()
1740 space = isl_multi_aff_get_space(build->internal2input); in isl_ast_build_scale_down()
1746 build->internal2input = in isl_ast_build_scale_down()
1747 isl_multi_aff_pullback_multi_aff(build->internal2input, ma); in isl_ast_build_scale_down()
1748 if (!build->internal2input) in isl_ast_build_scale_down()
1752 v = isl_vec_get_element_val(build->strides, depth); in isl_ast_build_scale_down()
1754 build->strides = isl_vec_set_element_val(build->strides, depth, v); in isl_ast_build_scale_down()
1756 aff = isl_multi_aff_get_aff(build->offsets, depth); in isl_ast_build_scale_down()
1758 build->offsets = isl_multi_aff_set_aff(build->offsets, depth, aff); in isl_ast_build_scale_down()
1759 build->options = isl_union_map_apply_domain(build->options, umap); in isl_ast_build_scale_down()
1760 if (!build->strides || !build->offsets || !build->options) in isl_ast_build_scale_down()
1761 return isl_ast_build_free(build); in isl_ast_build_scale_down()
1763 return build; in isl_ast_build_scale_down()
1767 return isl_ast_build_free(build); in isl_ast_build_scale_down()
1775 __isl_keep isl_ast_build *build) in generate_names() argument
1784 id = generate_name(ctx, first + i, build); in generate_names()
1852 __isl_take isl_ast_build *build, __isl_take isl_space *space) in isl_ast_build_product() argument
1860 build = isl_ast_build_cow(build); in isl_ast_build_product()
1861 if (!build) in isl_ast_build_product()
1864 build->outer_pos = build->depth; in isl_ast_build_product()
1866 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_product()
1867 dim = isl_ast_build_dim(build, isl_dim_set); in isl_ast_build_product()
1869 n_it = isl_id_list_n_id(build->iterators); in isl_ast_build_product()
1875 l = generate_names(ctx, dim - n_it, n_it, build); in isl_ast_build_product()
1876 build->iterators = isl_id_list_concat(build->iterators, l); in isl_ast_build_product()
1879 if (isl_set_is_params(build->domain)) in isl_ast_build_product()
1880 return isl_ast_build_init(build, space); in isl_ast_build_product()
1883 build->domain = isl_set_product(build->domain, isl_set_copy(set)); in isl_ast_build_product()
1884 build->pending = isl_set_product(build->pending, isl_set_copy(set)); in isl_ast_build_product()
1885 build->generated = isl_set_product(build->generated, set); in isl_ast_build_product()
1889 build->strides = isl_vec_concat(build->strides, strides); in isl_ast_build_product()
1892 build->offsets = isl_multi_aff_align_params(build->offsets, in isl_ast_build_product()
1894 build->offsets = isl_multi_aff_product(build->offsets, in isl_ast_build_product()
1896 build->values = isl_multi_aff_align_params(build->values, in isl_ast_build_product()
1899 build->values = isl_multi_aff_product(build->values, in isl_ast_build_product()
1901 if (build->internal2input) { in isl_ast_build_product()
1902 build->internal2input = in isl_ast_build_product()
1903 isl_multi_aff_product(build->internal2input, embedding); in isl_ast_build_product()
1904 build->internal2input = in isl_ast_build_product()
1905 isl_multi_aff_flatten_range(build->internal2input); in isl_ast_build_product()
1906 if (!build->internal2input) in isl_ast_build_product()
1907 return isl_ast_build_free(build); in isl_ast_build_product()
1912 space = isl_ast_build_get_space(build, 1); in isl_ast_build_product()
1913 build->options = embed_options(build->options, space); in isl_ast_build_product()
1915 if (!build->iterators || !build->domain || !build->generated || in isl_ast_build_product()
1916 !build->pending || !build->values || in isl_ast_build_product()
1917 !build->strides || !build->offsets || !build->options) in isl_ast_build_product()
1918 return isl_ast_build_free(build); in isl_ast_build_product()
1920 return build; in isl_ast_build_product()
1922 isl_ast_build_free(build); in isl_ast_build_product()
1930 int isl_ast_build_aff_is_nonneg(__isl_keep isl_ast_build *build, in isl_ast_build_aff_is_nonneg() argument
1936 if (!build) in isl_ast_build_aff_is_nonneg()
1941 test = isl_set_intersect(test, isl_set_copy(build->domain)); in isl_ast_build_aff_is_nonneg()
1950 isl_bool isl_ast_build_has_stride(__isl_keep isl_ast_build *build, int pos) in isl_ast_build_has_stride() argument
1955 if (!build) in isl_ast_build_has_stride()
1958 v = isl_vec_get_element_val(build->strides, pos); in isl_ast_build_has_stride()
1971 __isl_give isl_val *isl_ast_build_get_stride(__isl_keep isl_ast_build *build, in isl_ast_build_get_stride() argument
1974 if (!build) in isl_ast_build_get_stride()
1977 return isl_vec_get_element_val(build->strides, pos); in isl_ast_build_get_stride()
1987 __isl_keep isl_ast_build *build, int pos) in isl_ast_build_get_offset() argument
1989 if (!build) in isl_ast_build_get_offset()
1992 return isl_multi_aff_get_aff(build->offsets, pos); in isl_ast_build_get_offset()
2004 isl_bool isl_ast_build_has_affine_value(__isl_keep isl_ast_build *build, in isl_ast_build_has_affine_value() argument
2010 if (!build) in isl_ast_build_has_affine_value()
2013 aff = isl_multi_aff_get_aff(build->values, pos); in isl_ast_build_has_affine_value()
2027 __isl_keep isl_ast_build *build, __isl_take isl_union_map *umap) in isl_ast_build_substitute_values_union_map_domain() argument
2031 if (!build) in isl_ast_build_substitute_values_union_map_domain()
2034 values = isl_multi_aff_copy(build->values); in isl_ast_build_substitute_values_union_map_domain()
2042 int isl_ast_build_has_value(__isl_keep isl_ast_build *build) in isl_ast_build_has_value() argument
2044 if (!build) in isl_ast_build_has_value()
2047 return build->value != NULL; in isl_ast_build_has_value()
2056 __isl_keep isl_ast_build *build, __isl_take isl_basic_set *bset) in isl_ast_build_compute_gist_basic_set() argument
2058 if (!build) in isl_ast_build_compute_gist_basic_set()
2062 isl_multi_aff_copy(build->values)); in isl_ast_build_compute_gist_basic_set()
2064 isl_set_simple_hull(isl_set_copy(build->domain))); in isl_ast_build_compute_gist_basic_set()
2078 __isl_keep isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_compute_gist() argument
2080 if (!build) in isl_ast_build_compute_gist()
2085 isl_multi_aff_copy(build->values)); in isl_ast_build_compute_gist()
2086 set = isl_set_gist(set, isl_set_copy(build->domain)); in isl_ast_build_compute_gist()
2102 __isl_give isl_set *isl_ast_build_specialize(__isl_keep isl_ast_build *build, in isl_ast_build_specialize() argument
2105 if (!build) in isl_ast_build_specialize()
2109 isl_multi_aff_copy(build->values)); in isl_ast_build_specialize()
2115 __isl_keep isl_ast_build *build, __isl_take isl_basic_set *bset) in isl_ast_build_specialize_basic_set() argument
2117 if (!build) in isl_ast_build_specialize_basic_set()
2121 isl_multi_aff_copy(build->values)); in isl_ast_build_specialize_basic_set()
2130 __isl_keep isl_ast_build *build, __isl_take isl_map *map) in isl_ast_build_compute_gist_map_domain() argument
2132 if (!build) in isl_ast_build_compute_gist_map_domain()
2135 map = isl_map_gist_domain(map, isl_set_copy(build->domain)); in isl_ast_build_compute_gist_map_domain()
2149 __isl_keep isl_ast_build *build, __isl_take isl_aff *aff) in isl_ast_build_compute_gist_aff() argument
2151 if (!build) in isl_ast_build_compute_gist_aff()
2154 aff = isl_aff_gist(aff, isl_set_copy(build->domain)); in isl_ast_build_compute_gist_aff()
2168 __isl_keep isl_ast_build *build, __isl_take isl_pw_aff *pa) in isl_ast_build_compute_gist_pw_aff() argument
2170 if (!build) in isl_ast_build_compute_gist_pw_aff()
2173 if (!isl_set_is_params(build->domain)) in isl_ast_build_compute_gist_pw_aff()
2175 isl_multi_aff_copy(build->values)); in isl_ast_build_compute_gist_pw_aff()
2176 pa = isl_pw_aff_gist(pa, isl_set_copy(build->domain)); in isl_ast_build_compute_gist_pw_aff()
2190 __isl_keep isl_ast_build *build, __isl_take isl_pw_multi_aff *pma) in isl_ast_build_compute_gist_pw_multi_aff() argument
2192 if (!build) in isl_ast_build_compute_gist_pw_multi_aff()
2196 isl_multi_aff_copy(build->values)); in isl_ast_build_compute_gist_pw_multi_aff()
2197 pma = isl_pw_multi_aff_gist(pma, isl_set_copy(build->domain)); in isl_ast_build_compute_gist_pw_multi_aff()
2221 __isl_keep isl_ast_build *build, enum isl_ast_loop_type type) in isl_ast_build_get_option_domain() argument
2229 if (!build) in isl_ast_build_get_option_domain()
2233 local_pos = build->depth - build->outer_pos; in isl_ast_build_get_option_domain()
2235 space = isl_ast_build_get_space(build, 1); in isl_ast_build_get_option_domain()
2240 option = isl_union_map_extract_map(build->options, space); in isl_ast_build_get_option_domain()
2244 domain = isl_ast_build_eliminate(build, domain); in isl_ast_build_get_option_domain()
2261 __isl_keep isl_ast_build *build, int isolated) in isl_ast_build_get_loop_type() argument
2266 if (!build) in isl_ast_build_get_loop_type()
2268 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_get_loop_type()
2269 if (!build->node) in isl_ast_build_get_loop_type()
2274 local_pos = build->depth - build->outer_pos; in isl_ast_build_get_loop_type()
2276 return build->loop_type[local_pos]; in isl_ast_build_get_loop_type()
2278 build->node, local_pos); in isl_ast_build_get_loop_type()
2299 __isl_take isl_ast_build *build) in isl_ast_build_extract_isolated() argument
2303 if (!build) in isl_ast_build_extract_isolated()
2305 if (!build->internal2input) in isl_ast_build_extract_isolated()
2306 return build; in isl_ast_build_extract_isolated()
2307 if (build->isolated) in isl_ast_build_extract_isolated()
2308 return build; in isl_ast_build_extract_isolated()
2310 build = isl_ast_build_cow(build); in isl_ast_build_extract_isolated()
2311 if (!build) in isl_ast_build_extract_isolated()
2314 isolated = isl_schedule_node_band_get_ast_isolate_option(build->node); in isl_ast_build_extract_isolated()
2317 isl_multi_aff_copy(build->internal2input)); in isl_ast_build_extract_isolated()
2319 build->isolated = isolated; in isl_ast_build_extract_isolated()
2320 if (!build->isolated) in isl_ast_build_extract_isolated()
2321 return isl_ast_build_free(build); in isl_ast_build_extract_isolated()
2323 return build; in isl_ast_build_extract_isolated()
2330 int isl_ast_build_has_isolated(__isl_keep isl_ast_build *build) in isl_ast_build_has_isolated() argument
2334 if (!build) in isl_ast_build_has_isolated()
2336 if (!build->internal2input) in isl_ast_build_has_isolated()
2338 if (!build->isolated) in isl_ast_build_has_isolated()
2339 isl_die(isl_ast_build_get_ctx(build), isl_error_internal, in isl_ast_build_has_isolated()
2342 empty = isl_set_plain_is_empty(build->isolated); in isl_ast_build_has_isolated()
2354 __isl_give isl_set *isl_ast_build_get_isolated(__isl_keep isl_ast_build *build) in isl_ast_build_get_isolated() argument
2356 if (!build) in isl_ast_build_get_isolated()
2358 if (!build->internal2input) in isl_ast_build_get_isolated()
2359 isl_die(isl_ast_build_get_ctx(build), isl_error_internal, in isl_ast_build_get_isolated()
2362 return isl_set_copy(build->isolated); in isl_ast_build_get_isolated()
2379 __isl_keep isl_ast_build *build) in isl_ast_build_get_separation_class() argument
2386 if (!build) in isl_ast_build_get_separation_class()
2389 local_pos = build->depth - build->outer_pos; in isl_ast_build_get_separation_class()
2390 ctx = isl_ast_build_get_ctx(build); in isl_ast_build_get_separation_class()
2395 space = isl_ast_build_get_space(build, 1); in isl_ast_build_get_separation_class()
2399 res = isl_union_map_extract_map(build->options, space); in isl_ast_build_get_separation_class()
2409 __isl_keep isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_eliminate_inner() argument
2414 if (!build) in isl_ast_build_eliminate_inner()
2418 depth = build->depth; in isl_ast_build_eliminate_inner()
2433 __isl_keep isl_ast_build *build, __isl_take isl_set *set) in isl_ast_build_eliminate_divs() argument
2437 if (!build) in isl_ast_build_eliminate_divs()
2441 depth = build->depth; in isl_ast_build_eliminate_divs()
2454 __isl_keep isl_ast_build *build, __isl_take isl_set *domain) in isl_ast_build_eliminate() argument
2456 domain = isl_ast_build_eliminate_inner(build, domain); in isl_ast_build_eliminate()
2457 domain = isl_ast_build_eliminate_divs(build, domain); in isl_ast_build_eliminate()
2464 __isl_take isl_ast_build *build, int sv) in isl_ast_build_set_single_valued() argument
2466 if (!build) in isl_ast_build_set_single_valued()
2467 return build; in isl_ast_build_set_single_valued()
2468 if (build->single_valued == sv) in isl_ast_build_set_single_valued()
2469 return build; in isl_ast_build_set_single_valued()
2470 build = isl_ast_build_cow(build); in isl_ast_build_set_single_valued()
2471 if (!build) in isl_ast_build_set_single_valued()
2472 return build; in isl_ast_build_set_single_valued()
2473 build->single_valued = sv; in isl_ast_build_set_single_valued()
2475 return build; in isl_ast_build_set_single_valued()