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