From 06d9a5fca6a85ddcc14ea6956c8682dc66638d1a Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Tue, 9 Jun 2015 10:53:32 +0200 Subject: [PATCH] generalize isl_multi_aff_add Signed-off-by: Sven Verdoolaege --- doc/user.pod | 10 ++++++++++ include/isl/aff.h | 3 --- include/isl/multi.h | 3 +++ isl_aff.c | 19 ------------------- isl_multi_templ.c | 19 +++++++++++++++++++ 5 files changed, 32 insertions(+), 22 deletions(-) diff --git a/doc/user.pod b/doc/user.pod index 10163b96..2ed9652e 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -6537,6 +6537,9 @@ to simplify the expression associated to each cell. =item * Binary Arithmethic Operations #include + __isl_give isl_multi_val *isl_multi_val_add( + __isl_take isl_multi_val *mv1, + __isl_take isl_multi_val *mv2); __isl_give isl_multi_val *isl_multi_val_sub( __isl_take isl_multi_val *mv1, __isl_take isl_multi_val *mv2); @@ -6551,6 +6554,9 @@ to simplify the expression associated to each cell. __isl_give isl_pw_aff *isl_pw_aff_add( __isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); + __isl_give isl_multi_pw_aff *isl_multi_pw_aff_add( + __isl_take isl_multi_pw_aff *mpa1, + __isl_take isl_multi_pw_aff *mpa2); __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); @@ -6560,6 +6566,10 @@ to simplify the expression associated to each cell. __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_add( __isl_take isl_union_pw_multi_aff *upma1, __isl_take isl_union_pw_multi_aff *upma2); + __isl_give isl_multi_union_pw_aff * + isl_multi_union_pw_aff_add( + __isl_take isl_multi_union_pw_aff *mupa1, + __isl_take isl_multi_union_pw_aff *mupa2); __isl_give isl_pw_aff *isl_pw_aff_min( __isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); diff --git a/include/isl/aff.h b/include/isl/aff.h index 5d023393..45c274d3 100644 --- a/include/isl/aff.h +++ b/include/isl/aff.h @@ -340,9 +340,6 @@ __isl_give isl_multi_aff *isl_multi_aff_multi_val_on_space( __isl_give isl_multi_aff *isl_multi_aff_floor(__isl_take isl_multi_aff *ma); -__isl_give isl_multi_aff *isl_multi_aff_add(__isl_take isl_multi_aff *maff1, - __isl_take isl_multi_aff *maff2); - __isl_give isl_multi_aff *isl_multi_aff_product( __isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2); diff --git a/include/isl/multi.h b/include/isl/multi.h index 94fbcd94..8d598f73 100644 --- a/include/isl/multi.h +++ b/include/isl/multi.h @@ -100,6 +100,9 @@ __isl_give isl_multi_##BASE *isl_multi_##BASE##_scale_down_multi_val( \ __isl_give isl_multi_##BASE *isl_multi_##BASE##_mod_multi_val( \ __isl_take isl_multi_##BASE *multi, \ __isl_take isl_multi_val *mv); \ +__isl_give isl_multi_##BASE *isl_multi_##BASE##_add( \ + __isl_take isl_multi_##BASE *multi1, \ + __isl_take isl_multi_##BASE *multi2); \ __isl_give isl_multi_##BASE *isl_multi_##BASE##_sub( \ __isl_take isl_multi_##BASE *multi1, \ __isl_take isl_multi_##BASE *multi2); \ diff --git a/isl_aff.c b/isl_aff.c index 41d04c24..d1d293fd 100644 --- a/isl_aff.c +++ b/isl_aff.c @@ -3950,25 +3950,6 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity( return isl_pw_multi_aff_from_multi_aff(isl_multi_aff_identity(space)); } -/* Add "ma2" to "ma1" and return the result. - * - * The parameters of "ma1" and "ma2" are assumed to have been aligned. - */ -static __isl_give isl_multi_aff *isl_multi_aff_add_aligned( - __isl_take isl_multi_aff *maff1, __isl_take isl_multi_aff *maff2) -{ - return isl_multi_aff_bin_op(maff1, maff2, &isl_aff_add); -} - -/* Add "ma2" to "ma1" and return the result. - */ -__isl_give isl_multi_aff *isl_multi_aff_add(__isl_take isl_multi_aff *ma1, - __isl_take isl_multi_aff *ma2) -{ - return isl_multi_aff_align_params_multi_multi_and(ma1, ma2, - &isl_multi_aff_add_aligned); -} - /* Exploit the equalities in "eq" to simplify the affine expressions. */ static __isl_give isl_multi_aff *isl_multi_aff_substitute_equalities( diff --git a/isl_multi_templ.c b/isl_multi_templ.c index 2d1edb57..4fac96ba 100644 --- a/isl_multi_templ.c +++ b/isl_multi_templ.c @@ -1116,6 +1116,25 @@ error: return NULL; } +/* Add "multi2" from "multi1" and return the result. + * + * The parameters of "multi1" and "multi2" are assumed to have been aligned. + */ +static __isl_give MULTI(BASE) *FN(MULTI(BASE),add_aligned)( + __isl_take MULTI(BASE) *multi1, __isl_take MULTI(BASE) *multi2) +{ + return FN(MULTI(BASE),bin_op)(multi1, multi2, &FN(EL,add)); +} + +/* Add "multi2" from "multi1" and return the result. + */ +__isl_give MULTI(BASE) *FN(MULTI(BASE),add)(__isl_take MULTI(BASE) *multi1, + __isl_take MULTI(BASE) *multi2) +{ + return FN(MULTI(BASE),align_params_multi_multi_and)(multi1, multi2, + &FN(MULTI(BASE),add_aligned)); +} + /* Subtract "multi2" from "multi1" and return the result. * * The parameters of "multi1" and "multi2" are assumed to have been aligned. -- 2.11.4.GIT