From b186b3112f1b53a629ec869479b25088f7214610 Mon Sep 17 00:00:00 2001 From: Sven Verdoolaege Date: Thu, 14 Mar 2013 18:12:24 +0100 Subject: [PATCH] add isl_pw_multi_aff_scale_vec Signed-off-by: Sven Verdoolaege --- doc/user.pod | 3 +++ include/isl/aff.h | 3 +++ isl_aff.c | 26 ++++++++++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/doc/user.pod b/doc/user.pod index e011ad5f..8760ee0c 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -3902,6 +3902,9 @@ C subtracts the second argument from the first. __isl_give isl_multi_aff *isl_multi_aff_scale_vec( __isl_take isl_multi_aff *ma, __isl_take isl_vec *v); + __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_vec( + __isl_take isl_pw_multi_aff *pma, + __isl_take isl_vec *v); C scales the first elements of C by the corresponding elements of C. diff --git a/include/isl/aff.h b/include/isl/aff.h index 74532eac..2509202d 100644 --- a/include/isl/aff.h +++ b/include/isl/aff.h @@ -423,6 +423,9 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add( __isl_give isl_pw_multi_aff *isl_pw_multi_aff_sub( __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); +__isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_vec( + __isl_take isl_pw_multi_aff *pma, __isl_take isl_vec *v); + __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmin( __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 c24462be..944017d8 100644 --- a/isl_aff.c +++ b/isl_aff.c @@ -4680,3 +4680,29 @@ error: isl_multi_aff_free(ma); return NULL; } + +/* Scale the first elements of "pma" by the corresponding elements of "vec". + */ +__isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_vec( + __isl_take isl_pw_multi_aff *pma, __isl_take isl_vec *v) +{ + int i; + + pma = isl_pw_multi_aff_cow(pma); + if (!pma || !v) + goto error; + + for (i = 0; i < pma->n; ++i) { + pma->p[i].maff = isl_multi_aff_scale_vec(pma->p[i].maff, + isl_vec_copy(v)); + if (!pma->p[i].maff) + goto error; + } + + isl_vec_free(v); + return pma; +error: + isl_vec_free(v); + isl_pw_multi_aff_free(pma); + return NULL; +} -- 2.11.4.GIT