Lines Matching refs:umap

45 isl_size isl_union_map_dim(__isl_keep isl_union_map *umap,  in isl_union_map_dim()  argument
48 if (!umap) in isl_union_map_dim()
52 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in isl_union_map_dim()
55 return isl_space_dim(umap->dim, type); in isl_union_map_dim()
69 __isl_give isl_id *isl_union_map_get_dim_id(__isl_keep isl_union_map *umap, in isl_union_map_get_dim_id() argument
72 if (!umap) in isl_union_map_get_dim_id()
76 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in isl_union_map_get_dim_id()
79 return isl_space_get_dim_id(umap->dim, type, pos); in isl_union_map_get_dim_id()
104 isl_bool isl_union_map_is_params(__isl_keep isl_union_map *umap) in isl_union_map_is_params() argument
106 return isl_union_set_is_params(uset_from_umap(umap)); in isl_union_map_is_params()
112 isl_union_map *umap; in isl_union_map_alloc() local
118 umap = isl_calloc_type(space->ctx, isl_union_map); in isl_union_map_alloc()
119 if (!umap) { in isl_union_map_alloc()
124 umap->ref = 1; in isl_union_map_alloc()
125 umap->dim = space; in isl_union_map_alloc()
126 if (isl_hash_table_init(space->ctx, &umap->table, size) < 0) in isl_union_map_alloc()
127 return isl_union_map_free(umap); in isl_union_map_alloc()
129 return umap; in isl_union_map_alloc()
170 isl_ctx *isl_union_map_get_ctx(__isl_keep isl_union_map *umap) in isl_union_map_get_ctx() argument
172 return umap ? umap->dim->ctx : NULL; in isl_union_map_get_ctx()
182 __isl_keep isl_space *isl_union_map_peek_space(__isl_keep isl_union_map *umap) in isl_union_map_peek_space() argument
184 return umap ? umap->dim : NULL; in isl_union_map_peek_space()
194 __isl_give isl_space *isl_union_map_get_space(__isl_keep isl_union_map *umap) in isl_union_map_get_space() argument
196 return isl_space_copy(isl_union_map_peek_space(umap)); in isl_union_map_get_space()
203 int isl_union_map_find_dim_by_name(__isl_keep isl_union_map *umap, in isl_union_map_find_dim_by_name() argument
206 if (!umap) in isl_union_map_find_dim_by_name()
208 return isl_space_find_dim_by_name(umap->dim, type, name); in isl_union_map_find_dim_by_name()
225 isl_union_map **umap = (isl_union_map **)user; in add_map() local
227 *umap = isl_union_map_add_map(*umap, map); in add_map()
232 __isl_give isl_union_map *isl_union_map_dup(__isl_keep isl_union_map *umap) in isl_union_map_dup() argument
236 if (!umap) in isl_union_map_dup()
239 dup = isl_union_map_empty(isl_space_copy(umap->dim)); in isl_union_map_dup()
240 if (isl_union_map_foreach_map(umap, &add_map, &dup) < 0) in isl_union_map_dup()
248 __isl_give isl_union_map *isl_union_map_cow(__isl_take isl_union_map *umap) in isl_union_map_cow() argument
250 if (!umap) in isl_union_map_cow()
253 if (umap->ref == 1) in isl_union_map_cow()
254 return umap; in isl_union_map_cow()
255 umap->ref--; in isl_union_map_cow()
256 return isl_union_map_dup(umap); in isl_union_map_cow()
285 __isl_take isl_union_map *umap, __isl_take isl_space *model) in isl_union_map_align_params() argument
290 if (!umap || !model) in isl_union_map_align_params()
293 equal_params = isl_space_has_equal_params(umap->dim, model); in isl_union_map_align_params()
298 return umap; in isl_union_map_align_params()
301 data.exp = isl_parameter_alignment_reordering(umap->dim, model); in isl_union_map_align_params()
306 umap->table.n); in isl_union_map_align_params()
307 if (isl_hash_table_foreach(umap->dim->ctx, &umap->table, in isl_union_map_align_params()
312 isl_union_map_free(umap); in isl_union_map_align_params()
317 isl_union_map_free(umap); in isl_union_map_align_params()
358 __isl_give isl_union_map *isl_union_map_copy(__isl_keep isl_union_map *umap) in isl_union_map_copy() argument
360 if (!umap) in isl_union_map_copy()
363 umap->ref++; in isl_union_map_copy()
364 return umap; in isl_union_map_copy()
372 __isl_null isl_union_map *isl_union_map_free(__isl_take isl_union_map *umap) in isl_union_map_free() argument
374 if (!umap) in isl_union_map_free()
377 if (--umap->ref > 0) in isl_union_map_free()
380 isl_hash_table_foreach(umap->dim->ctx, &umap->table, in isl_union_map_free()
382 isl_hash_table_clear(&umap->table); in isl_union_map_free()
383 isl_space_free(umap->dim); in isl_union_map_free()
384 free(umap); in isl_union_map_free()
395 isl_bool isl_union_map_space_has_equal_params(__isl_keep isl_union_map *umap, in isl_union_map_space_has_equal_params() argument
400 umap_space = isl_union_map_peek_space(umap); in isl_union_map_space_has_equal_params()
430 __isl_keep isl_union_map *umap, __isl_keep isl_space *space, in isl_union_map_find_entry() argument
435 if (!umap || !space) in isl_union_map_find_entry()
437 if (reserve && isl_union_map_check_single_reference(umap) < 0) in isl_union_map_find_entry()
441 return isl_hash_table_find(isl_union_map_get_ctx(umap), &umap->table, in isl_union_map_find_entry()
458 __isl_give isl_union_map *isl_union_map_add_map(__isl_take isl_union_map *umap, in isl_union_map_add_map() argument
465 if (!map || !umap) in isl_union_map_add_map()
470 return umap; in isl_union_map_add_map()
473 aligned = isl_map_space_has_equal_params(map, umap->dim); in isl_union_map_add_map()
477 umap = isl_union_map_align_params(umap, isl_map_get_space(map)); in isl_union_map_add_map()
478 map = isl_map_align_params(map, isl_union_map_get_space(umap)); in isl_union_map_add_map()
481 umap = isl_union_map_cow(umap); in isl_union_map_add_map()
484 entry = isl_union_map_find_entry(umap, space, 1); in isl_union_map_add_map()
497 return umap; in isl_union_map_add_map()
500 isl_union_map_free(umap); in isl_union_map_add_map()
513 isl_union_map *umap; in isl_union_map_from_map() local
520 umap = isl_union_map_empty(space); in isl_union_map_from_map()
521 umap = isl_union_map_add_map(umap, map); in isl_union_map_from_map()
523 return umap; in isl_union_map_from_map()
574 isl_size isl_union_map_n_map(__isl_keep isl_union_map *umap) in isl_union_map_n_map() argument
576 return umap ? umap->table.n : isl_size_error; in isl_union_map_n_map()
584 isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap, in isl_union_map_foreach_map() argument
589 if (!umap) in isl_union_map_foreach_map()
592 return isl_hash_table_foreach(umap->dim->ctx, &umap->table, in isl_union_map_foreach_map()
630 isl_bool isl_union_map_every_map(__isl_keep isl_union_map *umap, in isl_union_map_every_map() argument
636 if (!umap) in isl_union_map_every_map()
639 r = isl_hash_table_foreach(isl_union_map_get_ctx(umap), &umap->table, in isl_union_map_every_map()
667 __isl_keep isl_union_map *umap) in isl_union_map_get_map_list() argument
673 n_maps = isl_union_map_n_map(umap); in isl_union_map_get_map_list()
676 ctx = isl_union_map_get_ctx(umap); in isl_union_map_get_map_list()
679 if (isl_union_map_foreach_map(umap, &add_list_map, &list) < 0) in isl_union_map_get_map_list()
697 isl_bool isl_union_map_isa_map(__isl_keep isl_union_map *umap) in isl_union_map_isa_map() argument
701 n = isl_union_map_n_map(umap); in isl_union_map_isa_map()
725 __isl_give isl_map *isl_map_from_union_map(__isl_take isl_union_map *umap) in isl_map_from_union_map() argument
731 is_map = isl_union_map_isa_map(umap); in isl_map_from_union_map()
734 ctx = isl_union_map_get_ctx(umap); in isl_map_from_union_map()
740 isl_hash_table_foreach(ctx, &umap->table, &copy_map, &map); in isl_map_from_union_map()
742 isl_union_map_free(umap); in isl_map_from_union_map()
746 isl_union_map_free(umap); in isl_map_from_union_map()
753 __isl_give isl_map *isl_union_map_as_map(__isl_take isl_union_map *umap) in isl_union_map_as_map() argument
755 return isl_map_from_union_map(umap); in isl_union_map_as_map()
774 __isl_give isl_map *isl_union_map_extract_map(__isl_keep isl_union_map *umap, in isl_union_map_extract_map() argument
779 entry = isl_union_map_find_entry(umap, space, 0); in isl_union_map_extract_map()
799 isl_bool isl_union_map_contains(__isl_keep isl_union_map *umap, in isl_union_map_contains() argument
805 space = isl_space_align_params(space, isl_union_map_get_space(umap)); in isl_union_map_contains()
806 entry = isl_union_map_find_entry(umap, space, 0); in isl_union_map_contains()
1095 static __isl_give isl_union_map *gen_bin_set_op(__isl_take isl_union_map *umap, in gen_bin_set_op() argument
1100 umap = isl_union_map_align_params(umap, isl_set_get_space(set)); in gen_bin_set_op()
1101 set = isl_set_align_params(set, isl_union_map_get_space(umap)); in gen_bin_set_op()
1103 if (!umap || !set) in gen_bin_set_op()
1107 data.res = isl_union_map_alloc(isl_space_copy(umap->dim), in gen_bin_set_op()
1108 umap->table.n); in gen_bin_set_op()
1109 if (isl_hash_table_foreach(umap->dim->ctx, &umap->table, in gen_bin_set_op()
1113 isl_union_map_free(umap); in gen_bin_set_op()
1117 isl_union_map_free(umap); in gen_bin_set_op()
1128 __isl_take isl_union_map *umap, __isl_take isl_set *set) in isl_union_map_intersect_params() argument
1137 return umap; in isl_union_map_intersect_params()
1140 return gen_bin_set_op(umap, set, &intersect_params_entry); in isl_union_map_intersect_params()
1142 isl_union_map_free(umap); in isl_union_map_intersect_params()
1154 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in union_map_intersect_params() argument
1156 return isl_union_map_intersect_params(umap, in union_map_intersect_params()
1161 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in union_map_gist_params() argument
1163 return isl_union_map_gist_params(umap, isl_set_from_union_set(uset)); in union_map_gist_params()
1286 __isl_take isl_union_map *umap, __isl_take isl_set *set) in isl_union_map_gist_params() argument
1288 return gen_bin_set_op(umap, set, &gist_params_entry); in isl_union_map_gist_params()
1297 __isl_give isl_union_map *isl_union_map_gist(__isl_take isl_union_map *umap, in isl_union_map_gist() argument
1300 return match_bin_op(umap, context, &isl_map_gist); in isl_union_map_gist()
1317 __isl_take isl_union_map *umap, __isl_take isl_union_map *context) in isl_union_map_plain_gist() argument
1319 return match_bin_op(umap, context, &isl_map_plain_gist); in isl_union_map_plain_gist()
1384 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in union_map_intersect_domain() argument
1391 return gen_bin_op(umap, uset, &control); in union_map_intersect_domain()
1399 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_intersect_domain_union_set() argument
1402 return union_map_intersect_params(umap, uset); in isl_union_map_intersect_domain_union_set()
1404 return union_map_intersect_domain(umap, uset); in isl_union_map_intersect_domain_union_set()
1410 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_intersect_domain() argument
1412 return isl_union_map_intersect_domain_union_set(umap, uset); in isl_union_map_intersect_domain()
1418 __isl_take isl_union_map *umap, __isl_take isl_union_set *dom) in isl_union_map_subtract_domain() argument
1426 return gen_bin_op(umap, dom, &control); in isl_union_map_subtract_domain()
1432 __isl_take isl_union_map *umap, __isl_take isl_union_set *dom) in isl_union_map_subtract_range() argument
1440 return gen_bin_op(umap, dom, &control); in isl_union_map_subtract_range()
1446 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in union_map_gist_domain() argument
1453 return gen_bin_op(umap, uset, &control); in union_map_gist_domain()
1461 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_gist_domain() argument
1464 return union_map_gist_params(umap, uset); in isl_union_map_gist_domain()
1466 return union_map_gist_domain(umap, uset); in isl_union_map_gist_domain()
1472 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_gist_range() argument
1479 return gen_bin_op(umap, uset, &control); in isl_union_map_gist_range()
1483 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_intersect_range_union_set() argument
1490 return gen_bin_op(umap, uset, &control); in isl_union_map_intersect_range_union_set()
1496 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_intersect_range() argument
1498 return isl_union_map_intersect_range_union_set(umap, uset); in isl_union_map_intersect_range()
1506 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor) in isl_union_map_intersect_domain_factor_domain() argument
1514 return gen_bin_op(umap, factor, &control); in isl_union_map_intersect_domain_factor_domain()
1522 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor) in isl_union_map_intersect_domain_factor_range() argument
1530 return gen_bin_op(umap, factor, &control); in isl_union_map_intersect_domain_factor_range()
1538 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor) in isl_union_map_intersect_range_factor_domain() argument
1546 return gen_bin_op(umap, factor, &control); in isl_union_map_intersect_range_factor_domain()
1554 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor) in isl_union_map_intersect_range_factor_range() argument
1562 return gen_bin_op(umap, factor, &control); in isl_union_map_intersect_range_factor_range()
1659 __isl_take isl_union_set *uset, __isl_take isl_union_map *umap) in isl_union_set_apply() argument
1661 return isl_union_map_apply_range(uset, umap); in isl_union_set_apply()
1970 static __isl_give isl_union_map *un_op(__isl_take isl_union_map *umap, in un_op() argument
1975 if (!umap) in un_op()
1978 isl_die(isl_union_map_get_ctx(umap), isl_error_internal, in un_op()
1980 return isl_union_map_free(umap)); in un_op()
1982 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in un_op()
1984 return isl_union_map_free(umap)); in un_op()
1986 if (control->total && umap->ref == 1) in un_op()
1989 data.res = umap; in un_op()
1993 space = isl_union_map_get_space(umap); in un_op()
1994 data.res = isl_union_map_alloc(space, umap->table.n); in un_op()
1996 if (isl_hash_table_foreach(isl_union_map_get_ctx(umap), in un_op()
1997 &umap->table, &un_entry, &data) < 0) in un_op()
2002 isl_union_map_free(umap); in un_op()
2031 static __isl_give isl_union_map *total(__isl_take isl_union_map *umap, in total() argument
2039 return un_op(umap, &control); in total()
2050 __isl_take isl_union_map *umap) in isl_union_map_affine_hull() argument
2052 return total(umap, &isl_map_affine_hull_map); in isl_union_map_affine_hull()
2091 __isl_take isl_union_map *umap) in isl_union_map_polyhedral_hull() argument
2093 return total(umap, &isl_map_polyhedral_hull_map); in isl_union_map_polyhedral_hull()
2112 __isl_take isl_union_map *umap) in isl_union_map_simple_hull() argument
2114 return total(umap, &isl_map_simple_hull_map); in isl_union_map_simple_hull()
2123 static __isl_give isl_union_map *inplace(__isl_take isl_union_map *umap, in inplace() argument
2131 return un_op(umap, &control); in inplace()
2139 __isl_take isl_union_map *umap) in isl_union_map_remove_redundancies() argument
2141 return inplace(umap, &isl_map_remove_redundancies); in isl_union_map_remove_redundancies()
2153 __isl_take isl_union_map *umap) in isl_union_map_coalesce() argument
2155 return inplace(umap, &isl_map_coalesce); in isl_union_map_coalesce()
2165 __isl_take isl_union_map *umap) in isl_union_map_detect_equalities() argument
2167 return inplace(umap, &isl_map_detect_equalities); in isl_union_map_detect_equalities()
2177 __isl_take isl_union_map *umap) in isl_union_map_compute_divs() argument
2179 return inplace(umap, &isl_map_compute_divs); in isl_union_map_compute_divs()
2189 __isl_take isl_union_map *umap) in isl_union_map_lexmin() argument
2191 return total(umap, &isl_map_lexmin); in isl_union_map_lexmin()
2201 __isl_take isl_union_map *umap) in isl_union_map_lexmax() argument
2203 return total(umap, &isl_map_lexmax); in isl_union_map_lexmax()
2223 __isl_give isl_union_map *isl_union_map_universe(__isl_take isl_union_map *umap) in isl_union_map_universe() argument
2228 return un_op(umap, &control); in isl_union_map_universe()
2236 __isl_give isl_union_map *isl_union_map_reverse(__isl_take isl_union_map *umap) in isl_union_map_reverse() argument
2241 return un_op(umap, &control); in isl_union_map_reverse()
2248 __isl_take isl_union_map *umap) in isl_union_map_range_reverse() argument
2256 return un_op(umap, &control); in isl_union_map_range_reverse()
2261 __isl_give isl_set *isl_union_map_params(__isl_take isl_union_map *umap) in isl_union_map_params() argument
2268 empty = isl_union_map_is_empty(umap); in isl_union_map_params()
2273 space = isl_union_map_get_space(umap); in isl_union_map_params()
2274 isl_union_map_free(umap); in isl_union_map_params()
2277 return isl_set_from_union_set(un_op(umap, &control)); in isl_union_map_params()
2279 isl_union_map_free(umap); in isl_union_map_params()
2290 __isl_give isl_union_set *isl_union_map_domain(__isl_take isl_union_map *umap) in isl_union_map_domain() argument
2295 return un_op(umap, &control); in isl_union_map_domain()
2298 __isl_give isl_union_set *isl_union_map_range(__isl_take isl_union_map *umap) in isl_union_map_range() argument
2303 return un_op(umap, &control); in isl_union_map_range()
2307 __isl_take isl_union_map *umap) in isl_union_map_domain_map() argument
2312 return un_op(umap, &control); in isl_union_map_domain_map()
2336 __isl_take isl_union_map *umap) in isl_union_map_domain_map_union_pw_multi_aff() argument
2340 res = isl_union_pw_multi_aff_empty(isl_union_map_get_space(umap)); in isl_union_map_domain_map_union_pw_multi_aff()
2341 if (isl_union_map_foreach_map(umap, &domain_map_upma, &res) < 0) in isl_union_map_domain_map_union_pw_multi_aff()
2344 isl_union_map_free(umap); in isl_union_map_domain_map_union_pw_multi_aff()
2349 __isl_take isl_union_map *umap) in isl_union_map_range_map() argument
2354 return un_op(umap, &control); in isl_union_map_range_map()
2379 __isl_give isl_union_set *isl_union_map_deltas(__isl_take isl_union_map *umap) in isl_union_map_deltas() argument
2385 return un_op(umap, &control); in isl_union_map_deltas()
2389 __isl_take isl_union_map *umap) in isl_union_map_deltas_map() argument
2395 return un_op(umap, &control); in isl_union_map_deltas_map()
2442 __isl_take isl_union_map *umap) in isl_union_map_domain_factor_domain() argument
2450 return un_op(umap, &control); in isl_union_map_domain_factor_domain()
2457 __isl_take isl_union_map *umap) in isl_union_map_domain_factor_range() argument
2465 return un_op(umap, &control); in isl_union_map_domain_factor_range()
2472 __isl_take isl_union_map *umap) in isl_union_map_range_factor_domain() argument
2480 return un_op(umap, &control); in isl_union_map_range_factor_domain()
2487 __isl_take isl_union_map *umap) in isl_union_map_range_factor_range() argument
2495 return un_op(umap, &control); in isl_union_map_range_factor_range()
2502 __isl_take isl_union_map *umap) in isl_union_map_factor_domain() argument
2510 return un_op(umap, &control); in isl_union_map_factor_domain()
2517 __isl_take isl_union_map *umap) in isl_union_map_factor_range() argument
2525 return un_op(umap, &control); in isl_union_map_factor_range()
2539 __isl_give isl_union_set *isl_union_map_wrap(__isl_take isl_union_map *umap) in isl_union_map_wrap() argument
2544 return un_op(umap, &control); in isl_union_map_wrap()
2731 __isl_give isl_basic_map *isl_union_map_sample(__isl_take isl_union_map *umap) in isl_union_map_sample() argument
2735 if (!umap) in isl_union_map_sample()
2738 if (isl_hash_table_foreach(umap->dim->ctx, &umap->table, in isl_union_map_sample()
2744 sample = isl_basic_map_empty(isl_union_map_get_space(umap)); in isl_union_map_sample()
2746 isl_union_map_free(umap); in isl_union_map_sample()
2750 isl_union_map_free(umap); in isl_union_map_sample()
2787 static isl_bool union_map_forall(__isl_keep isl_union_map *umap, in union_map_forall() argument
2792 if (!umap) in union_map_forall()
2795 if (isl_hash_table_foreach(umap->dim->ctx, &umap->table, in union_map_forall()
2825 static isl_bool union_map_forall_user(__isl_keep isl_union_map *umap, in union_map_forall_user() argument
2830 if (!umap) in union_map_forall_user()
2833 if (isl_hash_table_foreach(umap->dim->ctx, &umap->table, in union_map_forall_user()
2842 isl_bool isl_union_map_plain_is_empty(__isl_keep isl_union_map *umap) in isl_union_map_plain_is_empty() argument
2846 n = isl_union_map_n_map(umap); in isl_union_map_plain_is_empty()
2852 isl_bool isl_union_map_is_empty(__isl_keep isl_union_map *umap) in isl_union_map_is_empty() argument
2854 return union_map_forall(umap, &isl_map_is_empty); in isl_union_map_is_empty()
2888 static isl_bool single_map_is_single_valued(__isl_keep isl_union_map *umap) in single_map_is_single_valued() argument
2893 umap = isl_union_map_copy(umap); in single_map_is_single_valued()
2894 map = isl_map_from_union_map(umap); in single_map_is_single_valued()
2907 isl_union_map *umap; member
2929 isl_union_map *umap, *test; in single_valued_on_domain() local
2932 umap = isl_union_map_copy(data->umap); in single_valued_on_domain()
2933 umap = isl_union_map_intersect_domain(umap, in single_valued_on_domain()
2936 n = isl_union_map_n_map(umap); in single_valued_on_domain()
2940 data->sv = single_map_is_single_valued(umap); in single_valued_on_domain()
2941 isl_union_map_free(umap); in single_valued_on_domain()
2943 test = isl_union_map_reverse(isl_union_map_copy(umap)); in single_valued_on_domain()
2944 test = isl_union_map_apply_range(test, umap); in single_valued_on_domain()
2962 isl_bool isl_union_map_is_single_valued(__isl_keep isl_union_map *umap) in isl_union_map_is_single_valued() argument
2969 n = isl_union_map_n_map(umap); in isl_union_map_is_single_valued()
2973 return single_map_is_single_valued(umap); in isl_union_map_is_single_valued()
2975 universe = isl_union_map_universe(isl_union_map_copy(umap)); in isl_union_map_is_single_valued()
2979 data.umap = umap; in isl_union_map_is_single_valued()
2988 isl_bool isl_union_map_is_injective(__isl_keep isl_union_map *umap) in isl_union_map_is_injective() argument
2992 umap = isl_union_map_copy(umap); in isl_union_map_is_injective()
2993 umap = isl_union_map_reverse(umap); in isl_union_map_is_injective()
2994 in = isl_union_map_is_single_valued(umap); in isl_union_map_is_injective()
2995 isl_union_map_free(umap); in isl_union_map_is_injective()
3037 __isl_keep isl_union_map *umap) in isl_union_map_plain_is_not_identity() argument
3042 if (isl_union_map_foreach_map(umap, &map_plain_is_not_identity, in isl_union_map_plain_is_not_identity()
3075 isl_bool isl_union_map_is_identity(__isl_keep isl_union_map *umap) in isl_union_map_is_identity() argument
3080 non_identity = isl_union_map_plain_is_not_identity(umap); in isl_union_map_is_identity()
3085 if (isl_union_map_foreach_map(umap, &map_is_identity, &identity) < 0 && in isl_union_map_is_identity()
3159 static isl_bool plain_injective_on_range(__isl_take isl_union_map *umap,
3223 static isl_bool plain_injective_on_range(__isl_take isl_union_map *umap, in plain_injective_on_range() argument
3230 ctx = isl_union_map_get_ctx(umap); in plain_injective_on_range()
3232 n = isl_union_map_n_map(umap); in plain_injective_on_range()
3237 isl_union_map_free(umap); in plain_injective_on_range()
3242 isl_union_map_free(umap); in plain_injective_on_range()
3256 fixed = union_map_forall_user(umap, &fixed_at_pos, &data); in plain_injective_on_range()
3261 space = isl_union_map_get_space(umap); in plain_injective_on_range()
3263 isl_union_map_free(umap); in plain_injective_on_range()
3268 isl_union_map_free(umap); in plain_injective_on_range()
3273 isl_union_map_free(umap); in plain_injective_on_range()
3284 isl_union_map *umap = user; in plain_injective_on_range_wrap() local
3290 umap = isl_union_map_copy(umap); in plain_injective_on_range_wrap()
3291 umap = isl_union_map_intersect_range(umap, in plain_injective_on_range_wrap()
3293 return plain_injective_on_range(umap, 0, dim); in plain_injective_on_range_wrap()
3302 isl_bool isl_union_map_plain_is_injective(__isl_keep isl_union_map *umap) in isl_union_map_plain_is_injective() argument
3308 in = union_map_forall(umap, &isl_map_plain_is_injective); in isl_union_map_plain_is_injective()
3314 univ = isl_union_map_universe(isl_union_map_copy(umap)); in isl_union_map_plain_is_injective()
3317 in = union_map_forall_user(ran, &plain_injective_on_range_wrap, umap); in isl_union_map_plain_is_injective()
3324 isl_bool isl_union_map_is_bijective(__isl_keep isl_union_map *umap) in isl_union_map_is_bijective() argument
3328 sv = isl_union_map_is_single_valued(umap); in isl_union_map_is_bijective()
3332 return isl_union_map_is_injective(umap); in isl_union_map_is_bijective()
3335 __isl_give isl_union_map *isl_union_map_zip(__isl_take isl_union_map *umap) in isl_union_map_zip() argument
3343 return un_op(umap, &control); in isl_union_map_zip()
3349 __isl_give isl_union_map *isl_union_map_uncurry(__isl_take isl_union_map *umap) in isl_union_map_uncurry() argument
3357 return un_op(umap, &control); in isl_union_map_uncurry()
3363 __isl_give isl_union_map *isl_union_map_curry(__isl_take isl_union_map *umap) in isl_union_map_curry() argument
3371 return un_op(umap, &control); in isl_union_map_curry()
3378 __isl_take isl_union_map *umap) in isl_union_map_range_curry() argument
3386 return un_op(umap, &control); in isl_union_map_range_curry()
3558 __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma, in preimage_pw_multi_aff() argument
3567 umap = isl_union_map_align_params(umap, in preimage_pw_multi_aff()
3569 pma = isl_pw_multi_aff_align_params(pma, isl_union_map_get_space(umap)); in preimage_pw_multi_aff()
3571 if (!umap || !pma) in preimage_pw_multi_aff()
3574 ctx = isl_union_map_get_ctx(umap); in preimage_pw_multi_aff()
3575 space = isl_union_map_get_space(umap); in preimage_pw_multi_aff()
3578 data.res = isl_union_map_alloc(space, umap->table.n); in preimage_pw_multi_aff()
3581 if (isl_hash_table_foreach(ctx, &umap->table, &preimage_entry, in preimage_pw_multi_aff()
3586 isl_union_map_free(umap); in preimage_pw_multi_aff()
3590 isl_union_map_free(umap); in preimage_pw_multi_aff()
3603 __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma) in isl_union_map_preimage_domain_pw_multi_aff() argument
3605 return preimage_pw_multi_aff(umap, pma, &domain_match, in isl_union_map_preimage_domain_pw_multi_aff()
3617 __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma) in isl_union_map_preimage_range_pw_multi_aff() argument
3619 return preimage_pw_multi_aff(umap, pma, &range_match, in isl_union_map_preimage_range_pw_multi_aff()
3644 __isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma) in isl_union_map_preimage_domain_multi_aff() argument
3646 return isl_union_map_preimage_domain_pw_multi_aff(umap, in isl_union_map_preimage_domain_multi_aff()
3658 __isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma) in isl_union_map_preimage_range_multi_aff() argument
3660 return isl_union_map_preimage_range_pw_multi_aff(umap, in isl_union_map_preimage_range_multi_aff()
3733 __isl_take isl_union_map *umap, __isl_take isl_multi_pw_aff *mpa, in preimage_multi_pw_aff() argument
3742 umap = isl_union_map_align_params(umap, in preimage_multi_pw_aff()
3744 mpa = isl_multi_pw_aff_align_params(mpa, isl_union_map_get_space(umap)); in preimage_multi_pw_aff()
3746 if (!umap || !mpa) in preimage_multi_pw_aff()
3749 ctx = isl_union_map_get_ctx(umap); in preimage_multi_pw_aff()
3750 space = isl_union_map_get_space(umap); in preimage_multi_pw_aff()
3753 data.res = isl_union_map_alloc(space, umap->table.n); in preimage_multi_pw_aff()
3756 if (isl_hash_table_foreach(ctx, &umap->table, &preimage_mpa_entry, in preimage_multi_pw_aff()
3761 isl_union_map_free(umap); in preimage_multi_pw_aff()
3765 isl_union_map_free(umap); in preimage_multi_pw_aff()
3778 __isl_take isl_union_map *umap, __isl_take isl_multi_pw_aff *mpa) in isl_union_map_preimage_domain_multi_pw_aff() argument
3780 return preimage_multi_pw_aff(umap, mpa, &domain_match, in isl_union_map_preimage_domain_multi_pw_aff()
3791 isl_union_map *umap; member
3793 __isl_give isl_union_map *(*fn)(__isl_take isl_union_map *umap,
3803 isl_union_map *umap; in preimage_upma() local
3805 umap = isl_union_map_copy(data->umap); in preimage_upma()
3806 umap = data->fn(umap, pma); in preimage_upma()
3807 data->res = isl_union_map_union(data->res, umap); in preimage_upma()
3819 __isl_take isl_union_map *umap, in preimage_union_pw_multi_aff() argument
3821 __isl_give isl_union_map *(*fn)(__isl_take isl_union_map *umap, in preimage_union_pw_multi_aff() argument
3826 data.umap = umap; in preimage_union_pw_multi_aff()
3827 data.res = isl_union_map_empty(isl_union_map_get_space(umap)); in preimage_union_pw_multi_aff()
3833 isl_union_map_free(umap); in preimage_union_pw_multi_aff()
3848 __isl_take isl_union_map *umap, in isl_union_map_preimage_domain_union_pw_multi_aff() argument
3851 return preimage_union_pw_multi_aff(umap, upma, in isl_union_map_preimage_domain_union_pw_multi_aff()
3864 __isl_take isl_union_map *umap, in isl_union_map_preimage_range_union_pw_multi_aff() argument
3867 return preimage_union_pw_multi_aff(umap, upma, in isl_union_map_preimage_range_union_pw_multi_aff()
3890 __isl_take isl_union_map *umap) in isl_union_map_reset_user() argument
3892 umap = isl_union_map_cow(umap); in isl_union_map_reset_user()
3893 if (!umap) in isl_union_map_reset_user()
3895 umap->dim = isl_space_reset_user(umap->dim); in isl_union_map_reset_user()
3896 if (!umap->dim) in isl_union_map_reset_user()
3897 return isl_union_map_free(umap); in isl_union_map_reset_user()
3898 return total(umap, &isl_map_reset_user); in isl_union_map_reset_user()
3914 __isl_take isl_union_map *umap) in isl_union_map_remove_divs() argument
3916 return total(umap, &isl_map_remove_divs); in isl_union_map_remove_divs()
3960 __isl_take isl_union_map *umap, in isl_union_map_project_out() argument
3966 if (!umap) in isl_union_map_project_out()
3970 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in isl_union_map_project_out()
3972 return isl_union_map_free(umap)); in isl_union_map_project_out()
3974 space = isl_union_map_get_space(umap); in isl_union_map_project_out()
3977 if (isl_union_map_foreach_map(umap, &project_out, &data) < 0) in isl_union_map_project_out()
3980 isl_union_map_free(umap); in isl_union_map_project_out()
4039 isl_bool isl_union_map_involves_dims(__isl_keep isl_union_map *umap, in isl_union_map_involves_dims() argument
4046 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in isl_union_map_involves_dims()
4049 excludes = union_map_forall_user(umap, &map_excludes, &data); in isl_union_map_involves_dims()
4091 __isl_take isl_union_map *umap, __isl_take isl_space *space) in isl_union_map_reset_range_space() argument
4095 data.res = isl_union_map_empty(isl_union_map_get_space(umap)); in isl_union_map_reset_range_space()
4096 if (isl_union_map_foreach_map(umap, &reset_range_space, &data) < 0) in isl_union_map_reset_range_space()
4100 isl_union_map_free(umap); in isl_union_map_reset_range_space()
4106 static isl_stat check_union_map_space_equal_dim(__isl_keep isl_union_map *umap, in check_union_map_space_equal_dim() argument
4111 dim1 = isl_union_map_dim(umap, isl_dim_param); in check_union_map_space_equal_dim()
4117 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in check_union_map_space_equal_dim()
4153 __isl_take isl_union_map *umap, __isl_take isl_space *space) in isl_union_map_reset_equal_dim_space() argument
4159 umap_space = isl_union_map_peek_space(umap); in isl_union_map_reset_equal_dim_space()
4165 return umap; in isl_union_map_reset_equal_dim_space()
4167 if (check_union_map_space_equal_dim(umap, space) < 0) in isl_union_map_reset_equal_dim_space()
4171 if (isl_union_map_foreach_map(umap, &reset_params, &data) < 0) in isl_union_map_reset_equal_dim_space()
4175 isl_union_map_free(umap); in isl_union_map_reset_equal_dim_space()
4178 isl_union_map_free(umap); in isl_union_map_reset_equal_dim_space()
4224 __isl_take isl_union_map *umap, __isl_keep isl_multi_union_pw_aff *mupa) in intersect_explicit_domain() argument
4231 return isl_union_map_free(umap); in intersect_explicit_domain()
4233 return umap; in intersect_explicit_domain()
4239 return isl_union_map_free(umap); in intersect_explicit_domain()
4245 umap = isl_union_map_intersect_params(umap, set); in intersect_explicit_domain()
4246 return umap; in intersect_explicit_domain()
4248 umap = isl_union_map_intersect_domain(umap, isl_union_set_copy(dom)); in intersect_explicit_domain()
4249 umap = isl_union_map_intersect_range(umap, dom); in intersect_explicit_domain()
4250 return umap; in intersect_explicit_domain()
4258 __isl_take isl_union_map *umap, __isl_take isl_multi_union_pw_aff *mupa, in isl_union_map_order_at_multi_union_pw_aff() argument
4264 umap = isl_union_map_align_params(umap, in isl_union_map_order_at_multi_union_pw_aff()
4267 isl_union_map_get_space(umap)); in isl_union_map_order_at_multi_union_pw_aff()
4268 umap = intersect_explicit_domain(umap, mupa); in isl_union_map_order_at_multi_union_pw_aff()
4271 data.res = isl_union_map_empty(isl_union_map_get_space(umap)); in isl_union_map_order_at_multi_union_pw_aff()
4272 if (isl_union_map_foreach_map(umap, &order_at, &data) < 0) in isl_union_map_order_at_multi_union_pw_aff()
4276 isl_union_map_free(umap); in isl_union_map_order_at_multi_union_pw_aff()
4284 __isl_take isl_union_map *umap, in isl_union_map_eq_at_multi_union_pw_aff() argument
4287 return isl_union_map_order_at_multi_union_pw_aff(umap, mupa, in isl_union_map_eq_at_multi_union_pw_aff()
4356 uint32_t isl_union_map_get_hash(__isl_keep isl_union_map *umap) in isl_union_map_get_hash() argument
4360 if (!umap) in isl_union_map_get_hash()
4364 if (isl_union_map_foreach_map(umap, &add_hash, &hash) < 0) in isl_union_map_get_hash()
4477 __isl_take isl_union_map *umap, in isl_union_map_remove_map_if() argument
4486 return un_op(umap, &control); in isl_union_map_remove_map_if()
4521 __isl_take isl_union_map *umap, __isl_take isl_multi_id *tuple) in isl_union_map_bind_range() argument
4531 bound = uset_from_umap(un_op(umap, &control)); in isl_union_map_bind_range()
4539 __isl_take isl_union_map *umap, __isl_take isl_space *space) in isl_union_map_intersect_domain_space() argument
4546 umap = un_op(umap, &control); in isl_union_map_intersect_domain_space()
4548 return umap; in isl_union_map_intersect_domain_space()
4554 __isl_take isl_union_map *umap, __isl_take isl_space *space) in isl_union_map_intersect_range_space() argument
4561 umap = un_op(umap, &control); in isl_union_map_intersect_range_space()
4563 return umap; in isl_union_map_intersect_range_space()