1/*
2 * Copyright 2017 Sven Verdoolaege
3 *
4 * Use of this software is governed by the MIT license
5 *
6 * Written by Sven Verdoolaege.
7 */
8
9/* Initialize the explicit domain of "mupa".
10 *
11 * The explicit domain is initialized to a universe parameter set.
12 * It may later be specialized with constraints on the parameter or
13 * specific domain instances.
14 */
15static __isl_give isl_multi_union_pw_aff *
16isl_multi_union_pw_aff_init_explicit_domain(
17 __isl_take isl_multi_union_pw_aff *mupa)
18{
19 isl_space *space;
20
21 if (isl_multi_union_pw_aff_check_has_explicit_domain(multi: mupa) < 0)
22 return isl_multi_union_pw_aff_free(multi: mupa);
23 space = isl_space_params(space: isl_multi_union_pw_aff_get_space(multi: mupa));
24 mupa->u.dom = isl_union_set_from_set(set: isl_set_universe(space));
25 if (!mupa->u.dom)
26 return isl_multi_union_pw_aff_free(multi: mupa);
27 return mupa;
28}
29
30/* Drop the "n" dimensions of type "type" starting at position "pos"
31 * of the explicit domain of "mupa".
32 */
33static __isl_give isl_multi_union_pw_aff *
34isl_multi_union_pw_aff_drop_explicit_domain_dims(
35 __isl_take isl_multi_union_pw_aff *mupa,
36 enum isl_dim_type type, unsigned pos, unsigned n)
37{
38 if (isl_multi_union_pw_aff_check_has_explicit_domain(multi: mupa) < 0)
39 return isl_multi_union_pw_aff_free(multi: mupa);
40 if (type != isl_dim_param)
41 isl_die(isl_multi_union_pw_aff_get_ctx(mupa), isl_error_invalid,
42 "can only drop parameters",
43 return isl_multi_union_pw_aff_free(mupa));
44 mupa = isl_multi_union_pw_aff_cow(multi: mupa);
45 if (!mupa)
46 return NULL;
47 mupa->u.dom = isl_union_set_project_out(uset: mupa->u.dom, type, first: pos, n);
48 if (!mupa->u.dom)
49 return isl_multi_union_pw_aff_free(multi: mupa);
50 return mupa;
51}
52

source code of polly/lib/External/isl/isl_multi_union_pw_aff_explicit_domain.c