add isl_aff_set_tuple_id
authorSven Verdoolaege <skimo@kotnet.org>
Sat, 12 Oct 2013 18:31:17 +0000 (12 20:31 +0200)
committerSven Verdoolaege <skimo@kotnet.org>
Fri, 18 Oct 2013 14:44:11 +0000 (18 16:44 +0200)
Tested-by: Michael Kruse <meinersbur@googlemail.com>
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>
doc/user.pod
include/isl/aff.h
isl_aff.c

index beaaaff..162dac4 100644 (file)
@@ -3758,6 +3758,9 @@ The expression can be inspected using
 It can be modified using
 
        #include <isl/aff.h>
+       __isl_give isl_aff *isl_aff_set_tuple_id(
+               __isl_take isl_aff *aff,
+               enum isl_dim_type type, __isl_take isl_id *id);
        __isl_give isl_pw_aff *isl_pw_aff_set_tuple_id(
                __isl_take isl_pw_aff *pwaff,
                enum isl_dim_type type, __isl_take isl_id *id);
index 6f65847..f4ee1fe 100644 (file)
@@ -59,6 +59,8 @@ __isl_give isl_aff *isl_aff_add_coefficient_val(__isl_take isl_aff *aff,
 
 int isl_aff_is_cst(__isl_keep isl_aff *aff);
 
+__isl_give isl_aff *isl_aff_set_tuple_id(__isl_take isl_aff *aff,
+       enum isl_dim_type type, __isl_take isl_id *id);
 __isl_give isl_aff *isl_aff_set_dim_name(__isl_take isl_aff *aff,
        enum isl_dim_type type, unsigned pos, const char *s);
 __isl_give isl_aff *isl_aff_set_dim_id(__isl_take isl_aff *aff,
index 94f8f3a..97008b0 100644 (file)
--- a/isl_aff.c
+++ b/isl_aff.c
@@ -1752,6 +1752,29 @@ error:
        return NULL;
 }
 
+/* Replace the identifier of the input tuple of "aff" by "id".
+ * type is currently required to be equal to isl_dim_in
+ */
+__isl_give isl_aff *isl_aff_set_tuple_id(__isl_take isl_aff *aff,
+       enum isl_dim_type type, __isl_take isl_id *id)
+{
+       aff = isl_aff_cow(aff);
+       if (!aff)
+               return isl_id_free(id);
+       if (type != isl_dim_out)
+               isl_die(aff->v->ctx, isl_error_invalid,
+                       "cannot only set id of input tuple", goto error);
+       aff->ls = isl_local_space_set_tuple_id(aff->ls, isl_dim_set, id);
+       if (!aff->ls)
+               return isl_aff_free(aff);
+
+       return aff;
+error:
+       isl_id_free(id);
+       isl_aff_free(aff);
+       return NULL;
+}
+
 /* Exploit the equalities in "eq" to simplify the affine expression
  * and the expressions of the integer divisions in the local space.
  * The integer divisions in this local space are assumed to appear