From: Sven Verdoolaege Date: Wed, 2 Nov 2011 11:39:50 +0000 (+0100) Subject: add isl_pw_*_gist_params X-Git-Tag: isl-0.09~46 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9e63449140169e8039056551d31bb174bb53f105;p=platform%2Fupstream%2Fisl.git add isl_pw_*_gist_params Signed-off-by: Sven Verdoolaege --- diff --git a/doc/user.pod b/doc/user.pod index b7cf661..096ac80 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -2856,6 +2856,9 @@ Operations include __isl_take isl_set *context); __isl_give isl_aff *isl_aff_gist(__isl_take isl_aff *aff, __isl_take isl_set *context); + __isl_give isl_pw_aff *isl_pw_aff_gist_params( + __isl_take isl_pw_aff *pwaff, + __isl_take isl_set *context); __isl_give isl_pw_aff *isl_pw_aff_gist( __isl_take isl_pw_aff *pwaff, __isl_take isl_set *context); @@ -3122,6 +3125,9 @@ Operations include __isl_give isl_multi_aff *isl_multi_aff_gist( __isl_take isl_multi_aff *maff, __isl_take isl_set *context); + __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist_params( + __isl_take isl_pw_multi_aff *pma, + __isl_take isl_set *set); __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist( __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); @@ -3552,6 +3558,9 @@ obviously equal, use __isl_take isl_qpolynomial *qp, __isl_take isl_set *context); + __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_gist_params( + __isl_take isl_pw_qpolynomial *pwqp, + __isl_take isl_set *context); __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_gist( __isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_set *context); @@ -3749,6 +3758,9 @@ obviously equal, use __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_gist( __isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_set *context); + __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_gist_params( + __isl_take isl_pw_qpolynomial_fold *pwf, + __isl_take isl_set *context); __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_gist( __isl_take isl_union_pw_qpolynomial_fold *upwf, diff --git a/include/isl/aff.h b/include/isl/aff.h index 63418df..dfa8d22 100644 --- a/include/isl/aff.h +++ b/include/isl/aff.h @@ -182,6 +182,8 @@ __isl_give isl_pw_aff *isl_pw_aff_drop_dims(__isl_take isl_pw_aff *pwaff, __isl_give isl_pw_aff *isl_pw_aff_coalesce(__isl_take isl_pw_aff *pwqp); __isl_give isl_pw_aff *isl_pw_aff_gist(__isl_take isl_pw_aff *pwaff, __isl_take isl_set *context); +__isl_give isl_pw_aff *isl_pw_aff_gist_params(__isl_take isl_pw_aff *pwaff, + __isl_take isl_set *context); int isl_pw_aff_foreach_piece(__isl_keep isl_pw_aff *pwaff, int (*fn)(__isl_take isl_set *set, __isl_take isl_aff *aff, @@ -315,6 +317,8 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_params( __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain( __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); +__isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist_params( + __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist( __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); diff --git a/include/isl/polynomial.h b/include/isl/polynomial.h index c4ae666..509f4de 100644 --- a/include/isl/polynomial.h +++ b/include/isl/polynomial.h @@ -249,6 +249,8 @@ __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_coalesce( __isl_take isl_pw_qpolynomial *pwqp); __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_gist( __isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_set *context); +__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_gist_params( + __isl_take isl_pw_qpolynomial *pwqp, __isl_take isl_set *context); __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_split_periods( __isl_take isl_pw_qpolynomial *pwqp, int max_periods); @@ -406,6 +408,8 @@ __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_coalesce( __isl_take isl_pw_qpolynomial_fold *pwf); __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_gist( __isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_set *context); +__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_gist_params( + __isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_set *context); __isl_give isl_qpolynomial *isl_pw_qpolynomial_fold_max( __isl_take isl_pw_qpolynomial_fold *pwf); diff --git a/isl_pw_templ.c b/isl_pw_templ.c index f254b0c..27da2c4 100644 --- a/isl_pw_templ.c +++ b/isl_pw_templ.c @@ -724,7 +724,11 @@ __isl_give PW *FN(PW,intersect_params)(__isl_take PW *pw, } static __isl_give PW *FN(PW,gist_aligned)(__isl_take PW *pw, - __isl_take isl_set *context) + __isl_take isl_set *context, + __isl_give EL *(*fn_el)(__isl_take EL *el, + __isl_take isl_set *set), + __isl_give isl_set *(*fn_dom)(__isl_take isl_set *set, + __isl_take isl_basic_set *bset)) { int i; isl_basic_set *hull = NULL; @@ -755,10 +759,9 @@ static __isl_give PW *FN(PW,gist_aligned)(__isl_take PW *pw, isl_set_copy(context)); if (!pw->p[i].set) goto error; - pw->p[i].FIELD = FN(EL,gist)(pw->p[i].FIELD, + pw->p[i].FIELD = fn_el(pw->p[i].FIELD, isl_set_copy(pw->p[i].set)); - pw->p[i].set = isl_set_gist_basic_set(pw->p[i].set, - isl_basic_set_copy(hull)); + pw->p[i].set = fn_dom(pw->p[i].set, isl_basic_set_copy(hull)); if (!pw->p[i].set) goto error; if (isl_set_plain_is_empty(pw->p[i].set)) { @@ -781,9 +784,31 @@ error: return NULL; } +static __isl_give PW *FN(PW,gist_domain_aligned)(__isl_take PW *pw, + __isl_take isl_set *set) +{ + return FN(PW,gist_aligned)(pw, set, &FN(EL,gist), + &isl_set_gist_basic_set); +} + __isl_give PW *FN(PW,gist)(__isl_take PW *pw, __isl_take isl_set *context) { - return FN(PW,align_params_pw_set_and)(pw, context, &FN(PW,gist_aligned)); + return FN(PW,align_params_pw_set_and)(pw, context, + &FN(PW,gist_domain_aligned)); +} + +static __isl_give PW *FN(PW,gist_params_aligned)(__isl_take PW *pw, + __isl_take isl_set *set) +{ + return FN(PW,gist_aligned)(pw, set, &FN(EL,gist_params), + &isl_set_gist_params_basic_set); +} + +__isl_give PW *FN(PW,gist_params)(__isl_take PW *pw, + __isl_take isl_set *context) +{ + return FN(PW,align_params_pw_set_and)(pw, context, + &FN(PW,gist_params_aligned)); } __isl_give PW *FN(PW,coalesce)(__isl_take PW *pw)