/* * Copyright 2011 Sven Verdoolaege * Copyright 2012-2013 Ecole Normale Superieure * * Use of this software is governed by the MIT license * * Written by Sven Verdoolaege, * Ecole Normale Superieure, 45 rue d’Ulm, 75230 Paris, France */ #include <isl_multi_macro.h> /* Does the space of "domain" correspond to that of the domain of "multi"? * The parameters do not need to be aligned. */ static isl_bool FN(MULTI(BASE),compatible_domain)( __isl_keep MULTI(BASE) *multi, __isl_keep DOM *domain) { … } /* Check that the space of "domain" corresponds to * that of the domain of "multi", ignoring parameters. */ static isl_stat FN(MULTI(BASE),check_compatible_domain)( __isl_keep MULTI(BASE) *multi, __isl_keep DOM *domain) { … } /* Intersect the explicit domain of "multi" with "domain". * * The parameters of "multi" and "domain" are assumed to have been aligned. * * In the case of an isl_multi_union_pw_aff object, the explicit domain * is allowed to have only constraints on the parameters, while * "domain" contains actual domain elements. In this case, * "domain" is intersected with those parameter constraints and * then used as the explicit domain of "multi". */ static __isl_give MULTI(BASE) *FN(MULTI(BASE),domain_intersect_aligned)( __isl_take MULTI(BASE) *multi, __isl_take DOM *domain) { … } /* Intersect the explicit domain of "multi" with "domain". * First align the parameters, if needed. */ static __isl_give MULTI(BASE) *FN(MULTI(BASE),domain_intersect)( __isl_take MULTI(BASE) *multi, __isl_take DOM *domain) { … } /* Intersect the domain of "multi" with "domain". * * If "multi" has an explicit domain, then only this domain * needs to be intersected. */ __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_domain)( __isl_take MULTI(BASE) *multi, __isl_take DOM *domain) { … } /* Intersect the parameter domain of the explicit domain of "multi" * with "domain". */ static __isl_give MULTI(BASE) *FN(MULTI(BASE),domain_intersect_params_aligned)( __isl_take MULTI(BASE) *multi, __isl_take isl_set *domain) { … } /* Intersect the parameter domain of the explicit domain of "multi" * with "domain". * First align the parameters, if needed. */ static __isl_give MULTI(BASE) *FN(MULTI(BASE),domain_intersect_params)( __isl_take MULTI(BASE) *multi, __isl_take isl_set *domain) { … } /* Intersect the parameter domain of "multi" with "domain". * * If "multi" has an explicit domain, then only this domain * needs to be intersected. */ __isl_give MULTI(BASE) *FN(MULTI(BASE),intersect_params)( __isl_take MULTI(BASE) *multi, __isl_take isl_set *domain) { … }