From 7a86dd8e531eb2affd78767385592869dc6bcbc0 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Thu, 13 Oct 2011 12:16:45 +0200 Subject: [PATCH] rename isl_pw_aff_add to isl_pw_aff_union_add As pointed out by Andreas Kloeckner, isl_pw_aff_add behaves in a way that is inconsistent with other functions defined over pairs of isl_pw_affs in that it produces an isl_pw_aff that is defined on the union of the definition domains of its arguments. We therefore rename isl_pw_aff_add to isl_pw_aff_union_add and add a new isl_pw_aff_add that produces a result that is only defined on the intersection of the definition domains of its arguments. Signed-off-by: Sven Verdoolaege --- doc/user.pod | 8 ++++++++ include/isl/aff.h | 5 +++++ isl_aff.c | 38 ++++++++++++++++++++++++++++++++++++++ isl_fold.c | 7 +++++++ isl_polynomial.c | 7 +++++++ isl_pw_templ.c | 11 ++++++++--- 6 files changed, 73 insertions(+), 3 deletions(-) diff --git a/doc/user.pod b/doc/user.pod index e00ad5cb..accd9b1f 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -98,6 +98,8 @@ but they will be removed in the future. =item * The function C has been renamed to C. +Similarly, the function C has been renamed to +C. =item * The C type has been renamed to C along with the associated functions. @@ -2925,6 +2927,9 @@ not in C. __isl_give isl_pw_aff *isl_pw_aff_union_max( __isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); + __isl_give isl_pw_aff *isl_pw_aff_union_add( + __isl_take isl_pw_aff *pwaff1, + __isl_take isl_pw_aff *pwaff2); The function C computes a piecewise quasi-affine expression with a domain that is the union of those of C and @@ -3063,6 +3068,9 @@ Operations include __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add( __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); + __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_add( + __isl_take isl_pw_multi_aff *pma1, + __isl_take isl_pw_multi_aff *pma2); __isl_give isl_multi_aff *isl_multi_aff_scale( __isl_take isl_multi_aff *maff, isl_int f); diff --git a/include/isl/aff.h b/include/isl/aff.h index b04aed8b..0aa8cfbe 100644 --- a/include/isl/aff.h +++ b/include/isl/aff.h @@ -121,6 +121,8 @@ __isl_give isl_pw_aff *isl_pw_aff_union_min(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); __isl_give isl_pw_aff *isl_pw_aff_union_max(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); +__isl_give isl_pw_aff *isl_pw_aff_union_add(__isl_take isl_pw_aff *pwaff1, + __isl_take isl_pw_aff *pwaff2); __isl_give isl_pw_aff *isl_pw_aff_copy(__isl_keep isl_pw_aff *pwaff); void *isl_pw_aff_free(__isl_take isl_pw_aff *pwaff); @@ -296,6 +298,9 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_dim_id( int isl_pw_multi_aff_plain_is_equal(__isl_keep isl_pw_multi_aff *pma1, __isl_keep isl_pw_multi_aff *pma2); +__isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_add( + __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); + __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add( __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); diff --git a/isl_aff.c b/isl_aff.c index 1147ceaf..23d17f02 100644 --- a/isl_aff.c +++ b/isl_aff.c @@ -1822,6 +1822,24 @@ error: return NULL; } +static __isl_give isl_pw_aff *pw_aff_add(__isl_take isl_pw_aff *pwaff1, + __isl_take isl_pw_aff *pwaff2) +{ + return isl_pw_aff_on_shared_domain(pwaff1, pwaff2, &isl_aff_add); +} + +__isl_give isl_pw_aff *isl_pw_aff_add(__isl_take isl_pw_aff *pwaff1, + __isl_take isl_pw_aff *pwaff2) +{ + return isl_pw_aff_align_params_pw_pw_and(pwaff1, pwaff2, &pw_aff_add); +} + +__isl_give isl_pw_aff *isl_pw_aff_union_add(__isl_take isl_pw_aff *pwaff1, + __isl_take isl_pw_aff *pwaff2) +{ + return isl_pw_aff_union_add_(pwaff1, pwaff2); +} + static __isl_give isl_pw_aff *pw_aff_mul(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2) { @@ -2095,6 +2113,26 @@ __isl_give isl_multi_aff *isl_multi_aff_drop_dims(__isl_take isl_multi_aff *maff #include +static __isl_give isl_pw_multi_aff *pw_multi_aff_add( + __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2) +{ + return isl_pw_multi_aff_on_shared_domain(pma1, pma2, + &isl_multi_aff_add); +} + +__isl_give isl_pw_multi_aff *isl_pw_multi_aff_add( + __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2) +{ + return isl_pw_multi_aff_align_params_pw_pw_and(pma1, pma2, + &pw_multi_aff_add); +} + +__isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_add( + __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2) +{ + return isl_pw_multi_aff_union_add_(pma1, pma2); +} + /* Construct a map mapping the domain the piecewise multi-affine expression * to its range, with each dimension in the range equated to the * corresponding affine expression on its cell. diff --git a/isl_fold.c b/isl_fold.c index 98a91ae0..fcafa154 100644 --- a/isl_fold.c +++ b/isl_fold.c @@ -959,6 +959,13 @@ __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_from_pw_qpolynomial( return pwf; } +__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_add( + __isl_take isl_pw_qpolynomial_fold *pwf1, + __isl_take isl_pw_qpolynomial_fold *pwf2) +{ + return isl_pw_qpolynomial_fold_union_add_(pwf1, pwf2); +} + int isl_qpolynomial_fold_plain_is_equal(__isl_keep isl_qpolynomial_fold *fold1, __isl_keep isl_qpolynomial_fold *fold2) { diff --git a/isl_polynomial.c b/isl_polynomial.c index 173c213f..fdf1e285 100644 --- a/isl_polynomial.c +++ b/isl_polynomial.c @@ -2623,6 +2623,13 @@ int isl_pw_qpolynomial_is_one(__isl_keep isl_pw_qpolynomial *pwqp) return isl_qpolynomial_is_one(pwqp->p[0].qp); } +__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_add( + __isl_take isl_pw_qpolynomial *pwqp1, + __isl_take isl_pw_qpolynomial *pwqp2) +{ + return isl_pw_qpolynomial_union_add_(pwqp1, pwqp2); +} + __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_mul( __isl_take isl_pw_qpolynomial *pwqp1, __isl_take isl_pw_qpolynomial *pwqp2) diff --git a/isl_pw_templ.c b/isl_pw_templ.c index 4dafddf4..ddabbc5c 100644 --- a/isl_pw_templ.c +++ b/isl_pw_templ.c @@ -325,7 +325,8 @@ error: } #endif -static __isl_give PW *FN(PW,add_aligned)(__isl_take PW *pw1, __isl_take PW *pw2) +static __isl_give PW *FN(PW,union_add_aligned)(__isl_take PW *pw1, + __isl_take PW *pw2) { int i, j, n; struct PW *res; @@ -401,9 +402,13 @@ error: return NULL; } -__isl_give PW *FN(PW,add)(__isl_take PW *pw1, __isl_take PW *pw2) +/* Private version of "union_add". For isl_pw_qpolynomial and + * isl_pw_qpolynomial_fold, we prefer to simply call it "add". + */ +static __isl_give PW *FN(PW,union_add_)(__isl_take PW *pw1, __isl_take PW *pw2) { - return FN(PW,align_params_pw_pw_and)(pw1, pw2, &FN(PW,add_aligned)); + return FN(PW,align_params_pw_pw_and)(pw1, pw2, + &FN(PW,union_add_aligned)); } /* Make sure "pw" has room for at least "n" more pieces. -- 2.11.4.GIT