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