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()
558 isl_size isl_union_map_n_map(__isl_keep isl_union_map *umap) in isl_union_map_n_map() argument
560 return umap ? umap->table.n : isl_size_error; in isl_union_map_n_map()
568 isl_stat isl_union_map_foreach_map(__isl_keep isl_union_map *umap, in isl_union_map_foreach_map() argument
573 if (!umap) in isl_union_map_foreach_map()
576 return isl_hash_table_foreach(umap->dim->ctx, &umap->table, in isl_union_map_foreach_map()
614 isl_bool isl_union_map_every_map(__isl_keep isl_union_map *umap, in isl_union_map_every_map() argument
620 if (!umap) in isl_union_map_every_map()
623 r = isl_hash_table_foreach(isl_union_map_get_ctx(umap), &umap->table, in isl_union_map_every_map()
651 __isl_keep isl_union_map *umap) in isl_union_map_get_map_list() argument
657 n_maps = isl_union_map_n_map(umap); in isl_union_map_get_map_list()
660 ctx = isl_union_map_get_ctx(umap); in isl_union_map_get_map_list()
663 if (isl_union_map_foreach_map(umap, &add_list_map, &list) < 0) in isl_union_map_get_map_list()
681 isl_bool isl_union_map_isa_map(__isl_keep isl_union_map *umap) in isl_union_map_isa_map() argument
685 n = isl_union_map_n_map(umap); in isl_union_map_isa_map()
709 __isl_give isl_map *isl_map_from_union_map(__isl_take isl_union_map *umap) in isl_map_from_union_map() argument
715 is_map = isl_union_map_isa_map(umap); in isl_map_from_union_map()
718 ctx = isl_union_map_get_ctx(umap); in isl_map_from_union_map()
724 isl_hash_table_foreach(ctx, &umap->table, &copy_map, &map); in isl_map_from_union_map()
726 isl_union_map_free(umap); in isl_map_from_union_map()
730 isl_union_map_free(umap); in isl_map_from_union_map()
742 __isl_give isl_map *isl_union_map_extract_map(__isl_keep isl_union_map *umap, in isl_union_map_extract_map() argument
747 entry = isl_union_map_find_entry(umap, space, 0); in isl_union_map_extract_map()
767 isl_bool isl_union_map_contains(__isl_keep isl_union_map *umap, in isl_union_map_contains() argument
773 space = isl_space_align_params(space, isl_union_map_get_space(umap)); in isl_union_map_contains()
774 entry = isl_union_map_find_entry(umap, space, 0); in isl_union_map_contains()
1063 static __isl_give isl_union_map *gen_bin_set_op(__isl_take isl_union_map *umap, in gen_bin_set_op() argument
1068 umap = isl_union_map_align_params(umap, isl_set_get_space(set)); in gen_bin_set_op()
1069 set = isl_set_align_params(set, isl_union_map_get_space(umap)); in gen_bin_set_op()
1071 if (!umap || !set) in gen_bin_set_op()
1075 data.res = isl_union_map_alloc(isl_space_copy(umap->dim), in gen_bin_set_op()
1076 umap->table.n); in gen_bin_set_op()
1077 if (isl_hash_table_foreach(umap->dim->ctx, &umap->table, in gen_bin_set_op()
1081 isl_union_map_free(umap); in gen_bin_set_op()
1085 isl_union_map_free(umap); in gen_bin_set_op()
1096 __isl_take isl_union_map *umap, __isl_take isl_set *set) in isl_union_map_intersect_params() argument
1105 return umap; in isl_union_map_intersect_params()
1108 return gen_bin_set_op(umap, set, &intersect_params_entry); in isl_union_map_intersect_params()
1110 isl_union_map_free(umap); in isl_union_map_intersect_params()
1122 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in union_map_intersect_params() argument
1124 return isl_union_map_intersect_params(umap, in union_map_intersect_params()
1129 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in union_map_gist_params() argument
1131 return isl_union_map_gist_params(umap, isl_set_from_union_set(uset)); in union_map_gist_params()
1254 __isl_take isl_union_map *umap, __isl_take isl_set *set) in isl_union_map_gist_params() argument
1256 return gen_bin_set_op(umap, set, &gist_params_entry); in isl_union_map_gist_params()
1265 __isl_give isl_union_map *isl_union_map_gist(__isl_take isl_union_map *umap, in isl_union_map_gist() argument
1268 return match_bin_op(umap, context, &isl_map_gist); in isl_union_map_gist()
1285 __isl_take isl_union_map *umap, __isl_take isl_union_map *context) in isl_union_map_plain_gist() argument
1287 return match_bin_op(umap, context, &isl_map_plain_gist); in isl_union_map_plain_gist()
1352 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in union_map_intersect_domain() argument
1359 return gen_bin_op(umap, uset, &control); in union_map_intersect_domain()
1367 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_intersect_domain_union_set() argument
1370 return union_map_intersect_params(umap, uset); in isl_union_map_intersect_domain_union_set()
1372 return union_map_intersect_domain(umap, uset); in isl_union_map_intersect_domain_union_set()
1378 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_intersect_domain() argument
1380 return isl_union_map_intersect_domain_union_set(umap, uset); in isl_union_map_intersect_domain()
1386 __isl_take isl_union_map *umap, __isl_take isl_union_set *dom) in isl_union_map_subtract_domain() argument
1394 return gen_bin_op(umap, dom, &control); in isl_union_map_subtract_domain()
1400 __isl_take isl_union_map *umap, __isl_take isl_union_set *dom) in isl_union_map_subtract_range() argument
1408 return gen_bin_op(umap, dom, &control); in isl_union_map_subtract_range()
1414 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in union_map_gist_domain() argument
1421 return gen_bin_op(umap, uset, &control); in union_map_gist_domain()
1429 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_gist_domain() argument
1432 return union_map_gist_params(umap, uset); in isl_union_map_gist_domain()
1434 return union_map_gist_domain(umap, uset); in isl_union_map_gist_domain()
1440 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_gist_range() argument
1447 return gen_bin_op(umap, uset, &control); in isl_union_map_gist_range()
1451 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_intersect_range_union_set() argument
1458 return gen_bin_op(umap, uset, &control); in isl_union_map_intersect_range_union_set()
1464 __isl_take isl_union_map *umap, __isl_take isl_union_set *uset) in isl_union_map_intersect_range() argument
1466 return isl_union_map_intersect_range_union_set(umap, uset); in isl_union_map_intersect_range()
1474 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor) in isl_union_map_intersect_domain_factor_domain() argument
1482 return gen_bin_op(umap, factor, &control); in isl_union_map_intersect_domain_factor_domain()
1490 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor) in isl_union_map_intersect_domain_factor_range() argument
1498 return gen_bin_op(umap, factor, &control); in isl_union_map_intersect_domain_factor_range()
1506 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor) in isl_union_map_intersect_range_factor_domain() argument
1514 return gen_bin_op(umap, factor, &control); in isl_union_map_intersect_range_factor_domain()
1522 __isl_take isl_union_map *umap, __isl_take isl_union_map *factor) in isl_union_map_intersect_range_factor_range() argument
1530 return gen_bin_op(umap, factor, &control); in isl_union_map_intersect_range_factor_range()
1627 __isl_take isl_union_set *uset, __isl_take isl_union_map *umap) in isl_union_set_apply() argument
1629 return isl_union_map_apply_range(uset, umap); in isl_union_set_apply()
1938 static __isl_give isl_union_map *un_op(__isl_take isl_union_map *umap, in un_op() argument
1943 if (!umap) in un_op()
1946 isl_die(isl_union_map_get_ctx(umap), isl_error_internal, in un_op()
1948 return isl_union_map_free(umap)); in un_op()
1950 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in un_op()
1952 return isl_union_map_free(umap)); in un_op()
1954 if (control->total && umap->ref == 1) in un_op()
1957 data.res = umap; in un_op()
1961 space = isl_union_map_get_space(umap); in un_op()
1962 data.res = isl_union_map_alloc(space, umap->table.n); in un_op()
1964 if (isl_hash_table_foreach(isl_union_map_get_ctx(umap), in un_op()
1965 &umap->table, &un_entry, &data) < 0) in un_op()
1970 isl_union_map_free(umap); in un_op()
1999 static __isl_give isl_union_map *total(__isl_take isl_union_map *umap, in total() argument
2007 return un_op(umap, &control); in total()
2018 __isl_take isl_union_map *umap) in isl_union_map_affine_hull() argument
2020 return total(umap, &isl_map_affine_hull_map); in isl_union_map_affine_hull()
2059 __isl_take isl_union_map *umap) in isl_union_map_polyhedral_hull() argument
2061 return total(umap, &isl_map_polyhedral_hull_map); in isl_union_map_polyhedral_hull()
2080 __isl_take isl_union_map *umap) in isl_union_map_simple_hull() argument
2082 return total(umap, &isl_map_simple_hull_map); in isl_union_map_simple_hull()
2091 static __isl_give isl_union_map *inplace(__isl_take isl_union_map *umap, in inplace() argument
2099 return un_op(umap, &control); in inplace()
2107 __isl_take isl_union_map *umap) in isl_union_map_remove_redundancies() argument
2109 return inplace(umap, &isl_map_remove_redundancies); in isl_union_map_remove_redundancies()
2121 __isl_take isl_union_map *umap) in isl_union_map_coalesce() argument
2123 return inplace(umap, &isl_map_coalesce); in isl_union_map_coalesce()
2133 __isl_take isl_union_map *umap) in isl_union_map_detect_equalities() argument
2135 return inplace(umap, &isl_map_detect_equalities); in isl_union_map_detect_equalities()
2145 __isl_take isl_union_map *umap) in isl_union_map_compute_divs() argument
2147 return inplace(umap, &isl_map_compute_divs); in isl_union_map_compute_divs()
2157 __isl_take isl_union_map *umap) in isl_union_map_lexmin() argument
2159 return total(umap, &isl_map_lexmin); in isl_union_map_lexmin()
2169 __isl_take isl_union_map *umap) in isl_union_map_lexmax() argument
2171 return total(umap, &isl_map_lexmax); in isl_union_map_lexmax()
2191 __isl_give isl_union_map *isl_union_map_universe(__isl_take isl_union_map *umap) in isl_union_map_universe() argument
2196 return un_op(umap, &control); in isl_union_map_universe()
2204 __isl_give isl_union_map *isl_union_map_reverse(__isl_take isl_union_map *umap) in isl_union_map_reverse() argument
2209 return un_op(umap, &control); in isl_union_map_reverse()
2216 __isl_take isl_union_map *umap) in isl_union_map_range_reverse() argument
2224 return un_op(umap, &control); in isl_union_map_range_reverse()
2229 __isl_give isl_set *isl_union_map_params(__isl_take isl_union_map *umap) in isl_union_map_params() argument
2236 empty = isl_union_map_is_empty(umap); in isl_union_map_params()
2241 space = isl_union_map_get_space(umap); in isl_union_map_params()
2242 isl_union_map_free(umap); in isl_union_map_params()
2245 return isl_set_from_union_set(un_op(umap, &control)); in isl_union_map_params()
2247 isl_union_map_free(umap); in isl_union_map_params()
2258 __isl_give isl_union_set *isl_union_map_domain(__isl_take isl_union_map *umap) in isl_union_map_domain() argument
2263 return un_op(umap, &control); in isl_union_map_domain()
2266 __isl_give isl_union_set *isl_union_map_range(__isl_take isl_union_map *umap) in isl_union_map_range() argument
2271 return un_op(umap, &control); in isl_union_map_range()
2275 __isl_take isl_union_map *umap) in isl_union_map_domain_map() argument
2280 return un_op(umap, &control); in isl_union_map_domain_map()
2304 __isl_take isl_union_map *umap) in isl_union_map_domain_map_union_pw_multi_aff() argument
2308 res = isl_union_pw_multi_aff_empty(isl_union_map_get_space(umap)); in isl_union_map_domain_map_union_pw_multi_aff()
2309 if (isl_union_map_foreach_map(umap, &domain_map_upma, &res) < 0) in isl_union_map_domain_map_union_pw_multi_aff()
2312 isl_union_map_free(umap); in isl_union_map_domain_map_union_pw_multi_aff()
2317 __isl_take isl_union_map *umap) in isl_union_map_range_map() argument
2322 return un_op(umap, &control); in isl_union_map_range_map()
2347 __isl_give isl_union_set *isl_union_map_deltas(__isl_take isl_union_map *umap) in isl_union_map_deltas() argument
2353 return un_op(umap, &control); in isl_union_map_deltas()
2357 __isl_take isl_union_map *umap) in isl_union_map_deltas_map() argument
2363 return un_op(umap, &control); in isl_union_map_deltas_map()
2410 __isl_take isl_union_map *umap) in isl_union_map_domain_factor_domain() argument
2418 return un_op(umap, &control); in isl_union_map_domain_factor_domain()
2425 __isl_take isl_union_map *umap) in isl_union_map_domain_factor_range() argument
2433 return un_op(umap, &control); in isl_union_map_domain_factor_range()
2440 __isl_take isl_union_map *umap) in isl_union_map_range_factor_domain() argument
2448 return un_op(umap, &control); in isl_union_map_range_factor_domain()
2455 __isl_take isl_union_map *umap) in isl_union_map_range_factor_range() argument
2463 return un_op(umap, &control); in isl_union_map_range_factor_range()
2470 __isl_take isl_union_map *umap) in isl_union_map_factor_domain() argument
2478 return un_op(umap, &control); in isl_union_map_factor_domain()
2485 __isl_take isl_union_map *umap) in isl_union_map_factor_range() argument
2493 return un_op(umap, &control); in isl_union_map_factor_range()
2507 __isl_give isl_union_set *isl_union_map_wrap(__isl_take isl_union_map *umap) in isl_union_map_wrap() argument
2512 return un_op(umap, &control); in isl_union_map_wrap()
2699 __isl_give isl_basic_map *isl_union_map_sample(__isl_take isl_union_map *umap) in isl_union_map_sample() argument
2703 if (!umap) in isl_union_map_sample()
2706 if (isl_hash_table_foreach(umap->dim->ctx, &umap->table, in isl_union_map_sample()
2712 sample = isl_basic_map_empty(isl_union_map_get_space(umap)); in isl_union_map_sample()
2714 isl_union_map_free(umap); in isl_union_map_sample()
2718 isl_union_map_free(umap); in isl_union_map_sample()
2755 static isl_bool union_map_forall(__isl_keep isl_union_map *umap, in union_map_forall() argument
2760 if (!umap) in union_map_forall()
2763 if (isl_hash_table_foreach(umap->dim->ctx, &umap->table, in union_map_forall()
2793 static isl_bool union_map_forall_user(__isl_keep isl_union_map *umap, in union_map_forall_user() argument
2798 if (!umap) in union_map_forall_user()
2801 if (isl_hash_table_foreach(umap->dim->ctx, &umap->table, in union_map_forall_user()
2810 isl_bool isl_union_map_plain_is_empty(__isl_keep isl_union_map *umap) in isl_union_map_plain_is_empty() argument
2814 n = isl_union_map_n_map(umap); in isl_union_map_plain_is_empty()
2820 isl_bool isl_union_map_is_empty(__isl_keep isl_union_map *umap) in isl_union_map_is_empty() argument
2822 return union_map_forall(umap, &isl_map_is_empty); in isl_union_map_is_empty()
2856 static isl_bool single_map_is_single_valued(__isl_keep isl_union_map *umap) in single_map_is_single_valued() argument
2861 umap = isl_union_map_copy(umap); in single_map_is_single_valued()
2862 map = isl_map_from_union_map(umap); in single_map_is_single_valued()
2875 isl_union_map *umap; member
2897 isl_union_map *umap, *test; in single_valued_on_domain() local
2900 umap = isl_union_map_copy(data->umap); in single_valued_on_domain()
2901 umap = isl_union_map_intersect_domain(umap, in single_valued_on_domain()
2904 n = isl_union_map_n_map(umap); in single_valued_on_domain()
2908 data->sv = single_map_is_single_valued(umap); in single_valued_on_domain()
2909 isl_union_map_free(umap); in single_valued_on_domain()
2911 test = isl_union_map_reverse(isl_union_map_copy(umap)); in single_valued_on_domain()
2912 test = isl_union_map_apply_range(test, umap); in single_valued_on_domain()
2930 isl_bool isl_union_map_is_single_valued(__isl_keep isl_union_map *umap) in isl_union_map_is_single_valued() argument
2937 n = isl_union_map_n_map(umap); in isl_union_map_is_single_valued()
2941 return single_map_is_single_valued(umap); in isl_union_map_is_single_valued()
2943 universe = isl_union_map_universe(isl_union_map_copy(umap)); in isl_union_map_is_single_valued()
2947 data.umap = umap; in isl_union_map_is_single_valued()
2956 isl_bool isl_union_map_is_injective(__isl_keep isl_union_map *umap) in isl_union_map_is_injective() argument
2960 umap = isl_union_map_copy(umap); in isl_union_map_is_injective()
2961 umap = isl_union_map_reverse(umap); in isl_union_map_is_injective()
2962 in = isl_union_map_is_single_valued(umap); in isl_union_map_is_injective()
2963 isl_union_map_free(umap); in isl_union_map_is_injective()
3005 __isl_keep isl_union_map *umap) in isl_union_map_plain_is_not_identity() argument
3010 if (isl_union_map_foreach_map(umap, &map_plain_is_not_identity, in isl_union_map_plain_is_not_identity()
3043 isl_bool isl_union_map_is_identity(__isl_keep isl_union_map *umap) in isl_union_map_is_identity() argument
3048 non_identity = isl_union_map_plain_is_not_identity(umap); in isl_union_map_is_identity()
3053 if (isl_union_map_foreach_map(umap, &map_is_identity, &identity) < 0 && in isl_union_map_is_identity()
3127 static isl_bool plain_injective_on_range(__isl_take isl_union_map *umap,
3191 static isl_bool plain_injective_on_range(__isl_take isl_union_map *umap, in plain_injective_on_range() argument
3198 ctx = isl_union_map_get_ctx(umap); in plain_injective_on_range()
3200 n = isl_union_map_n_map(umap); in plain_injective_on_range()
3205 isl_union_map_free(umap); in plain_injective_on_range()
3210 isl_union_map_free(umap); in plain_injective_on_range()
3224 fixed = union_map_forall_user(umap, &fixed_at_pos, &data); in plain_injective_on_range()
3229 space = isl_union_map_get_space(umap); in plain_injective_on_range()
3231 isl_union_map_free(umap); in plain_injective_on_range()
3236 isl_union_map_free(umap); in plain_injective_on_range()
3241 isl_union_map_free(umap); in plain_injective_on_range()
3252 isl_union_map *umap = user; in plain_injective_on_range_wrap() local
3258 umap = isl_union_map_copy(umap); in plain_injective_on_range_wrap()
3259 umap = isl_union_map_intersect_range(umap, in plain_injective_on_range_wrap()
3261 return plain_injective_on_range(umap, 0, dim); in plain_injective_on_range_wrap()
3270 isl_bool isl_union_map_plain_is_injective(__isl_keep isl_union_map *umap) in isl_union_map_plain_is_injective() argument
3276 in = union_map_forall(umap, &isl_map_plain_is_injective); in isl_union_map_plain_is_injective()
3282 univ = isl_union_map_universe(isl_union_map_copy(umap)); in isl_union_map_plain_is_injective()
3285 in = union_map_forall_user(ran, &plain_injective_on_range_wrap, umap); in isl_union_map_plain_is_injective()
3292 isl_bool isl_union_map_is_bijective(__isl_keep isl_union_map *umap) in isl_union_map_is_bijective() argument
3296 sv = isl_union_map_is_single_valued(umap); in isl_union_map_is_bijective()
3300 return isl_union_map_is_injective(umap); in isl_union_map_is_bijective()
3303 __isl_give isl_union_map *isl_union_map_zip(__isl_take isl_union_map *umap) in isl_union_map_zip() argument
3311 return un_op(umap, &control); in isl_union_map_zip()
3317 __isl_give isl_union_map *isl_union_map_uncurry(__isl_take isl_union_map *umap) in isl_union_map_uncurry() argument
3325 return un_op(umap, &control); in isl_union_map_uncurry()
3331 __isl_give isl_union_map *isl_union_map_curry(__isl_take isl_union_map *umap) in isl_union_map_curry() argument
3339 return un_op(umap, &control); in isl_union_map_curry()
3346 __isl_take isl_union_map *umap) in isl_union_map_range_curry() argument
3354 return un_op(umap, &control); in isl_union_map_range_curry()
3526 __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma, in preimage_pw_multi_aff() argument
3535 umap = isl_union_map_align_params(umap, in preimage_pw_multi_aff()
3537 pma = isl_pw_multi_aff_align_params(pma, isl_union_map_get_space(umap)); in preimage_pw_multi_aff()
3539 if (!umap || !pma) in preimage_pw_multi_aff()
3542 ctx = isl_union_map_get_ctx(umap); in preimage_pw_multi_aff()
3543 space = isl_union_map_get_space(umap); in preimage_pw_multi_aff()
3546 data.res = isl_union_map_alloc(space, umap->table.n); in preimage_pw_multi_aff()
3549 if (isl_hash_table_foreach(ctx, &umap->table, &preimage_entry, in preimage_pw_multi_aff()
3554 isl_union_map_free(umap); in preimage_pw_multi_aff()
3558 isl_union_map_free(umap); in preimage_pw_multi_aff()
3571 __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma) in isl_union_map_preimage_domain_pw_multi_aff() argument
3573 return preimage_pw_multi_aff(umap, pma, &domain_match, in isl_union_map_preimage_domain_pw_multi_aff()
3585 __isl_take isl_union_map *umap, __isl_take isl_pw_multi_aff *pma) in isl_union_map_preimage_range_pw_multi_aff() argument
3587 return preimage_pw_multi_aff(umap, pma, &range_match, in isl_union_map_preimage_range_pw_multi_aff()
3612 __isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma) in isl_union_map_preimage_domain_multi_aff() argument
3614 return isl_union_map_preimage_domain_pw_multi_aff(umap, in isl_union_map_preimage_domain_multi_aff()
3626 __isl_take isl_union_map *umap, __isl_take isl_multi_aff *ma) in isl_union_map_preimage_range_multi_aff() argument
3628 return isl_union_map_preimage_range_pw_multi_aff(umap, in isl_union_map_preimage_range_multi_aff()
3701 __isl_take isl_union_map *umap, __isl_take isl_multi_pw_aff *mpa, in preimage_multi_pw_aff() argument
3710 umap = isl_union_map_align_params(umap, in preimage_multi_pw_aff()
3712 mpa = isl_multi_pw_aff_align_params(mpa, isl_union_map_get_space(umap)); in preimage_multi_pw_aff()
3714 if (!umap || !mpa) in preimage_multi_pw_aff()
3717 ctx = isl_union_map_get_ctx(umap); in preimage_multi_pw_aff()
3718 space = isl_union_map_get_space(umap); in preimage_multi_pw_aff()
3721 data.res = isl_union_map_alloc(space, umap->table.n); in preimage_multi_pw_aff()
3724 if (isl_hash_table_foreach(ctx, &umap->table, &preimage_mpa_entry, in preimage_multi_pw_aff()
3729 isl_union_map_free(umap); in preimage_multi_pw_aff()
3733 isl_union_map_free(umap); in preimage_multi_pw_aff()
3746 __isl_take isl_union_map *umap, __isl_take isl_multi_pw_aff *mpa) in isl_union_map_preimage_domain_multi_pw_aff() argument
3748 return preimage_multi_pw_aff(umap, mpa, &domain_match, in isl_union_map_preimage_domain_multi_pw_aff()
3759 isl_union_map *umap; member
3761 __isl_give isl_union_map *(*fn)(__isl_take isl_union_map *umap,
3771 isl_union_map *umap; in preimage_upma() local
3773 umap = isl_union_map_copy(data->umap); in preimage_upma()
3774 umap = data->fn(umap, pma); in preimage_upma()
3775 data->res = isl_union_map_union(data->res, umap); in preimage_upma()
3787 __isl_take isl_union_map *umap, in preimage_union_pw_multi_aff() argument
3789 __isl_give isl_union_map *(*fn)(__isl_take isl_union_map *umap, in preimage_union_pw_multi_aff() argument
3794 data.umap = umap; in preimage_union_pw_multi_aff()
3795 data.res = isl_union_map_empty(isl_union_map_get_space(umap)); in preimage_union_pw_multi_aff()
3801 isl_union_map_free(umap); in preimage_union_pw_multi_aff()
3816 __isl_take isl_union_map *umap, in isl_union_map_preimage_domain_union_pw_multi_aff() argument
3819 return preimage_union_pw_multi_aff(umap, upma, in isl_union_map_preimage_domain_union_pw_multi_aff()
3832 __isl_take isl_union_map *umap, in isl_union_map_preimage_range_union_pw_multi_aff() argument
3835 return preimage_union_pw_multi_aff(umap, upma, in isl_union_map_preimage_range_union_pw_multi_aff()
3858 __isl_take isl_union_map *umap) in isl_union_map_reset_user() argument
3860 umap = isl_union_map_cow(umap); in isl_union_map_reset_user()
3861 if (!umap) in isl_union_map_reset_user()
3863 umap->dim = isl_space_reset_user(umap->dim); in isl_union_map_reset_user()
3864 if (!umap->dim) in isl_union_map_reset_user()
3865 return isl_union_map_free(umap); in isl_union_map_reset_user()
3866 return total(umap, &isl_map_reset_user); in isl_union_map_reset_user()
3882 __isl_take isl_union_map *umap) in isl_union_map_remove_divs() argument
3884 return total(umap, &isl_map_remove_divs); in isl_union_map_remove_divs()
3928 __isl_take isl_union_map *umap, in isl_union_map_project_out() argument
3934 if (!umap) in isl_union_map_project_out()
3938 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in isl_union_map_project_out()
3940 return isl_union_map_free(umap)); in isl_union_map_project_out()
3942 space = isl_union_map_get_space(umap); in isl_union_map_project_out()
3945 if (isl_union_map_foreach_map(umap, &project_out, &data) < 0) in isl_union_map_project_out()
3948 isl_union_map_free(umap); in isl_union_map_project_out()
4007 isl_bool isl_union_map_involves_dims(__isl_keep isl_union_map *umap, in isl_union_map_involves_dims() argument
4014 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in isl_union_map_involves_dims()
4017 excludes = union_map_forall_user(umap, &map_excludes, &data); in isl_union_map_involves_dims()
4059 __isl_take isl_union_map *umap, __isl_take isl_space *space) in isl_union_map_reset_range_space() argument
4063 data.res = isl_union_map_empty(isl_union_map_get_space(umap)); in isl_union_map_reset_range_space()
4064 if (isl_union_map_foreach_map(umap, &reset_range_space, &data) < 0) in isl_union_map_reset_range_space()
4068 isl_union_map_free(umap); in isl_union_map_reset_range_space()
4074 static isl_stat check_union_map_space_equal_dim(__isl_keep isl_union_map *umap, in check_union_map_space_equal_dim() argument
4079 dim1 = isl_union_map_dim(umap, isl_dim_param); in check_union_map_space_equal_dim()
4085 isl_die(isl_union_map_get_ctx(umap), isl_error_invalid, in check_union_map_space_equal_dim()
4121 __isl_take isl_union_map *umap, __isl_take isl_space *space) in isl_union_map_reset_equal_dim_space() argument
4127 umap_space = isl_union_map_peek_space(umap); in isl_union_map_reset_equal_dim_space()
4133 return umap; in isl_union_map_reset_equal_dim_space()
4135 if (check_union_map_space_equal_dim(umap, space) < 0) in isl_union_map_reset_equal_dim_space()
4139 if (isl_union_map_foreach_map(umap, &reset_params, &data) < 0) in isl_union_map_reset_equal_dim_space()
4143 isl_union_map_free(umap); in isl_union_map_reset_equal_dim_space()
4146 isl_union_map_free(umap); in isl_union_map_reset_equal_dim_space()
4192 __isl_take isl_union_map *umap, __isl_keep isl_multi_union_pw_aff *mupa) in intersect_explicit_domain() argument
4199 return isl_union_map_free(umap); in intersect_explicit_domain()
4201 return umap; in intersect_explicit_domain()
4207 return isl_union_map_free(umap); in intersect_explicit_domain()
4213 umap = isl_union_map_intersect_params(umap, set); in intersect_explicit_domain()
4214 return umap; in intersect_explicit_domain()
4216 umap = isl_union_map_intersect_domain(umap, isl_union_set_copy(dom)); in intersect_explicit_domain()
4217 umap = isl_union_map_intersect_range(umap, dom); in intersect_explicit_domain()
4218 return umap; in intersect_explicit_domain()
4226 __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
4232 umap = isl_union_map_align_params(umap, in isl_union_map_order_at_multi_union_pw_aff()
4235 isl_union_map_get_space(umap)); in isl_union_map_order_at_multi_union_pw_aff()
4236 umap = intersect_explicit_domain(umap, mupa); in isl_union_map_order_at_multi_union_pw_aff()
4239 data.res = isl_union_map_empty(isl_union_map_get_space(umap)); in isl_union_map_order_at_multi_union_pw_aff()
4240 if (isl_union_map_foreach_map(umap, &order_at, &data) < 0) in isl_union_map_order_at_multi_union_pw_aff()
4244 isl_union_map_free(umap); in isl_union_map_order_at_multi_union_pw_aff()
4252 __isl_take isl_union_map *umap, in isl_union_map_eq_at_multi_union_pw_aff() argument
4255 return isl_union_map_order_at_multi_union_pw_aff(umap, mupa, in isl_union_map_eq_at_multi_union_pw_aff()
4324 uint32_t isl_union_map_get_hash(__isl_keep isl_union_map *umap) in isl_union_map_get_hash() argument
4328 if (!umap) in isl_union_map_get_hash()
4332 if (isl_union_map_foreach_map(umap, &add_hash, &hash) < 0) in isl_union_map_get_hash()
4445 __isl_take isl_union_map *umap, in isl_union_map_remove_map_if() argument
4454 return un_op(umap, &control); in isl_union_map_remove_map_if()
4489 __isl_take isl_union_map *umap, __isl_take isl_multi_id *tuple) in isl_union_map_bind_range() argument
4499 bound = uset_from_umap(un_op(umap, &control)); in isl_union_map_bind_range()
4507 __isl_take isl_union_map *umap, __isl_take isl_space *space) in isl_union_map_intersect_domain_space() argument
4514 umap = un_op(umap, &control); in isl_union_map_intersect_domain_space()
4516 return umap; in isl_union_map_intersect_domain_space()
4522 __isl_take isl_union_map *umap, __isl_take isl_space *space) in isl_union_map_intersect_range_space() argument
4529 umap = un_op(umap, &control); in isl_union_map_intersect_range_space()
4531 return umap; in isl_union_map_intersect_range_space()