| /* |
| * Copyright 2017 Sven Verdoolaege |
| * |
| * Use of this software is governed by the MIT license |
| * |
| * Written by Sven Verdoolaege. |
| */ |
| |
| /* Initialize the explicit domain of "mupa". |
| * |
| * The explicit domain is initialized to a universe parameter set. |
| * It may later be specialized with constraints on the parameter or |
| * specific domain instances. |
| */ |
| static __isl_give isl_multi_union_pw_aff * |
| isl_multi_union_pw_aff_init_explicit_domain( |
| __isl_take isl_multi_union_pw_aff *mupa) |
| { |
| isl_space *space; |
| |
| if (isl_multi_union_pw_aff_check_has_explicit_domain(mupa) < 0) |
| return isl_multi_union_pw_aff_free(mupa); |
| space = isl_space_params(isl_multi_union_pw_aff_get_space(mupa)); |
| mupa->u.dom = isl_union_set_from_set(isl_set_universe(space)); |
| if (!mupa->u.dom) |
| return isl_multi_union_pw_aff_free(mupa); |
| return mupa; |
| } |
| |
| /* Drop the "n" dimensions of type "type" starting at position "pos" |
| * of the explicit domain of "mupa". |
| */ |
| static __isl_give isl_multi_union_pw_aff * |
| isl_multi_union_pw_aff_drop_explicit_domain_dims( |
| __isl_take isl_multi_union_pw_aff *mupa, |
| enum isl_dim_type type, unsigned pos, unsigned n) |
| { |
| if (isl_multi_union_pw_aff_check_has_explicit_domain(mupa) < 0) |
| return isl_multi_union_pw_aff_free(mupa); |
| if (type != isl_dim_param) |
| isl_die(isl_multi_union_pw_aff_get_ctx(mupa), isl_error_invalid, |
| "can only drop parameters", |
| return isl_multi_union_pw_aff_free(mupa)); |
| mupa = isl_multi_union_pw_aff_cow(mupa); |
| if (!mupa) |
| return NULL; |
| mupa->u.dom = isl_union_set_project_out(mupa->u.dom, type, pos, n); |
| if (!mupa->u.dom) |
| return isl_multi_union_pw_aff_free(mupa); |
| return mupa; |
| } |