1*5971e316Smrg /*
2*5971e316Smrg * Use of this software is governed by the MIT license
3*5971e316Smrg *
4*5971e316Smrg * Written by Sven Verdoolaege
5*5971e316Smrg */
6*5971e316Smrg
7*5971e316Smrg #include <isl_multi_macro.h>
8*5971e316Smrg
9*5971e316Smrg /* Does the multiple expression "multi" depend in any way
10*5971e316Smrg * on the parameter with identifier "id"?
11*5971e316Smrg */
FN(MULTI (BASE),involves_param_id)12*5971e316Smrg isl_bool FN(MULTI(BASE),involves_param_id)(__isl_keep MULTI(BASE) *multi,
13*5971e316Smrg __isl_keep isl_id *id)
14*5971e316Smrg {
15*5971e316Smrg int i;
16*5971e316Smrg int pos;
17*5971e316Smrg
18*5971e316Smrg if (!multi || !id)
19*5971e316Smrg return isl_bool_error;
20*5971e316Smrg if (multi->n == 0)
21*5971e316Smrg return isl_bool_false;
22*5971e316Smrg pos = FN(MULTI(BASE),find_dim_by_id)(multi, isl_dim_param, id);
23*5971e316Smrg if (pos < 0)
24*5971e316Smrg return isl_bool_false;
25*5971e316Smrg
26*5971e316Smrg for (i = 0; i < multi->n; ++i) {
27*5971e316Smrg isl_bool involved = FN(EL,involves_param_id)(multi->u.p[i], id);
28*5971e316Smrg if (involved < 0 || involved)
29*5971e316Smrg return involved;
30*5971e316Smrg }
31*5971e316Smrg
32*5971e316Smrg return isl_bool_false;
33*5971e316Smrg }
34*5971e316Smrg
35*5971e316Smrg /* Does the multiple expression "multi" depend in any way
36*5971e316Smrg * on any of the parameters with identifiers in "list"?
37*5971e316Smrg */
FN(MULTI (BASE),involves_param_id_list)38*5971e316Smrg isl_bool FN(MULTI(BASE),involves_param_id_list)(__isl_keep MULTI(BASE) *multi,
39*5971e316Smrg __isl_keep isl_id_list *list)
40*5971e316Smrg {
41*5971e316Smrg int i;
42*5971e316Smrg isl_size n;
43*5971e316Smrg
44*5971e316Smrg n = isl_id_list_size(list);
45*5971e316Smrg if (n < 0)
46*5971e316Smrg return isl_bool_error;
47*5971e316Smrg for (i = 0; i < n; ++i) {
48*5971e316Smrg isl_bool involves;
49*5971e316Smrg isl_id *id;
50*5971e316Smrg
51*5971e316Smrg id = isl_id_list_get_at(list, i);
52*5971e316Smrg involves = FN(MULTI(BASE),involves_param_id)(multi, id);
53*5971e316Smrg isl_id_free(id);
54*5971e316Smrg
55*5971e316Smrg if (involves < 0 || involves)
56*5971e316Smrg return involves;
57*5971e316Smrg }
58*5971e316Smrg
59*5971e316Smrg return isl_bool_false;
60*5971e316Smrg }
61