add isl_qpolynomial_gist_params
[platform/upstream/isl.git] / doc / user.pod
index 59d086d..534f300 100644 (file)
@@ -98,6 +98,8 @@ but they will be removed in the future.
 
 =item * The function C<isl_pw_aff_max> has been renamed to
 C<isl_pw_aff_union_max>.
+Similarly, the function C<isl_pw_aff_add> has been renamed to
+C<isl_pw_aff_union_add>.
 
 =item * The C<isl_dim> type has been renamed to C<isl_space>
 along with the associated functions.
@@ -1594,6 +1596,8 @@ has a fixed value and if so, return that value in C<*val>.
 To check whether a set is a parameter domain, use this function:
 
        int isl_set_is_params(__isl_keep isl_set *set);
+       int isl_union_set_is_params(
+               __isl_keep isl_union_set *uset);
 
 =item * Wrapping
 
@@ -1721,6 +1725,10 @@ i.e., whether both domain and range are nested relations.
                __isl_take isl_map *bmap);
        __isl_give isl_set *isl_map_range(
                __isl_take isl_map *map);
+       __isl_give isl_set *isl_union_set_params(
+               __isl_take isl_union_set *uset);
+       __isl_give isl_set *isl_union_map_params(
+               __isl_take isl_union_map *umap);
        __isl_give isl_union_set *isl_union_map_domain(
                __isl_take isl_union_map *umap);
        __isl_give isl_union_set *isl_union_map_range(
@@ -2179,6 +2187,9 @@ the same (number of) parameters.
 
 =item * Intersection
 
+       __isl_give isl_basic_set *isl_basic_set_intersect_params(
+               __isl_take isl_basic_set *bset1,
+               __isl_take isl_basic_set *bset2);
        __isl_give isl_basic_set *isl_basic_set_intersect(
                __isl_take isl_basic_set *bset1,
                __isl_take isl_basic_set *bset2);
@@ -2188,6 +2199,12 @@ the same (number of) parameters.
        __isl_give isl_set *isl_set_intersect(
                __isl_take isl_set *set1,
                __isl_take isl_set *set2);
+       __isl_give isl_union_set *isl_union_set_intersect_params(
+               __isl_take isl_union_set *uset,
+               __isl_take isl_set *set);
+       __isl_give isl_union_map *isl_union_map_intersect_params(
+               __isl_take isl_union_map *umap,
+               __isl_take isl_set *set);
        __isl_give isl_union_set *isl_union_set_intersect(
                __isl_take isl_union_set *uset1,
                __isl_take isl_union_set *uset2);
@@ -2362,6 +2379,9 @@ instead.
        __isl_give isl_union_set *isl_union_set_gist(
                __isl_take isl_union_set *uset,
                __isl_take isl_union_set *context);
+       __isl_give isl_union_set *isl_union_set_gist_params(
+               __isl_take isl_union_set *uset,
+               __isl_take isl_set *set);
        __isl_give isl_basic_map *isl_basic_map_gist(
                __isl_take isl_basic_map *bmap,
                __isl_take isl_basic_map *context);
@@ -2370,9 +2390,18 @@ instead.
        __isl_give isl_map *isl_map_gist_params(
                __isl_take isl_map *map,
                __isl_take isl_set *context);
+       __isl_give isl_map *isl_map_gist_domain(
+               __isl_take isl_map *map,
+               __isl_take isl_set *context);
        __isl_give isl_union_map *isl_union_map_gist(
                __isl_take isl_union_map *umap,
                __isl_take isl_union_map *context);
+       __isl_give isl_union_map *isl_union_map_gist_params(
+               __isl_take isl_union_map *umap,
+               __isl_take isl_set *set);
+       __isl_give isl_union_map *isl_union_map_gist_domain(
+               __isl_take isl_union_map *umap,
+               __isl_take isl_union_set *uset);
 
 The gist operation returns a set or relation that has the
 same intersection with the context as the input set or relation.
@@ -2822,6 +2851,9 @@ Operations include
                __isl_take isl_pw_aff *pwaff,
                __isl_take isl_space *model);
 
+       __isl_give isl_aff *isl_aff_gist_params(
+               __isl_take isl_aff *aff,
+               __isl_take isl_set *context);
        __isl_give isl_aff *isl_aff_gist(__isl_take isl_aff *aff,
                __isl_take isl_set *context);
        __isl_give isl_pw_aff *isl_pw_aff_gist(
@@ -2833,6 +2865,9 @@ Operations include
        __isl_give isl_pw_aff *isl_pw_aff_intersect_domain(
                __isl_take isl_pw_aff *pa,
                __isl_take isl_set *set);
+       __isl_give isl_pw_aff *isl_pw_aff_intersect_params(
+               __isl_take isl_pw_aff *pa,
+               __isl_take isl_set *set);
 
        __isl_give isl_aff *isl_aff_mul(__isl_take isl_aff *aff1,
                __isl_take isl_aff *aff2);
@@ -2925,6 +2960,9 @@ not in C<cond>.
        __isl_give isl_pw_aff *isl_pw_aff_union_max(
                __isl_take isl_pw_aff *pwaff1,
                __isl_take isl_pw_aff *pwaff2);
+       __isl_give isl_pw_aff *isl_pw_aff_union_add(
+               __isl_take isl_pw_aff *pwaff1,
+               __isl_take isl_pw_aff *pwaff2);
 
 The function C<isl_pw_aff_union_max> computes a piecewise quasi-affine
 expression with a domain that is the union of those of C<pwaff1> and
@@ -3063,16 +3101,29 @@ Operations include
        __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);
+       __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_add(
+               __isl_take isl_pw_multi_aff *pma1,
+               __isl_take isl_pw_multi_aff *pma2);
        __isl_give isl_multi_aff *isl_multi_aff_scale(
                __isl_take isl_multi_aff *maff,
                isl_int f);
+       __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_params(
+               __isl_take isl_pw_multi_aff *pma,
+               __isl_take isl_set *set);
        __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain(
                __isl_take isl_pw_multi_aff *pma,
                __isl_take isl_set *set);
+       __isl_give isl_multi_aff *isl_multi_aff_lift(
+               __isl_take isl_multi_aff *maff,
+               __isl_give isl_local_space **ls);
        __isl_give isl_multi_aff *isl_multi_aff_gist(
                __isl_take isl_multi_aff *maff,
                __isl_take isl_set *context);
 
+If the C<ls> argument of C<isl_multi_aff_lift> is not C<NULL>,
+then it is assigned the local space that lies at the basis of
+the lifting applied.
+
 An expression can be read from input using
 
        #include <isl/aff.h>
@@ -3103,7 +3154,7 @@ The zero point (the origin) can be created using
 The coordinates of a point can be inspected, set and changed
 using
 
-       void isl_point_get_coordinate(__isl_keep isl_point *pnt,
+       int isl_point_get_coordinate(__isl_keep isl_point *pnt,
                enum isl_dim_type type, int pos, isl_int *v);
        __isl_give isl_point *isl_point_set_coordinate(
                __isl_take isl_point *pnt,
@@ -3201,7 +3252,13 @@ the number of points in the map
 
        [n] -> { [x] -> [y] : x,y >= 0 and 0 <= x + y <= n }
 
-=head3 Printing (Piecewise) Quasipolynomials
+=head3 Input and Output
+
+Piecewise quasipolynomials can be read from input using
+
+       __isl_give isl_union_pw_qpolynomial *
+       isl_union_pw_qpolynomial_read_from_str(
+               isl_ctx *ctx, const char *str);
 
 Quasipolynomials and piecewise quasipolynomials can be printed
 using the following functions.
@@ -3456,12 +3513,19 @@ obviously equal, use
        __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_intersect_domain(
                __isl_take isl_pw_qpolynomial *pwpq,
                __isl_take isl_set *set);
+       __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_intersect_params(
+               __isl_take isl_pw_qpolynomial *pwpq,
+               __isl_take isl_set *set);
 
        __isl_give isl_union_set *isl_union_pw_qpolynomial_domain(
                __isl_take isl_union_pw_qpolynomial *upwqp);
        __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_intersect_domain(
                __isl_take isl_union_pw_qpolynomial *upwpq,
                __isl_take isl_union_set *uset);
+       __isl_give isl_union_pw_qpolynomial *
+       isl_union_pw_qpolynomial_intersect_params(
+               __isl_take isl_union_pw_qpolynomial *upwpq,
+               __isl_take isl_set *set);
 
        __isl_give isl_qpolynomial *isl_qpolynomial_align_params(
                __isl_take isl_qpolynomial *qp,
@@ -3475,6 +3539,9 @@ obviously equal, use
        __isl_give isl_union_pw_qpolynomial *isl_union_pw_qpolynomial_coalesce(
                __isl_take isl_union_pw_qpolynomial *upwqp);
 
+       __isl_give isl_qpolynomial *isl_qpolynomial_gist_params(
+               __isl_take isl_qpolynomial *qp,
+               __isl_take isl_set *context);
        __isl_give isl_qpolynomial *isl_qpolynomial_gist(
                __isl_take isl_qpolynomial *qp,
                __isl_take isl_set *context);
@@ -3642,11 +3709,20 @@ obviously equal, use
                __isl_take isl_union_pw_qpolynomial_fold *upwf,
                __isl_take isl_point *pnt);
 
+       __isl_give isl_pw_qpolynomial_fold *
+       sl_pw_qpolynomial_fold_intersect_params(
+               __isl_take isl_pw_qpolynomial_fold *pwf,
+               __isl_take isl_set *set);
+
        __isl_give isl_union_set *isl_union_pw_qpolynomial_fold_domain(
                __isl_take isl_union_pw_qpolynomial_fold *upwf);
        __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_intersect_domain(
                __isl_take isl_union_pw_qpolynomial_fold *upwf,
                __isl_take isl_union_set *uset);
+       __isl_give isl_union_pw_qpolynomial_fold *
+       isl_union_pw_qpolynomial_fold_intersect_params(
+               __isl_take isl_union_pw_qpolynomial_fold *upwf,
+               __isl_take isl_set *set);
 
        __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_project_domain_on_params(
                __isl_take isl_pw_qpolynomial_fold *pwf);
@@ -3657,6 +3733,13 @@ obviously equal, use
        __isl_give isl_union_pw_qpolynomial_fold *isl_union_pw_qpolynomial_fold_coalesce(
                __isl_take isl_union_pw_qpolynomial_fold *upwf);
 
+       __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_gist_params(
+               __isl_take isl_qpolynomial_fold *fold,
+               __isl_take isl_set *context);
+       __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_gist(
+               __isl_take isl_qpolynomial_fold *fold,
+               __isl_take isl_set *context);
+
        __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_gist(
                __isl_take isl_pw_qpolynomial_fold *pwf,
                __isl_take isl_set *context);
@@ -3711,11 +3794,13 @@ for each iteration of the sink access, which iteration
 of which of the source access relations was the last
 to access the same data element before the given iteration
 of the sink access.
+The resulting dependence relations map source iterations
+to the corresponding sink iterations.
 To compute standard flow dependences, the sink should be
 a read, while the sources should be writes.
 If any of the source accesses are marked as being I<may>
-accesses, then there will be a dependence to the last
-I<must> access B<and> to any I<may> access that follows
+accesses, then there will be a dependence from the last
+I<must> access B<and> from any I<may> access that follows
 this last I<must> access.
 In particular, if I<all> sources are I<may> accesses,
 then memory based dependence analysis is performed.