From db6804ef5d6192f37882308001e441599d7acb6b Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Fri, 28 Mar 2014 15:43:56 +0100 Subject: [PATCH] add isl_multi_aff_floor We will need this function in the next commit. Signed-off-by: Sven Verdoolaege --- doc/user.pod | 2 ++ include/isl/aff.h | 2 ++ isl_aff.c | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/doc/user.pod b/doc/user.pod index f1bbe68a..0e6773ea 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -4653,6 +4653,8 @@ Operations include __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmax( __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); + __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); diff --git a/include/isl/aff.h b/include/isl/aff.h index 5518ce7e..cd4e08a9 100644 --- a/include/isl/aff.h +++ b/include/isl/aff.h @@ -309,6 +309,8 @@ __isl_give isl_multi_aff *isl_multi_aff_project_out_map( __isl_take isl_space *space, enum isl_dim_type type, unsigned first, unsigned n); +__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_sub(__isl_take isl_multi_aff *ma1, diff --git a/isl_aff.c b/isl_aff.c index 0b4b4f20..accd7eaf 100644 --- a/isl_aff.c +++ b/isl_aff.c @@ -3827,6 +3827,25 @@ error: return NULL; } +/* Given f, return floor(f). + */ +__isl_give isl_multi_aff *isl_multi_aff_floor(__isl_take isl_multi_aff *ma) +{ + int i; + + ma = isl_multi_aff_cow(ma); + if (!ma) + return NULL; + + for (i = 0; i < ma->n; ++i) { + ma->p[i] = isl_aff_floor(ma->p[i]); + if (!ma->p[i]) + return isl_multi_aff_free(ma); + } + + return ma; +} + __isl_give isl_multi_aff *isl_multi_aff_scale(__isl_take isl_multi_aff *maff, isl_int f) { -- 2.11.4.GIT