add isl_pw_multi_aff_scale_vec
authorSven Verdoolaege <skimo@kotnet.org>
Thu, 14 Mar 2013 17:12:24 +0000 (18:12 +0100)
committerSven Verdoolaege <skimo@kotnet.org>
Sat, 16 Mar 2013 13:45:52 +0000 (14:45 +0100)
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/aff.h
isl_aff.c

index e011ad5..8760ee0 100644 (file)
@@ -3902,6 +3902,9 @@ C<isl_multi_aff_sub> 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<isl_multi_aff_scale_vec> scales the first elements of C<ma>
 by the corresponding elements of C<v>.
index 74532ea..2509202 100644 (file)
@@ -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);
index c24462b..944017d 100644 (file)
--- 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;
+}