add exported isl_set_unbind_params{,_insert_domain}
commit08ba5135b316f01e5444c00cbbed39f531fcbc7f
authorSven Verdoolaege <sven.verdoolaege@gmail.com>
Fri, 23 Mar 2018 17:17:13 +0000 (23 18:17 +0100)
committerSven Verdoolaege <sven@cerebras.net>
Thu, 2 May 2019 16:19:13 +0000 (2 18:19 +0200)
treed353a0fcdd1dde71cb4b7c1b647e4ca9c781c83f
parent50b2966b58f3b1d171c11554891d4e914cadc934
add exported isl_set_unbind_params{,_insert_domain}

During the construction of a polyhedral model, it is not uncommon
for a statement instance set to be constructed from a description
in terms of the parameters at the point of the statement (including
the outer loop iterators) and a list of outer loop iterators
that will become the set dimensions of the instance set.
Prior to this commit, the only way of transforming
a description in terms of the parameters into one where
some of these parameters are reinterpreted as the set dimensions,
is to call isl_set_move_dims.  However, the use of this function
is discouraged.
isl_set_unbind_params provides a more structured and
hopefully also more natural way of achieving this effect.

isl_set_unbind_params_insert_domain performs a similar
operation, but creates a map from a set rather than a set
from a parameter domain.
This function can be used, for example, to create access relations
in the same setting as described above.

An earlier design took a tuple identifier and a list of parameters
as two separate arguments instead of the isl_multi_id.
This turned out to be less convenient as it requires the user
to keep track of two pieces of information.
The current design is also more general as it also works
with structured spaces.

Signed-off-by: Sven Verdoolaege <sven.verdoolaege@gmail.com>
doc/user.pod
include/isl/set.h
isl_map.c
isl_test.c