X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_ilp.c;h=e6bc62429a7159c63559fb3c471b41221afe04c2;hb=d350307fe98fe793fbec84f9228ff7d9722259fc;hp=abfac265ace6bd6a67b34bc3e2ebf726206a6b81;hpb=0d458c47aefdc037512282a3250de99d9d24b8c9;p=platform%2Fupstream%2Fisl.git diff --git a/isl_ilp.c b/isl_ilp.c index abfac26..e6bc624 100644 --- a/isl_ilp.c +++ b/isl_ilp.c @@ -1,7 +1,7 @@ /* * Copyright 2008-2009 Katholieke Universiteit Leuven * - * Use of this software is governed by the GNU LGPLv2.1 license + * Use of this software is governed by the MIT license * * Written by Sven Verdoolaege, K.U.Leuven, Departement * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium @@ -427,8 +427,10 @@ error: /* Compute the minimum (maximum if max is set) of the integer affine * expression obj over the points in set and put the result in *opt. + * + * The parameters are assumed to have been aligned. */ -enum isl_lp_result isl_set_opt(__isl_keep isl_set *set, int max, +static enum isl_lp_result isl_set_opt_aligned(__isl_keep isl_set *set, int max, __isl_keep isl_aff *obj, isl_int *opt) { int i; @@ -466,6 +468,34 @@ enum isl_lp_result isl_set_opt(__isl_keep isl_set *set, int max, return empty ? isl_lp_empty : isl_lp_ok; } +/* Compute the minimum (maximum if max is set) of the integer affine + * expression obj over the points in set and put the result in *opt. + */ +enum isl_lp_result isl_set_opt(__isl_keep isl_set *set, int max, + __isl_keep isl_aff *obj, isl_int *opt) +{ + enum isl_lp_result res; + + if (!set || !obj) + return isl_lp_error; + + if (isl_space_match(set->dim, isl_dim_param, + obj->ls->dim, isl_dim_param)) + return isl_set_opt_aligned(set, max, obj, opt); + + set = isl_set_copy(set); + obj = isl_aff_copy(obj); + set = isl_set_align_params(set, isl_aff_get_domain_space(obj)); + obj = isl_aff_align_params(obj, isl_set_get_space(set)); + + res = isl_set_opt_aligned(set, max, obj, opt); + + isl_set_free(set); + isl_aff_free(obj); + + return res; +} + enum isl_lp_result isl_basic_set_max(__isl_keep isl_basic_set *bset, __isl_keep isl_aff *obj, isl_int *opt) {