X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=doc%2Fuser.pod;h=8fc61bce922d881fca848524874316930ba7915b;hb=2d6726a1603607dfee8a3eacf357b91363fe2a30;hp=6376f6e75ef86daddb320b91341e205b206a96b6;hpb=b266ab3f65c881822ecb3b9a2e3a43775e360e8c;p=platform%2Fupstream%2Fisl.git diff --git a/doc/user.pod b/doc/user.pod index 6376f6e..8fc61bc 100644 --- a/doc/user.pod +++ b/doc/user.pod @@ -126,6 +126,29 @@ now take an C instead of an C. An C can be created from an C using C. +=item * The C type has been removed. Functions that used +to return an C now return an C. +Note that the space of an C is that of relation. +When replacing a call to C by a call to +C any C argument needs +to be replaced by C. +A call to C can be replaced by a call +to C. +A call to C call be replaced by +the nested call + + isl_qpolynomial_from_aff(isl_aff_floor(div)) + +The function C has also been renamed +to C. + +=item * The C argument has been removed from +C and similar functions. +When reading input in the original PolyLib format, +the result will have no parameters. +If parameters are expected, the caller may want to perform +dimension manipulation on the result. + =back =head1 Installation @@ -669,6 +692,8 @@ using the following functions. __isl_give isl_space *isl_space_from_range(__isl_take isl_space *space); __isl_give isl_space *isl_space_params( __isl_take isl_space *space); + __isl_give isl_space *isl_space_set_from_params( + __isl_take isl_space *space); __isl_give isl_space *isl_space_reverse(__isl_take isl_space *space); __isl_give isl_space *isl_space_join(__isl_take isl_space *left, __isl_take isl_space *right); @@ -728,7 +753,7 @@ They can be inspected, copied and freed using the following functions. enum isl_dim_type type, unsigned pos, const char *s); __isl_give isl_space *isl_local_space_get_space( __isl_keep isl_local_space *ls); - __isl_give isl_div *isl_local_space_get_div( + __isl_give isl_aff *isl_local_space_get_div( __isl_keep isl_local_space *ls, int pos); __isl_give isl_local_space *isl_local_space_copy( __isl_keep isl_local_space *ls); @@ -818,23 +843,23 @@ dimensions is zero. #include __isl_give isl_basic_set *isl_basic_set_read_from_file( - isl_ctx *ctx, FILE *input, int nparam); + isl_ctx *ctx, FILE *input); __isl_give isl_basic_set *isl_basic_set_read_from_str( - isl_ctx *ctx, const char *str, int nparam); + isl_ctx *ctx, const char *str); __isl_give isl_set *isl_set_read_from_file(isl_ctx *ctx, - FILE *input, int nparam); + FILE *input); __isl_give isl_set *isl_set_read_from_str(isl_ctx *ctx, - const char *str, int nparam); + const char *str); #include __isl_give isl_basic_map *isl_basic_map_read_from_file( - isl_ctx *ctx, FILE *input, int nparam); + isl_ctx *ctx, FILE *input); __isl_give isl_basic_map *isl_basic_map_read_from_str( - isl_ctx *ctx, const char *str, int nparam); + isl_ctx *ctx, const char *str); __isl_give isl_map *isl_map_read_from_file( - isl_ctx *ctx, FILE *input, int nparam); + isl_ctx *ctx, FILE *input); __isl_give isl_map *isl_map_read_from_str(isl_ctx *ctx, - const char *str, int nparam); + const char *str); #include __isl_give isl_union_set *isl_union_set_read_from_file( @@ -850,13 +875,6 @@ dimensions is zero. The input format is autodetected and may be either the C format or the C format. -C specifies how many of the final columns in -the C format correspond to parameters. -If input is given in the C format, then the number -of parameters needs to be equal to C. -If C is negative, then any number of parameters -is accepted in the C format and zero parameters -are assumed in the C format. =head3 Output @@ -1143,7 +1161,7 @@ Or, alternatively, isl_basic_set *bset; bset = isl_basic_set_read_from_str(ctx, - "{[i] : exists (a : i = 2a and i >= 10 and i <= 42)}", -1); + "{[i] : exists (a : i = 2a and i >= 10 and i <= 42)}"); A basic set or relation can also be constructed from two matrices describing the equalities and the inequalities. @@ -1317,20 +1335,17 @@ the following functions. enum isl_dim_type type, unsigned first, unsigned n); The explicit representations of the existentially quantified -variables can be inspected using the following functions. -Note that the user is only allowed to use these functions +variables can be inspected using the following function. +Note that the user is only allowed to use this function if the inspected set or map is the result of a call to C or C. +The existentially quantified variable is equal to the floor +of the returned affine expression. The affine expression +itself can be inspected using the functions in +L<"Piecewise Quasi Affine Expressions">. - __isl_give isl_div *isl_constraint_div( + __isl_give isl_aff *isl_constraint_get_div( __isl_keep isl_constraint *constraint, int pos); - isl_ctx *isl_div_get_ctx(__isl_keep isl_div *div); - void isl_div_get_constant(__isl_keep isl_div *div, - isl_int *v); - void isl_div_get_denominator(__isl_keep isl_div *div, - isl_int *v); - void isl_div_get_coefficient(__isl_keep isl_div *div, - enum isl_dim_type type, int pos, isl_int *v); To obtain the constraints of a basic set or map in matrix form, use the following functions. @@ -1664,6 +1679,7 @@ i.e., whether both domain and range are nested relations. __isl_give isl_basic_set *isl_basic_map_range( __isl_take isl_basic_map *bmap); __isl_give isl_set *isl_set_params(__isl_take isl_set *set); + __isl_give isl_set *isl_map_params(__isl_take isl_map *map); __isl_give isl_set *isl_map_domain( __isl_take isl_map *bmap); __isl_give isl_set *isl_map_range( @@ -2068,6 +2084,26 @@ All parameters need to be named. __isl_give isl_map *isl_map_insert_dims( __isl_take isl_map *map, enum isl_dim_type type, unsigned pos, unsigned n); + __isl_give isl_basic_set *isl_basic_set_move_dims( + __isl_take isl_basic_set *bset, + enum isl_dim_type dst_type, unsigned dst_pos, + enum isl_dim_type src_type, unsigned src_pos, + unsigned n); + __isl_give isl_basic_map *isl_basic_map_move_dims( + __isl_take isl_basic_map *bmap, + enum isl_dim_type dst_type, unsigned dst_pos, + enum isl_dim_type src_type, unsigned src_pos, + unsigned n); + __isl_give isl_set *isl_set_move_dims( + __isl_take isl_set *set, + enum isl_dim_type dst_type, unsigned dst_pos, + enum isl_dim_type src_type, unsigned src_pos, + unsigned n); + __isl_give isl_map *isl_map_move_dims( + __isl_take isl_map *map, + enum isl_dim_type dst_type, unsigned dst_pos, + enum isl_dim_type src_type, unsigned src_pos, + unsigned n); It is usually not advisable to directly change the (input or output) space of a set or a relation as this removes the name and the internal @@ -2481,11 +2517,6 @@ The zero quasi affine expression on a given domain can be created using Note that the space in which the resulting object lives is a map space with the given space as domain and a one-dimensional range. -A quasi affine expression can also be initialized from an C: - - #include - __isl_give isl_aff *isl_aff_from_div(__isl_take isl_div *div); - An empty piecewise quasi affine expression (one with no cells) or a piecewise quasi affine expression with a single cell can be created using the following functions. @@ -2551,7 +2582,7 @@ The expression can be inspected using enum isl_dim_type type, int pos, isl_int *v); int isl_aff_get_denominator(__isl_keep isl_aff *aff, isl_int *v); - __isl_give isl_div *isl_aff_get_div( + __isl_give isl_aff *isl_aff_get_div( __isl_keep isl_aff *aff, int pos); int isl_pw_aff_foreach_piece(__isl_keep isl_pw_aff *pwaff, @@ -2974,8 +3005,6 @@ on the resulting quasipolynomials __isl_give isl_qpolynomial *isl_qpolynomial_rat_cst_on_domain( __isl_take isl_space *domain, const isl_int n, const isl_int d); - __isl_give isl_qpolynomial *isl_qpolynomial_div( - __isl_take isl_div *div); __isl_give isl_qpolynomial *isl_qpolynomial_var_on_domain( __isl_take isl_space *domain, enum isl_dim_type type, unsigned pos); @@ -3089,7 +3118,7 @@ these functions isl_int *d); int isl_term_get_exp(__isl_keep isl_term *term, enum isl_dim_type type, unsigned pos); - __isl_give isl_div *isl_term_get_div( + __isl_give isl_aff *isl_term_get_div( __isl_keep isl_term *term, unsigned pos); void isl_term_free(__isl_take isl_term *term); @@ -3112,6 +3141,13 @@ If C is a constant and if C and C are not C then the numerator and denominator of the constant are returned in C<*n> and C<*d>, respectively. +To check whether two union piecewise quasipolynomials are +obviously equal, use + + int isl_union_pw_qpolynomial_plain_is_equal( + __isl_keep isl_union_pw_qpolynomial *upwqp1, + __isl_keep isl_union_pw_qpolynomial *upwqp2); + =head3 Operations on (Piecewise) Quasipolynomials __isl_give isl_qpolynomial *isl_qpolynomial_scale( @@ -3322,6 +3358,15 @@ To iterate over all quasipolynomials in a reduction, use int (*fn)(__isl_take isl_qpolynomial *qp, void *user), void *user); +=head3 Properties of Piecewise Quasipolynomial Reductions + +To check whether two union piecewise quasipolynomial reductions are +obviously equal, use + + int isl_union_pw_qpolynomial_fold_plain_is_equal( + __isl_keep isl_union_pw_qpolynomial_fold *upwf1, + __isl_keep isl_union_pw_qpolynomial_fold *upwf2); + =head3 Operations on Piecewise Quasipolynomial Reductions __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_scale(