mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-28 16:11:29 +00:00
Update isl to isl-0.19-114-g385262af
llvm-svn: 330800
This commit is contained in:
parent
3ea50f9fef
commit
5fa86378aa
2
polly/lib/External/isl/AUTHORS
vendored
2
polly/lib/External/isl/AUTHORS
vendored
@ -42,7 +42,7 @@ Alexander Matz
|
||||
Sebastian Pop
|
||||
Louis-Noel Pouchet
|
||||
Benoit Pradelle
|
||||
Uday Kumar Reddy
|
||||
Uday Bondhugula
|
||||
Andreas Simbuerger
|
||||
Malhar Thakkar
|
||||
Sven van Haastregt
|
||||
|
2
polly/lib/External/isl/GIT_HEAD_ID
vendored
2
polly/lib/External/isl/GIT_HEAD_ID
vendored
@ -1 +1 @@
|
||||
isl-0.19-107-gc4fe33d8
|
||||
isl-0.19-114-g385262af
|
||||
|
37
polly/lib/External/isl/doc/user.pod
vendored
37
polly/lib/External/isl/doc/user.pod
vendored
@ -4056,6 +4056,9 @@ the following functions can be used.
|
||||
isl_bool isl_multi_aff_involves_dims(
|
||||
__isl_keep isl_multi_aff *ma,
|
||||
enum isl_dim_type type, unsigned first, unsigned n);
|
||||
isl_bool isl_pw_multi_aff_involves_dims(
|
||||
__isl_keep isl_pw_multi_aff *pma,
|
||||
enum isl_dim_type type, unsigned first, unsigned n);
|
||||
isl_bool isl_multi_pw_aff_involves_dims(
|
||||
__isl_keep isl_multi_pw_aff *mpa,
|
||||
enum isl_dim_type type, unsigned first, unsigned n);
|
||||
@ -5680,6 +5683,40 @@ All parameters need to be named.
|
||||
__isl_take isl_qpolynomial *qp,
|
||||
__isl_take isl_space *model);
|
||||
|
||||
=item * Drop unused parameters
|
||||
|
||||
Drop parameters that are not referenced by the isl object.
|
||||
All parameters need to be named.
|
||||
|
||||
#include <isl/set.h>
|
||||
__isl_give isl_basic_set *
|
||||
isl_basic_set_drop_unused_params(
|
||||
__isl_take isl_basic_set *bset);
|
||||
__isl_give isl_set *isl_set_drop_unused_params(
|
||||
__isl_take isl_set *set);
|
||||
|
||||
#include <isl/map.h>
|
||||
__isl_give isl_basic_map *
|
||||
isl_basic_map_drop_unused_params(
|
||||
__isl_take isl_basic_map *bmap);
|
||||
__isl_give isl_map *isl_map_drop_unused_params(
|
||||
__isl_take isl_map *map);
|
||||
|
||||
#include <isl/aff.h>
|
||||
__isl_give isl_pw_aff *isl_pw_aff_drop_unused_params(
|
||||
__isl_take isl_pw_aff *pa);
|
||||
__isl_give isl_pw_multi_aff *
|
||||
isl_pw_multi_aff_drop_unused_params(
|
||||
__isl_take isl_pw_multi_aff *pma);
|
||||
|
||||
#include <isl/polynomial.h>
|
||||
__isl_give isl_pw_qpolynomial *
|
||||
isl_pw_qpolynomial_drop_unused_params(
|
||||
__isl_take isl_pw_qpolynomial *pwqp);
|
||||
__isl_give isl_pw_qpolynomial_fold *
|
||||
isl_pw_qpolynomial_fold_drop_unused_params(
|
||||
__isl_take isl_pw_qpolynomial_fold *pwf);
|
||||
|
||||
=item * Unary Arithmetic Operations
|
||||
|
||||
#include <isl/set.h>
|
||||
|
6
polly/lib/External/isl/include/isl/aff.h
vendored
6
polly/lib/External/isl/include/isl/aff.h
vendored
@ -246,6 +246,8 @@ __isl_give isl_pw_aff *isl_pw_aff_project_domain_on_params(
|
||||
|
||||
__isl_give isl_pw_aff *isl_pw_aff_align_params(__isl_take isl_pw_aff *pwaff,
|
||||
__isl_take isl_space *model);
|
||||
__isl_give isl_pw_aff *isl_pw_aff_drop_unused_params(
|
||||
__isl_take isl_pw_aff *pa);
|
||||
|
||||
isl_bool isl_pw_aff_has_tuple_id(__isl_keep isl_pw_aff *pa,
|
||||
enum isl_dim_type type);
|
||||
@ -486,6 +488,8 @@ __isl_null isl_pw_multi_aff *isl_pw_multi_aff_free(
|
||||
|
||||
unsigned isl_pw_multi_aff_dim(__isl_keep isl_pw_multi_aff *pma,
|
||||
enum isl_dim_type type);
|
||||
isl_bool isl_pw_multi_aff_involves_dims(__isl_keep isl_pw_multi_aff *pma,
|
||||
enum isl_dim_type type, unsigned first, unsigned n);
|
||||
__isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff(
|
||||
__isl_keep isl_pw_multi_aff *pma, int pos);
|
||||
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_pw_aff(
|
||||
@ -600,6 +604,8 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_domain_on_params(
|
||||
|
||||
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_align_params(
|
||||
__isl_take isl_pw_multi_aff *pma, __isl_take isl_space *model);
|
||||
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_drop_unused_params(
|
||||
__isl_take isl_pw_multi_aff *pma);
|
||||
|
||||
__isl_give isl_pw_multi_aff *isl_pw_multi_aff_coalesce(
|
||||
__isl_take isl_pw_multi_aff *pma);
|
||||
|
3
polly/lib/External/isl/include/isl/map.h
vendored
3
polly/lib/External/isl/include/isl/map.h
vendored
@ -642,6 +642,9 @@ __isl_give isl_basic_map *isl_basic_map_align_params(
|
||||
__isl_take isl_basic_map *bmap, __isl_take isl_space *model);
|
||||
__isl_give isl_map *isl_map_align_params(__isl_take isl_map *map,
|
||||
__isl_take isl_space *model);
|
||||
__isl_give isl_basic_map *isl_basic_map_drop_unused_params(
|
||||
__isl_take isl_basic_map *bmap);
|
||||
__isl_give isl_map *isl_map_drop_unused_params(__isl_take isl_map *map);
|
||||
|
||||
__isl_give isl_mat *isl_basic_map_equalities_matrix(
|
||||
__isl_keep isl_basic_map *bmap, enum isl_dim_type c1,
|
||||
|
@ -195,6 +195,9 @@ __isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_split_dims(
|
||||
__isl_take isl_pw_qpolynomial *pwqp,
|
||||
enum isl_dim_type type, unsigned first, unsigned n);
|
||||
|
||||
__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_drop_unused_params(
|
||||
__isl_take isl_pw_qpolynomial *pwqp);
|
||||
|
||||
__isl_give isl_pw_qpolynomial *isl_pw_qpolynomial_add(
|
||||
__isl_take isl_pw_qpolynomial *pwqp1,
|
||||
__isl_take isl_pw_qpolynomial *pwqp2);
|
||||
@ -423,6 +426,9 @@ __isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_move_dims(
|
||||
enum isl_dim_type dst_type, unsigned dst_pos,
|
||||
enum isl_dim_type src_type, unsigned src_pos, unsigned n);
|
||||
|
||||
__isl_give isl_pw_qpolynomial_fold *isl_pw_qpolynomial_fold_drop_unused_params(
|
||||
__isl_take isl_pw_qpolynomial_fold *pwf);
|
||||
|
||||
__isl_give isl_val *isl_pw_qpolynomial_fold_eval(
|
||||
__isl_take isl_pw_qpolynomial_fold *pwf, __isl_take isl_point *pnt);
|
||||
|
||||
|
3
polly/lib/External/isl/include/isl/set.h
vendored
3
polly/lib/External/isl/include/isl/set.h
vendored
@ -482,6 +482,9 @@ __isl_give isl_basic_set *isl_basic_set_align_params(
|
||||
__isl_take isl_basic_set *bset, __isl_take isl_space *model);
|
||||
__isl_give isl_set *isl_set_align_params(__isl_take isl_set *set,
|
||||
__isl_take isl_space *model);
|
||||
__isl_give isl_basic_set *isl_basic_set_drop_unused_params(
|
||||
__isl_take isl_basic_set *bset);
|
||||
__isl_give isl_set *isl_set_drop_unused_params(__isl_take isl_set *set);
|
||||
|
||||
__isl_give isl_mat *isl_basic_set_equalities_matrix(
|
||||
__isl_keep isl_basic_set *bset, enum isl_dim_type c1,
|
||||
|
22
polly/lib/External/isl/isl_aff.c
vendored
22
polly/lib/External/isl/isl_aff.c
vendored
@ -2716,10 +2716,9 @@ static __isl_give isl_set *align_params_pw_pw_set_and(
|
||||
goto error;
|
||||
if (equal_params)
|
||||
return fn(pwaff1, pwaff2);
|
||||
if (!isl_space_has_named_params(pwaff1->dim) ||
|
||||
!isl_space_has_named_params(pwaff2->dim))
|
||||
isl_die(isl_pw_aff_get_ctx(pwaff1), isl_error_invalid,
|
||||
"unaligned unnamed parameters", goto error);
|
||||
if (isl_pw_aff_check_named_params(pwaff1) < 0 ||
|
||||
isl_pw_aff_check_named_params(pwaff2) < 0)
|
||||
goto error;
|
||||
pwaff1 = isl_pw_aff_align_params(pwaff1, isl_pw_aff_get_space(pwaff2));
|
||||
pwaff2 = isl_pw_aff_align_params(pwaff2, isl_pw_aff_get_space(pwaff1));
|
||||
return fn(pwaff1, pwaff2);
|
||||
@ -2746,10 +2745,9 @@ static __isl_give isl_map *align_params_pw_pw_map_and(
|
||||
goto error;
|
||||
if (equal_params)
|
||||
return fn(pa1, pa2);
|
||||
if (!isl_space_has_named_params(pa1->dim) ||
|
||||
!isl_space_has_named_params(pa2->dim))
|
||||
isl_die(isl_pw_aff_get_ctx(pa1), isl_error_invalid,
|
||||
"unaligned unnamed parameters", goto error);
|
||||
if (isl_pw_aff_check_named_params(pa1) < 0 ||
|
||||
isl_pw_aff_check_named_params(pa2) < 0)
|
||||
goto error;
|
||||
pa1 = isl_pw_aff_align_params(pa1, isl_pw_aff_get_space(pa2));
|
||||
pa2 = isl_pw_aff_align_params(pa2, isl_pw_aff_get_space(pa1));
|
||||
return fn(pa1, pa2);
|
||||
@ -4287,7 +4285,6 @@ __isl_give isl_set *isl_multi_aff_lex_gt_set(__isl_take isl_multi_aff *ma1,
|
||||
|
||||
#define NO_SUB
|
||||
#define NO_OPT
|
||||
#define NO_INVOLVES_DIMS
|
||||
#define NO_INSERT_DIMS
|
||||
#define NO_LIFT
|
||||
#define NO_MORPH
|
||||
@ -6257,10 +6254,9 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_pw_aff(
|
||||
goto error;
|
||||
if (equal_params)
|
||||
return pw_multi_aff_set_pw_aff(pma, pos, pa);
|
||||
if (!isl_space_has_named_params(pma->dim) ||
|
||||
!isl_space_has_named_params(pa->dim))
|
||||
isl_die(isl_pw_multi_aff_get_ctx(pma), isl_error_invalid,
|
||||
"unaligned unnamed parameters", goto error);
|
||||
if (isl_pw_multi_aff_check_named_params(pma) < 0 ||
|
||||
isl_pw_aff_check_named_params(pa) < 0)
|
||||
goto error;
|
||||
pma = isl_pw_multi_aff_align_params(pma, isl_pw_aff_get_space(pa));
|
||||
pa = isl_pw_aff_align_params(pa, isl_pw_multi_aff_get_space(pma));
|
||||
return pw_multi_aff_set_pw_aff(pma, pos, pa);
|
||||
|
3
polly/lib/External/isl/isl_aff_private.h
vendored
3
polly/lib/External/isl/isl_aff_private.h
vendored
@ -162,6 +162,9 @@ __isl_give isl_pw_multi_aff *isl_pw_multi_aff_substitute(
|
||||
__isl_take isl_pw_multi_aff *pma, enum isl_dim_type type, unsigned pos,
|
||||
__isl_keep isl_pw_aff *subs);
|
||||
|
||||
isl_stat isl_pw_aff_check_named_params(__isl_keep isl_pw_aff *pa);
|
||||
isl_stat isl_pw_multi_aff_check_named_params(__isl_keep isl_pw_multi_aff *pma);
|
||||
|
||||
isl_bool isl_pw_aff_matching_params(__isl_keep isl_pw_aff *pa,
|
||||
__isl_keep isl_space *space);
|
||||
isl_stat isl_pw_aff_check_match_domain_space(__isl_keep isl_pw_aff *pa,
|
||||
|
81
polly/lib/External/isl/isl_map.c
vendored
81
polly/lib/External/isl/isl_map.c
vendored
@ -1349,6 +1349,14 @@ isl_stat isl_map_check_named_params(__isl_keep isl_map *map)
|
||||
return isl_space_check_named_params(isl_map_peek_space(map));
|
||||
}
|
||||
|
||||
/* Check that "bmap" has only named parameters, reporting an error
|
||||
* if it does not.
|
||||
*/
|
||||
static isl_stat isl_basic_map_check_named_params(__isl_keep isl_basic_map *bmap)
|
||||
{
|
||||
return isl_space_check_named_params(isl_basic_map_peek_space(bmap));
|
||||
}
|
||||
|
||||
/* Check that "bmap1" and "bmap2" have the same parameters,
|
||||
* reporting an error if they do not.
|
||||
*/
|
||||
@ -11760,9 +11768,8 @@ __isl_give isl_basic_map *isl_basic_map_align_params(
|
||||
if (!isl_space_has_named_params(model))
|
||||
isl_die(ctx, isl_error_invalid,
|
||||
"model has unnamed parameters", goto error);
|
||||
if (!isl_space_has_named_params(bmap->dim))
|
||||
isl_die(ctx, isl_error_invalid,
|
||||
"relation has unnamed parameters", goto error);
|
||||
if (isl_basic_map_check_named_params(bmap) < 0)
|
||||
goto error;
|
||||
equal_params = isl_space_has_equal_params(bmap->dim, model);
|
||||
if (equal_params < 0)
|
||||
goto error;
|
||||
@ -11832,6 +11839,69 @@ __isl_give isl_basic_set *isl_basic_set_align_params(
|
||||
return isl_basic_map_align_params(bset, model);
|
||||
}
|
||||
|
||||
/* Drop all parameters not referenced by "map".
|
||||
*/
|
||||
__isl_give isl_map *isl_map_drop_unused_params(__isl_take isl_map *map)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (isl_map_check_named_params(map) < 0)
|
||||
return isl_map_free(map);
|
||||
|
||||
for (i = isl_map_dim(map, isl_dim_param) - 1; i >= 0; i--) {
|
||||
isl_bool involves;
|
||||
|
||||
involves = isl_map_involves_dims(map, isl_dim_param, i, 1);
|
||||
if (involves < 0)
|
||||
return isl_map_free(map);
|
||||
if (!involves)
|
||||
map = isl_map_project_out(map, isl_dim_param, i, 1);
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
/* Drop all parameters not referenced by "set".
|
||||
*/
|
||||
__isl_give isl_set *isl_set_drop_unused_params(
|
||||
__isl_take isl_set *set)
|
||||
{
|
||||
return set_from_map(isl_map_drop_unused_params(set_to_map(set)));
|
||||
}
|
||||
|
||||
/* Drop all parameters not referenced by "bmap".
|
||||
*/
|
||||
__isl_give isl_basic_map *isl_basic_map_drop_unused_params(
|
||||
__isl_take isl_basic_map *bmap)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (isl_basic_map_check_named_params(bmap) < 0)
|
||||
return isl_basic_map_free(bmap);
|
||||
|
||||
for (i = isl_basic_map_dim(bmap, isl_dim_param) - 1; i >= 0; i--) {
|
||||
isl_bool involves;
|
||||
|
||||
involves = isl_basic_map_involves_dims(bmap,
|
||||
isl_dim_param, i, 1);
|
||||
if (involves < 0)
|
||||
return isl_basic_map_free(bmap);
|
||||
if (!involves)
|
||||
bmap = isl_basic_map_drop(bmap, isl_dim_param, i, 1);
|
||||
}
|
||||
|
||||
return bmap;
|
||||
}
|
||||
|
||||
/* Drop all parameters not referenced by "bset".
|
||||
*/
|
||||
__isl_give isl_basic_set *isl_basic_set_drop_unused_params(
|
||||
__isl_take isl_basic_set *bset)
|
||||
{
|
||||
return bset_from_bmap(isl_basic_map_drop_unused_params(
|
||||
bset_to_bmap(bset)));
|
||||
}
|
||||
|
||||
__isl_give isl_mat *isl_basic_map_equalities_matrix(
|
||||
__isl_keep isl_basic_map *bmap, enum isl_dim_type c1,
|
||||
enum isl_dim_type c2, enum isl_dim_type c3,
|
||||
@ -13369,9 +13439,8 @@ __isl_give isl_map *isl_map_preimage_pw_multi_aff(__isl_take isl_map *map,
|
||||
|
||||
if (isl_map_check_named_params(map) < 0)
|
||||
goto error;
|
||||
if (!isl_space_has_named_params(pma->dim))
|
||||
isl_die(map->ctx, isl_error_invalid,
|
||||
"unaligned unnamed parameters", goto error);
|
||||
if (isl_pw_multi_aff_check_named_params(pma) < 0)
|
||||
goto error;
|
||||
map = isl_map_align_params(map, isl_pw_multi_aff_get_space(pma));
|
||||
pma = isl_pw_multi_aff_align_params(pma, isl_map_get_space(map));
|
||||
|
||||
|
63
polly/lib/External/isl/isl_pw_templ.c
vendored
63
polly/lib/External/isl/isl_pw_templ.c
vendored
@ -300,6 +300,14 @@ error:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Check that "pw" has only named parameters, reporting an error
|
||||
* if it does not.
|
||||
*/
|
||||
isl_stat FN(PW,check_named_params)(__isl_keep PW *pw)
|
||||
{
|
||||
return isl_space_check_named_params(FN(PW,peek_space)(pw));
|
||||
}
|
||||
|
||||
/* Align the parameters of "pw" to those of "model".
|
||||
*/
|
||||
__isl_give PW *FN(PW,align_params)(__isl_take PW *pw, __isl_take isl_space *model)
|
||||
@ -314,9 +322,8 @@ __isl_give PW *FN(PW,align_params)(__isl_take PW *pw, __isl_take isl_space *mode
|
||||
if (!isl_space_has_named_params(model))
|
||||
isl_die(ctx, isl_error_invalid,
|
||||
"model has unnamed parameters", goto error);
|
||||
if (!isl_space_has_named_params(pw->dim))
|
||||
isl_die(ctx, isl_error_invalid,
|
||||
"input has unnamed parameters", goto error);
|
||||
if (FN(PW,check_named_params)(pw) < 0)
|
||||
goto error;
|
||||
equal_params = isl_space_has_equal_params(pw->dim, model);
|
||||
if (equal_params < 0)
|
||||
goto error;
|
||||
@ -356,10 +363,9 @@ static __isl_give PW *FN(PW,align_params_pw_pw_and)(__isl_take PW *pw1,
|
||||
if (equal_params)
|
||||
return fn(pw1, pw2);
|
||||
ctx = FN(PW,get_ctx)(pw1);
|
||||
if (!isl_space_has_named_params(pw1->dim) ||
|
||||
!isl_space_has_named_params(pw2->dim))
|
||||
isl_die(ctx, isl_error_invalid,
|
||||
"unaligned unnamed parameters", goto error);
|
||||
if (FN(PW,check_named_params)(pw1) < 0 ||
|
||||
FN(PW,check_named_params)(pw2) < 0)
|
||||
goto error;
|
||||
pw1 = FN(PW,align_params)(pw1, FN(PW,get_space)(pw2));
|
||||
pw2 = FN(PW,align_params)(pw2, FN(PW,get_space)(pw1));
|
||||
return fn(pw1, pw2);
|
||||
@ -384,8 +390,9 @@ static __isl_give PW *FN(PW,align_params_pw_set_and)(__isl_take PW *pw,
|
||||
if (aligned)
|
||||
return fn(pw, set);
|
||||
ctx = FN(PW,get_ctx)(pw);
|
||||
if (!isl_space_has_named_params(pw->dim) ||
|
||||
!isl_space_has_named_params(set->dim))
|
||||
if (FN(PW,check_named_params)(pw) < 0)
|
||||
goto error;
|
||||
if (!isl_space_has_named_params(set->dim))
|
||||
isl_die(ctx, isl_error_invalid,
|
||||
"unaligned unnamed parameters", goto error);
|
||||
pw = FN(PW,align_params)(pw, isl_set_get_space(set));
|
||||
@ -1141,7 +1148,6 @@ isl_ctx *FN(PW,get_ctx)(__isl_keep PW *pw)
|
||||
return pw ? isl_space_get_ctx(pw->dim) : NULL;
|
||||
}
|
||||
|
||||
#ifndef NO_INVOLVES_DIMS
|
||||
isl_bool FN(PW,involves_dims)(__isl_keep PW *pw, enum isl_dim_type type,
|
||||
unsigned first, unsigned n)
|
||||
{
|
||||
@ -1167,7 +1173,6 @@ isl_bool FN(PW,involves_dims)(__isl_keep PW *pw, enum isl_dim_type type,
|
||||
}
|
||||
return isl_bool_false;
|
||||
}
|
||||
#endif
|
||||
|
||||
__isl_give PW *FN(PW,set_dim_name)(__isl_take PW *pw,
|
||||
enum isl_dim_type type, unsigned pos, const char *s)
|
||||
@ -1201,7 +1206,6 @@ error:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifndef NO_DROP_DIMS
|
||||
__isl_give PW *FN(PW,drop_dims)(__isl_take PW *pw,
|
||||
enum isl_dim_type type, unsigned first, unsigned n)
|
||||
{
|
||||
@ -1292,7 +1296,28 @@ __isl_give PW *FN(PW,project_domain_on_params)(__isl_take PW *pw)
|
||||
pw = FN(PW,reset_domain_space)(pw, space);
|
||||
return pw;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Drop all parameters not referenced by "pw".
|
||||
*/
|
||||
__isl_give PW *FN(PW,drop_unused_params)(__isl_take PW *pw)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (FN(PW,check_named_params)(pw) < 0)
|
||||
return FN(PW,free)(pw);
|
||||
|
||||
for (i = FN(PW,dim)(pw, isl_dim_param) - 1; i >= 0; i--) {
|
||||
isl_bool involves;
|
||||
|
||||
involves = FN(PW,involves_dims)(pw, isl_dim_param, i, 1);
|
||||
if (involves < 0)
|
||||
return FN(PW,free)(pw);
|
||||
if (!involves)
|
||||
pw = FN(PW,drop_dims)(pw, isl_dim_param, i, 1);
|
||||
}
|
||||
|
||||
return pw;
|
||||
}
|
||||
|
||||
#ifndef NO_INSERT_DIMS
|
||||
__isl_give PW *FN(PW,insert_dims)(__isl_take PW *pw, enum isl_dim_type type,
|
||||
@ -2073,8 +2098,9 @@ static __isl_give PW *FN(PW,align_params_pw_multi_aff_and)(__isl_take PW *pw,
|
||||
return fn(pw, ma);
|
||||
}
|
||||
ctx = FN(PW,get_ctx)(pw);
|
||||
if (!isl_space_has_named_params(pw->dim) ||
|
||||
!isl_space_has_named_params(ma_space))
|
||||
if (FN(PW,check_named_params)(pw) < 0)
|
||||
goto error;
|
||||
if (!isl_space_has_named_params(ma_space))
|
||||
isl_die(ctx, isl_error_invalid,
|
||||
"unaligned unnamed parameters", goto error);
|
||||
pw = FN(PW,align_params)(pw, ma_space);
|
||||
@ -2107,10 +2133,9 @@ static __isl_give PW *FN(PW,align_params_pw_pw_multi_aff_and)(__isl_take PW *pw,
|
||||
return fn(pw, pma);
|
||||
}
|
||||
ctx = FN(PW,get_ctx)(pw);
|
||||
if (!isl_space_has_named_params(pw->dim) ||
|
||||
!isl_space_has_named_params(pma_space))
|
||||
isl_die(ctx, isl_error_invalid,
|
||||
"unaligned unnamed parameters", goto error);
|
||||
if (FN(PW,check_named_params)(pw) < 0 ||
|
||||
isl_pw_multi_aff_check_named_params(pma) < 0)
|
||||
goto error;
|
||||
pw = FN(PW,align_params)(pw, pma_space);
|
||||
pma = isl_pw_multi_aff_align_params(pma, FN(PW,get_space)(pw));
|
||||
return fn(pw, pma);
|
||||
|
2
polly/lib/External/isl/isl_space.c
vendored
2
polly/lib/External/isl/isl_space.c
vendored
@ -2546,7 +2546,7 @@ isl_stat isl_space_check_named_params(__isl_keep isl_space *space)
|
||||
return isl_stat_error;
|
||||
if (!named)
|
||||
isl_die(isl_space_get_ctx(space), isl_error_invalid,
|
||||
"unaligned unnamed parameters", return isl_stat_error);
|
||||
"unexpected unnamed parameters", return isl_stat_error);
|
||||
|
||||
return isl_stat_ok;
|
||||
}
|
||||
|
59
polly/lib/External/isl/isl_test.c
vendored
59
polly/lib/External/isl/isl_test.c
vendored
@ -7168,6 +7168,64 @@ int test_align_parameters(isl_ctx *ctx)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Check that isl_*_drop_unused_params actually drops the unused parameters
|
||||
* by comparing the result using isl_*_plain_is_equal.
|
||||
* Note that this assumes that isl_*_plain_is_equal does not consider
|
||||
* objects that only differ by unused parameters to be equal.
|
||||
*/
|
||||
int test_drop_unused_parameters(isl_ctx *ctx)
|
||||
{
|
||||
const char *str_with, *str_without;
|
||||
isl_basic_set *bset1, *bset2;
|
||||
isl_set *set1, *set2;
|
||||
isl_pw_aff *pwa1, *pwa2;
|
||||
int equal;
|
||||
|
||||
str_with = "[n, m, o] -> { [m] }";
|
||||
str_without = "[m] -> { [m] }";
|
||||
|
||||
bset1 = isl_basic_set_read_from_str(ctx, str_with);
|
||||
bset2 = isl_basic_set_read_from_str(ctx, str_without);
|
||||
bset1 = isl_basic_set_drop_unused_params(bset1);
|
||||
equal = isl_basic_set_plain_is_equal(bset1, bset2);
|
||||
isl_basic_set_free(bset1);
|
||||
isl_basic_set_free(bset2);
|
||||
|
||||
if (equal < 0)
|
||||
return -1;
|
||||
if (!equal)
|
||||
isl_die(ctx, isl_error_unknown,
|
||||
"result not as expected", return -1);
|
||||
|
||||
set1 = isl_set_read_from_str(ctx, str_with);
|
||||
set2 = isl_set_read_from_str(ctx, str_without);
|
||||
set1 = isl_set_drop_unused_params(set1);
|
||||
equal = isl_set_plain_is_equal(set1, set2);
|
||||
isl_set_free(set1);
|
||||
isl_set_free(set2);
|
||||
|
||||
if (equal < 0)
|
||||
return -1;
|
||||
if (!equal)
|
||||
isl_die(ctx, isl_error_unknown,
|
||||
"result not as expected", return -1);
|
||||
|
||||
pwa1 = isl_pw_aff_read_from_str(ctx, str_with);
|
||||
pwa2 = isl_pw_aff_read_from_str(ctx, str_without);
|
||||
pwa1 = isl_pw_aff_drop_unused_params(pwa1);
|
||||
equal = isl_pw_aff_plain_is_equal(pwa1, pwa2);
|
||||
isl_pw_aff_free(pwa1);
|
||||
isl_pw_aff_free(pwa2);
|
||||
|
||||
if (equal < 0)
|
||||
return -1;
|
||||
if (!equal)
|
||||
isl_die(ctx, isl_error_unknown,
|
||||
"result not as expected", return -1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int test_list(isl_ctx *ctx)
|
||||
{
|
||||
isl_id *a, *b, *c, *d, *id;
|
||||
@ -8908,6 +8966,7 @@ struct {
|
||||
{ "conversion", &test_conversion },
|
||||
{ "list", &test_list },
|
||||
{ "align parameters", &test_align_parameters },
|
||||
{ "drop unused parameters", &test_drop_unused_parameters },
|
||||
{ "preimage", &test_preimage },
|
||||
{ "pullback", &test_pullback },
|
||||
{ "AST", &test_ast },
|
||||
|
Loading…
Reference in New Issue
Block a user