update pet for gisting domain of schedule
[ppcg.git] / schedule.c
blob2720c69cbae50039fd89468637ec714c26f30a00
1 /*
2 * Copyright 2010-2011 INRIA Saclay
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
7 * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
8 * 91893 Orsay, France
9 */
11 #include <assert.h>
12 #include <ctype.h>
13 #include <string.h>
15 #include <isl/set.h>
16 #include <isl/map.h>
17 #include <isl/constraint.h>
19 #include "schedule.h"
21 /* Add parameters with identifiers "ids" to "set".
23 static __isl_give isl_set *add_params(__isl_take isl_set *set,
24 __isl_keep isl_id_list *ids)
26 int i, n;
27 unsigned nparam;
29 n = isl_id_list_n_id(ids);
31 nparam = isl_set_dim(set, isl_dim_param);
32 set = isl_set_add_dims(set, isl_dim_param, n);
34 for (i = 0; i < n; ++i) {
35 isl_id *id;
37 id = isl_id_list_get_id(ids, i);
38 set = isl_set_set_dim_id(set, isl_dim_param, nparam + i, id);
41 return set;
44 /* Equate the dimensions of "set" starting at "first" to
45 * freshly created parameters with identifiers "ids".
46 * The number of equated dimensions is equal to the number of elements in "ids".
48 static __isl_give isl_set *parametrize(__isl_take isl_set *set,
49 int first, __isl_keep isl_id_list *ids)
51 int i, n;
52 unsigned nparam;
54 nparam = isl_set_dim(set, isl_dim_param);
56 set = add_params(set, ids);
58 n = isl_id_list_n_id(ids);
59 for (i = 0; i < n; ++i)
60 set = isl_set_equate(set, isl_dim_param, nparam + i,
61 isl_dim_set, first + i);
63 return set;
66 /* Given a parameter space "space", create a set of dimension "len"
67 * of which the dimensions starting at "first" are equated to
68 * freshly created parameters with identifiers "ids".
70 __isl_give isl_set *parametrization(__isl_take isl_space *space,
71 int len, int first, __isl_keep isl_id_list *ids)
73 isl_set *set;
75 space = isl_space_set_from_params(space);
76 space = isl_space_add_dims(space, isl_dim_set, len);
77 set = isl_set_universe(space);
79 return parametrize(set, first, ids);