1 #ifndef ISL_AFF_H 2 #define ISL_AFF_H 3 4 #include <isl/local_space.h> 5 #include <isl/printer.h> 6 #include <isl/set_type.h> 7 #include <isl/aff_type.h> 8 #include <isl/list.h> 9 #include <isl/multi.h> 10 #include <isl/union_set_type.h> 11 12 #if defined(__cplusplus) 13 extern "C" { 14 #endif 15 16 __isl_give isl_aff *isl_aff_zero_on_domain(__isl_take isl_local_space *ls); 17 __isl_give isl_aff *isl_aff_var_on_domain(__isl_take isl_local_space *ls, 18 enum isl_dim_type type, unsigned pos); 19 20 __isl_give isl_aff *isl_aff_copy(__isl_keep isl_aff *aff); 21 void *isl_aff_free(__isl_take isl_aff *aff); 22 23 isl_ctx *isl_aff_get_ctx(__isl_keep isl_aff *aff); 24 25 int isl_aff_dim(__isl_keep isl_aff *aff, enum isl_dim_type type); 26 int isl_aff_involves_dims(__isl_keep isl_aff *aff, 27 enum isl_dim_type type, unsigned first, unsigned n); 28 29 __isl_give isl_space *isl_aff_get_domain_space(__isl_keep isl_aff *aff); 30 __isl_give isl_space *isl_aff_get_space(__isl_keep isl_aff *aff); 31 __isl_give isl_local_space *isl_aff_get_domain_local_space( 32 __isl_keep isl_aff *aff); 33 __isl_give isl_local_space *isl_aff_get_local_space(__isl_keep isl_aff *aff); 34 35 const char *isl_aff_get_dim_name(__isl_keep isl_aff *aff, 36 enum isl_dim_type type, unsigned pos); 37 int isl_aff_get_constant(__isl_keep isl_aff *aff, isl_int *v); 38 int isl_aff_get_coefficient(__isl_keep isl_aff *aff, 39 enum isl_dim_type type, int pos, isl_int *v); 40 int isl_aff_get_denominator(__isl_keep isl_aff *aff, isl_int *v); 41 __isl_give isl_aff *isl_aff_set_constant(__isl_take isl_aff *aff, isl_int v); 42 __isl_give isl_aff *isl_aff_set_constant_si(__isl_take isl_aff *aff, int v); 43 __isl_give isl_aff *isl_aff_set_coefficient(__isl_take isl_aff *aff, 44 enum isl_dim_type type, int pos, isl_int v); 45 __isl_give isl_aff *isl_aff_set_coefficient_si(__isl_take isl_aff *aff, 46 enum isl_dim_type type, int pos, int v); 47 __isl_give isl_aff *isl_aff_set_denominator(__isl_take isl_aff *aff, isl_int v); 48 __isl_give isl_aff *isl_aff_add_constant(__isl_take isl_aff *aff, isl_int v); 49 __isl_give isl_aff *isl_aff_add_constant_si(__isl_take isl_aff *aff, int v); 50 __isl_give isl_aff *isl_aff_add_constant_num(__isl_take isl_aff *aff, 51 isl_int v); 52 __isl_give isl_aff *isl_aff_add_constant_num_si(__isl_take isl_aff *aff, int v); 53 __isl_give isl_aff *isl_aff_add_coefficient(__isl_take isl_aff *aff, 54 enum isl_dim_type type, int pos, isl_int v); 55 __isl_give isl_aff *isl_aff_add_coefficient_si(__isl_take isl_aff *aff, 56 enum isl_dim_type type, int pos, int v); 57 58 int isl_aff_is_cst(__isl_keep isl_aff *aff); 59 60 __isl_give isl_aff *isl_aff_set_dim_name(__isl_take isl_aff *aff, 61 enum isl_dim_type type, unsigned pos, const char *s); 62 __isl_give isl_aff *isl_aff_set_dim_id(__isl_take isl_aff *aff, 63 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 64 65 int isl_aff_plain_is_equal(__isl_keep isl_aff *aff1, __isl_keep isl_aff *aff2); 66 int isl_aff_plain_is_zero(__isl_keep isl_aff *aff); 67 68 __isl_give isl_aff *isl_aff_get_div(__isl_keep isl_aff *aff, int pos); 69 70 __isl_give isl_aff *isl_aff_neg(__isl_take isl_aff *aff); 71 __isl_give isl_aff *isl_aff_ceil(__isl_take isl_aff *aff); 72 __isl_give isl_aff *isl_aff_floor(__isl_take isl_aff *aff); 73 __isl_give isl_aff *isl_aff_mod(__isl_take isl_aff *aff, isl_int mod); 74 75 __isl_give isl_aff *isl_aff_mul(__isl_take isl_aff *aff1, 76 __isl_take isl_aff *aff2); 77 __isl_give isl_aff *isl_aff_div(__isl_take isl_aff *aff1, 78 __isl_take isl_aff *aff2); 79 __isl_give isl_aff *isl_aff_add(__isl_take isl_aff *aff1, 80 __isl_take isl_aff *aff2); 81 __isl_give isl_aff *isl_aff_sub(__isl_take isl_aff *aff1, 82 __isl_take isl_aff *aff2); 83 84 __isl_give isl_aff *isl_aff_scale(__isl_take isl_aff *aff, isl_int f); 85 __isl_give isl_aff *isl_aff_scale_down(__isl_take isl_aff *aff, isl_int f); 86 __isl_give isl_aff *isl_aff_scale_down_ui(__isl_take isl_aff *aff, unsigned f); 87 88 __isl_give isl_aff *isl_aff_insert_dims(__isl_take isl_aff *aff, 89 enum isl_dim_type type, unsigned first, unsigned n); 90 __isl_give isl_aff *isl_aff_add_dims(__isl_take isl_aff *aff, 91 enum isl_dim_type type, unsigned n); 92 __isl_give isl_aff *isl_aff_drop_dims(__isl_take isl_aff *aff, 93 enum isl_dim_type type, unsigned first, unsigned n); 94 __isl_give isl_aff *isl_aff_project_domain_on_params(__isl_take isl_aff *aff); 95 96 __isl_give isl_aff *isl_aff_align_params(__isl_take isl_aff *aff, 97 __isl_take isl_space *model); 98 99 __isl_give isl_aff *isl_aff_gist(__isl_take isl_aff *aff, 100 __isl_take isl_set *context); 101 __isl_give isl_aff *isl_aff_gist_params(__isl_take isl_aff *aff, 102 __isl_take isl_set *context); 103 104 __isl_give isl_aff *isl_aff_pullback_multi_aff(__isl_take isl_aff *aff, 105 __isl_take isl_multi_aff *ma); 106 107 __isl_give isl_basic_set *isl_aff_zero_basic_set(__isl_take isl_aff *aff); 108 __isl_give isl_basic_set *isl_aff_neg_basic_set(__isl_take isl_aff *aff); 109 110 __isl_give isl_basic_set *isl_aff_le_basic_set(__isl_take isl_aff *aff1, 111 __isl_take isl_aff *aff2); 112 __isl_give isl_basic_set *isl_aff_ge_basic_set(__isl_take isl_aff *aff1, 113 __isl_take isl_aff *aff2); 114 115 __isl_give isl_aff *isl_aff_read_from_str(isl_ctx *ctx, const char *str); 116 __isl_give isl_printer *isl_printer_print_aff(__isl_take isl_printer *p, 117 __isl_keep isl_aff *aff); 118 void isl_aff_dump(__isl_keep isl_aff *aff); 119 120 isl_ctx *isl_pw_aff_get_ctx(__isl_keep isl_pw_aff *pwaff); 121 __isl_give isl_space *isl_pw_aff_get_domain_space(__isl_keep isl_pw_aff *pwaff); 122 __isl_give isl_space *isl_pw_aff_get_space(__isl_keep isl_pw_aff *pwaff); 123 124 __isl_give isl_pw_aff *isl_pw_aff_from_aff(__isl_take isl_aff *aff); 125 __isl_give isl_pw_aff *isl_pw_aff_empty(__isl_take isl_space *dim); 126 __isl_give isl_pw_aff *isl_pw_aff_alloc(__isl_take isl_set *set, 127 __isl_take isl_aff *aff); 128 __isl_give isl_pw_aff *isl_pw_aff_zero_on_domain( 129 __isl_take isl_local_space *ls); 130 __isl_give isl_pw_aff *isl_pw_aff_var_on_domain(__isl_take isl_local_space *ls, 131 enum isl_dim_type type, unsigned pos); 132 133 __isl_give isl_pw_aff *isl_set_indicator_function(__isl_take isl_set *set); 134 135 const char *isl_pw_aff_get_dim_name(__isl_keep isl_pw_aff *pa, 136 enum isl_dim_type type, unsigned pos); 137 int isl_pw_aff_has_dim_id(__isl_keep isl_pw_aff *pa, 138 enum isl_dim_type type, unsigned pos); 139 __isl_give isl_id *isl_pw_aff_get_dim_id(__isl_keep isl_pw_aff *pa, 140 enum isl_dim_type type, unsigned pos); 141 __isl_give isl_pw_aff *isl_pw_aff_set_dim_id(__isl_take isl_pw_aff *pma, 142 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 143 144 int isl_pw_aff_is_empty(__isl_keep isl_pw_aff *pwaff); 145 int isl_pw_aff_plain_is_equal(__isl_keep isl_pw_aff *pwaff1, 146 __isl_keep isl_pw_aff *pwaff2); 147 148 __isl_give isl_pw_aff *isl_pw_aff_union_min(__isl_take isl_pw_aff *pwaff1, 149 __isl_take isl_pw_aff *pwaff2); 150 __isl_give isl_pw_aff *isl_pw_aff_union_max(__isl_take isl_pw_aff *pwaff1, 151 __isl_take isl_pw_aff *pwaff2); 152 __isl_give isl_pw_aff *isl_pw_aff_union_add(__isl_take isl_pw_aff *pwaff1, 153 __isl_take isl_pw_aff *pwaff2); 154 155 __isl_give isl_pw_aff *isl_pw_aff_copy(__isl_keep isl_pw_aff *pwaff); 156 void *isl_pw_aff_free(__isl_take isl_pw_aff *pwaff); 157 158 unsigned isl_pw_aff_dim(__isl_keep isl_pw_aff *pwaff, enum isl_dim_type type); 159 int isl_pw_aff_involves_dims(__isl_keep isl_pw_aff *pwaff, 160 enum isl_dim_type type, unsigned first, unsigned n); 161 162 int isl_pw_aff_is_cst(__isl_keep isl_pw_aff *pwaff); 163 164 __isl_give isl_pw_aff *isl_pw_aff_align_params(__isl_take isl_pw_aff *pwaff, 165 __isl_take isl_space *model); 166 167 __isl_give isl_id *isl_pw_aff_get_tuple_id(__isl_keep isl_pw_aff *pa, 168 enum isl_dim_type type); 169 __isl_give isl_pw_aff *isl_pw_aff_set_tuple_id(__isl_take isl_pw_aff *pwaff, 170 enum isl_dim_type type, __isl_take isl_id *id); 171 172 __isl_give isl_set *isl_pw_aff_domain(__isl_take isl_pw_aff *pwaff); 173 174 __isl_give isl_pw_aff *isl_pw_aff_min(__isl_take isl_pw_aff *pwaff1, 175 __isl_take isl_pw_aff *pwaff2); 176 __isl_give isl_pw_aff *isl_pw_aff_max(__isl_take isl_pw_aff *pwaff1, 177 __isl_take isl_pw_aff *pwaff2); 178 __isl_give isl_pw_aff *isl_pw_aff_mul(__isl_take isl_pw_aff *pwaff1, 179 __isl_take isl_pw_aff *pwaff2); 180 __isl_give isl_pw_aff *isl_pw_aff_div(__isl_take isl_pw_aff *pa1, 181 __isl_take isl_pw_aff *pa2); 182 __isl_give isl_pw_aff *isl_pw_aff_add(__isl_take isl_pw_aff *pwaff1, 183 __isl_take isl_pw_aff *pwaff2); 184 __isl_give isl_pw_aff *isl_pw_aff_sub(__isl_take isl_pw_aff *pwaff1, 185 __isl_take isl_pw_aff *pwaff2); 186 __isl_give isl_pw_aff *isl_pw_aff_neg(__isl_take isl_pw_aff *pwaff); 187 __isl_give isl_pw_aff *isl_pw_aff_ceil(__isl_take isl_pw_aff *pwaff); 188 __isl_give isl_pw_aff *isl_pw_aff_floor(__isl_take isl_pw_aff *pwaff); 189 __isl_give isl_pw_aff *isl_pw_aff_mod(__isl_take isl_pw_aff *pwaff, 190 isl_int mod); 191 __isl_give isl_pw_aff *isl_pw_aff_tdiv_q(__isl_take isl_pw_aff *pa1, 192 __isl_take isl_pw_aff *pa2); 193 __isl_give isl_pw_aff *isl_pw_aff_tdiv_r(__isl_take isl_pw_aff *pa1, 194 __isl_take isl_pw_aff *pa2); 195 196 __isl_give isl_pw_aff *isl_pw_aff_intersect_params(__isl_take isl_pw_aff *pa, 197 __isl_take isl_set *set); 198 __isl_give isl_pw_aff *isl_pw_aff_intersect_domain(__isl_take isl_pw_aff *pa, 199 __isl_take isl_set *set); 200 201 __isl_give isl_pw_aff *isl_pw_aff_cond(__isl_take isl_pw_aff *cond, 202 __isl_take isl_pw_aff *pwaff_true, __isl_take isl_pw_aff *pwaff_false); 203 204 __isl_give isl_pw_aff *isl_pw_aff_scale(__isl_take isl_pw_aff *pwaff, 205 isl_int f); 206 __isl_give isl_pw_aff *isl_pw_aff_scale_down(__isl_take isl_pw_aff *pwaff, 207 isl_int f); 208 209 __isl_give isl_pw_aff *isl_pw_aff_insert_dims(__isl_take isl_pw_aff *pwaff, 210 enum isl_dim_type type, unsigned first, unsigned n); 211 __isl_give isl_pw_aff *isl_pw_aff_add_dims(__isl_take isl_pw_aff *pwaff, 212 enum isl_dim_type type, unsigned n); 213 __isl_give isl_pw_aff *isl_pw_aff_drop_dims(__isl_take isl_pw_aff *pwaff, 214 enum isl_dim_type type, unsigned first, unsigned n); 215 216 __isl_give isl_pw_aff *isl_pw_aff_coalesce(__isl_take isl_pw_aff *pwqp); 217 __isl_give isl_pw_aff *isl_pw_aff_gist(__isl_take isl_pw_aff *pwaff, 218 __isl_take isl_set *context); 219 __isl_give isl_pw_aff *isl_pw_aff_gist_params(__isl_take isl_pw_aff *pwaff, 220 __isl_take isl_set *context); 221 222 __isl_give isl_pw_aff *isl_pw_aff_pullback_multi_aff( 223 __isl_take isl_pw_aff *pa, __isl_take isl_multi_aff *ma); 224 __isl_give isl_pw_aff *isl_pw_aff_pullback_pw_multi_aff( 225 __isl_take isl_pw_aff *pa, __isl_take isl_pw_multi_aff *pma); 226 227 int isl_pw_aff_n_piece(__isl_keep isl_pw_aff *pwaff); 228 int isl_pw_aff_foreach_piece(__isl_keep isl_pw_aff *pwaff, 229 int (*fn)(__isl_take isl_set *set, __isl_take isl_aff *aff, 230 void *user), void *user); 231 232 __isl_give isl_set *isl_set_from_pw_aff(__isl_take isl_pw_aff *pwaff); 233 __isl_give isl_map *isl_map_from_pw_aff(__isl_take isl_pw_aff *pwaff); 234 235 __isl_give isl_set *isl_pw_aff_nonneg_set(__isl_take isl_pw_aff *pwaff); 236 __isl_give isl_set *isl_pw_aff_zero_set(__isl_take isl_pw_aff *pwaff); 237 __isl_give isl_set *isl_pw_aff_non_zero_set(__isl_take isl_pw_aff *pwaff); 238 239 __isl_give isl_set *isl_pw_aff_eq_set(__isl_take isl_pw_aff *pwaff1, 240 __isl_take isl_pw_aff *pwaff2); 241 __isl_give isl_set *isl_pw_aff_ne_set(__isl_take isl_pw_aff *pwaff1, 242 __isl_take isl_pw_aff *pwaff2); 243 __isl_give isl_set *isl_pw_aff_le_set(__isl_take isl_pw_aff *pwaff1, 244 __isl_take isl_pw_aff *pwaff2); 245 __isl_give isl_set *isl_pw_aff_lt_set(__isl_take isl_pw_aff *pwaff1, 246 __isl_take isl_pw_aff *pwaff2); 247 __isl_give isl_set *isl_pw_aff_ge_set(__isl_take isl_pw_aff *pwaff1, 248 __isl_take isl_pw_aff *pwaff2); 249 __isl_give isl_set *isl_pw_aff_gt_set(__isl_take isl_pw_aff *pwaff1, 250 __isl_take isl_pw_aff *pwaff2); 251 252 __isl_give isl_pw_aff *isl_pw_aff_read_from_str(isl_ctx *ctx, const char *str); 253 __isl_give isl_printer *isl_printer_print_pw_aff(__isl_take isl_printer *p, 254 __isl_keep isl_pw_aff *pwaff); 255 void isl_pw_aff_dump(__isl_keep isl_pw_aff *pwaff); 256 257 __isl_give isl_pw_aff *isl_pw_aff_list_min(__isl_take isl_pw_aff_list *list); 258 __isl_give isl_pw_aff *isl_pw_aff_list_max(__isl_take isl_pw_aff_list *list); 259 260 __isl_give isl_set *isl_pw_aff_list_eq_set(__isl_take isl_pw_aff_list *list1, 261 __isl_take isl_pw_aff_list *list2); 262 __isl_give isl_set *isl_pw_aff_list_ne_set(__isl_take isl_pw_aff_list *list1, 263 __isl_take isl_pw_aff_list *list2); 264 __isl_give isl_set *isl_pw_aff_list_le_set(__isl_take isl_pw_aff_list *list1, 265 __isl_take isl_pw_aff_list *list2); 266 __isl_give isl_set *isl_pw_aff_list_lt_set(__isl_take isl_pw_aff_list *list1, 267 __isl_take isl_pw_aff_list *list2); 268 __isl_give isl_set *isl_pw_aff_list_ge_set(__isl_take isl_pw_aff_list *list1, 269 __isl_take isl_pw_aff_list *list2); 270 __isl_give isl_set *isl_pw_aff_list_gt_set(__isl_take isl_pw_aff_list *list1, 271 __isl_take isl_pw_aff_list *list2); 272 273 __isl_give isl_multi_aff *isl_multi_aff_from_aff(__isl_take isl_aff *aff); 274 __isl_give isl_multi_aff *isl_multi_aff_zero(__isl_take isl_space *space); 275 __isl_give isl_multi_aff *isl_multi_aff_identity(__isl_take isl_space *space); 276 277 isl_ctx *isl_multi_aff_get_ctx(__isl_keep isl_multi_aff *maff); 278 __isl_give isl_space *isl_multi_aff_get_space(__isl_keep isl_multi_aff *maff); 279 __isl_give isl_space *isl_multi_aff_get_domain_space( 280 __isl_keep isl_multi_aff *maff); 281 __isl_give isl_multi_aff *isl_multi_aff_set_tuple_name( 282 __isl_take isl_multi_aff *maff, 283 enum isl_dim_type type, const char *s); 284 __isl_give isl_multi_aff *isl_multi_aff_set_tuple_id( 285 __isl_take isl_multi_aff *maff, 286 enum isl_dim_type type, __isl_take isl_id *id); 287 __isl_give isl_multi_aff *isl_multi_aff_copy(__isl_keep isl_multi_aff *maff); 288 void *isl_multi_aff_free(__isl_take isl_multi_aff *maff); 289 290 unsigned isl_multi_aff_dim(__isl_keep isl_multi_aff *maff, 291 enum isl_dim_type type); 292 __isl_give isl_aff *isl_multi_aff_get_aff(__isl_keep isl_multi_aff *multi, 293 int pos); 294 295 __isl_give isl_multi_aff *isl_multi_aff_insert_dims( 296 __isl_take isl_multi_aff *ma, 297 enum isl_dim_type type, unsigned first, unsigned n); 298 __isl_give isl_multi_aff *isl_multi_aff_add_dims(__isl_take isl_multi_aff *ma, 299 enum isl_dim_type type, unsigned n); 300 __isl_give isl_multi_aff *isl_multi_aff_drop_dims( 301 __isl_take isl_multi_aff *maff, 302 enum isl_dim_type type, unsigned first, unsigned n); 303 304 __isl_give isl_multi_aff *isl_multi_aff_set_dim_name( 305 __isl_take isl_multi_aff *maff, 306 enum isl_dim_type type, unsigned pos, const char *s); 307 308 int isl_multi_aff_plain_is_equal(__isl_keep isl_multi_aff *maff1, 309 __isl_keep isl_multi_aff *maff2); 310 311 __isl_give isl_multi_aff *isl_multi_aff_add(__isl_take isl_multi_aff *maff1, 312 __isl_take isl_multi_aff *maff2); 313 314 __isl_give isl_multi_aff *isl_multi_aff_scale(__isl_take isl_multi_aff *maff, 315 isl_int f); 316 317 __isl_give isl_multi_aff *isl_multi_aff_range_splice( 318 __isl_take isl_multi_aff *ma1, unsigned pos, 319 __isl_take isl_multi_aff *ma2); 320 __isl_give isl_multi_aff *isl_multi_aff_splice( 321 __isl_take isl_multi_aff *ma1, unsigned in_pos, unsigned out_pos, 322 __isl_take isl_multi_aff *ma2); 323 __isl_give isl_multi_aff *isl_multi_aff_range_product( 324 __isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2); 325 __isl_give isl_multi_aff *isl_multi_aff_flat_range_product( 326 __isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2); 327 __isl_give isl_multi_aff *isl_multi_aff_product( 328 __isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2); 329 330 __isl_give isl_multi_aff *isl_multi_aff_align_params( 331 __isl_take isl_multi_aff *multi, __isl_take isl_space *model); 332 333 __isl_give isl_multi_aff *isl_multi_aff_gist_params( 334 __isl_take isl_multi_aff *maff, __isl_take isl_set *context); 335 __isl_give isl_multi_aff *isl_multi_aff_gist(__isl_take isl_multi_aff *maff, 336 __isl_take isl_set *context); 337 338 __isl_give isl_multi_aff *isl_multi_aff_lift(__isl_take isl_multi_aff *maff, 339 __isl_give isl_local_space **ls); 340 341 __isl_give isl_multi_aff *isl_multi_aff_pullback_multi_aff( 342 __isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2); 343 344 __isl_give isl_set *isl_multi_aff_lex_le_set(__isl_take isl_multi_aff *ma1, 345 __isl_take isl_multi_aff *ma2); 346 __isl_give isl_set *isl_multi_aff_lex_ge_set(__isl_take isl_multi_aff *ma1, 347 __isl_take isl_multi_aff *ma2); 348 349 __isl_give isl_printer *isl_printer_print_multi_aff(__isl_take isl_printer *p, 350 __isl_keep isl_multi_aff *maff); 351 352 __isl_give isl_multi_aff *isl_multi_aff_read_from_str(isl_ctx *ctx, 353 const char *str); 354 void isl_multi_aff_dump(__isl_keep isl_multi_aff *maff); 355 356 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity( 357 __isl_take isl_space *space); 358 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_multi_aff( 359 __isl_take isl_multi_aff *ma); 360 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_alloc(__isl_take isl_set *set, 361 __isl_take isl_multi_aff *maff); 362 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_copy( 363 __isl_keep isl_pw_multi_aff *pma); 364 void *isl_pw_multi_aff_free(__isl_take isl_pw_multi_aff *pma); 365 366 unsigned isl_pw_multi_aff_dim(__isl_keep isl_pw_multi_aff *pma, 367 enum isl_dim_type type); 368 __isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff( 369 __isl_keep isl_pw_multi_aff *pma, int pos); 370 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_pw_aff( 371 __isl_take isl_pw_multi_aff *pma, unsigned pos, 372 __isl_take isl_pw_aff *pa); 373 374 isl_ctx *isl_pw_multi_aff_get_ctx(__isl_keep isl_pw_multi_aff *pma); 375 __isl_give isl_space *isl_pw_multi_aff_get_domain_space( 376 __isl_keep isl_pw_multi_aff *pma); 377 __isl_give isl_space *isl_pw_multi_aff_get_space( 378 __isl_keep isl_pw_multi_aff *pma); 379 int isl_pw_multi_aff_has_tuple_name(__isl_keep isl_pw_multi_aff *pma, 380 enum isl_dim_type type); 381 const char *isl_pw_multi_aff_get_tuple_name(__isl_keep isl_pw_multi_aff *pma, 382 enum isl_dim_type type); 383 __isl_give isl_id *isl_pw_multi_aff_get_tuple_id( 384 __isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type); 385 int isl_pw_multi_aff_has_tuple_id(__isl_keep isl_pw_multi_aff *pma, 386 enum isl_dim_type type); 387 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_tuple_id( 388 __isl_take isl_pw_multi_aff *pma, 389 enum isl_dim_type type, __isl_take isl_id *id); 390 391 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_drop_dims( 392 __isl_take isl_pw_multi_aff *pma, 393 enum isl_dim_type type, unsigned first, unsigned n); 394 395 __isl_give isl_set *isl_pw_multi_aff_domain(__isl_take isl_pw_multi_aff *pma); 396 397 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_empty(__isl_take isl_space *space); 398 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_domain( 399 __isl_take isl_set *set); 400 401 const char *isl_pw_multi_aff_get_dim_name(__isl_keep isl_pw_multi_aff *pma, 402 enum isl_dim_type type, unsigned pos); 403 __isl_give isl_id *isl_pw_multi_aff_get_dim_id( 404 __isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type, 405 unsigned pos); 406 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_dim_id( 407 __isl_take isl_pw_multi_aff *pma, 408 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 409 410 int isl_pw_multi_aff_plain_is_equal(__isl_keep isl_pw_multi_aff *pma1, 411 __isl_keep isl_pw_multi_aff *pma2); 412 413 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_add( 414 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 415 416 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add( 417 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 418 419 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmin( 420 __isl_take isl_pw_multi_aff *pma1, 421 __isl_take isl_pw_multi_aff *pma2); 422 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmax( 423 __isl_take isl_pw_multi_aff *pma1, 424 __isl_take isl_pw_multi_aff *pma2); 425 426 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_product( 427 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 428 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_flat_range_product( 429 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 430 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_product( 431 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 432 433 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_params( 434 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 435 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain( 436 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 437 438 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_domain_on_params( 439 __isl_take isl_pw_multi_aff *pma); 440 441 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_align_params( 442 __isl_take isl_pw_multi_aff *pma, __isl_take isl_space *model); 443 444 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_coalesce( 445 __isl_take isl_pw_multi_aff *pma); 446 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist_params( 447 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 448 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist( 449 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 450 451 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_pullback_multi_aff( 452 __isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_aff *ma); 453 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_pullback_pw_multi_aff( 454 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 455 456 int isl_pw_multi_aff_foreach_piece(__isl_keep isl_pw_multi_aff *pma, 457 int (*fn)(__isl_take isl_set *set, __isl_take isl_multi_aff *maff, 458 void *user), void *user); 459 460 __isl_give isl_map *isl_map_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma); 461 __isl_give isl_set *isl_set_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma); 462 463 __isl_give isl_printer *isl_printer_print_pw_multi_aff(__isl_take isl_printer *p, 464 __isl_keep isl_pw_multi_aff *pma); 465 466 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_set(__isl_take isl_set *set); 467 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_map(__isl_take isl_map *map); 468 469 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_read_from_str(isl_ctx *ctx, 470 const char *str); 471 void isl_pw_multi_aff_dump(__isl_keep isl_pw_multi_aff *pma); 472 473 474 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_empty( 475 __isl_take isl_space *space); 476 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_domain( 477 __isl_take isl_union_set *uset); 478 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_copy( 479 __isl_keep isl_union_pw_multi_aff *upma); 480 void *isl_union_pw_multi_aff_free(__isl_take isl_union_pw_multi_aff *upma); 481 482 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_add_pw_multi_aff( 483 __isl_take isl_union_pw_multi_aff *upma, 484 __isl_take isl_pw_multi_aff *pma); 485 486 isl_ctx *isl_union_pw_multi_aff_get_ctx( 487 __isl_keep isl_union_pw_multi_aff *upma); 488 __isl_give isl_space *isl_union_pw_multi_aff_get_space( 489 __isl_keep isl_union_pw_multi_aff *upma); 490 491 int isl_union_pw_multi_aff_foreach_pw_multi_aff( 492 __isl_keep isl_union_pw_multi_aff *upma, 493 int (*fn)(__isl_take isl_pw_multi_aff *pma, void *user), void *user); 494 495 __isl_give isl_union_set *isl_union_pw_multi_aff_domain( 496 __isl_take isl_union_pw_multi_aff *upma); 497 498 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_add( 499 __isl_take isl_union_pw_multi_aff *upma1, 500 __isl_take isl_union_pw_multi_aff *upma2); 501 502 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_flat_range_product( 503 __isl_take isl_union_pw_multi_aff *upma1, 504 __isl_take isl_union_pw_multi_aff *upma2); 505 506 __isl_give isl_union_map *isl_union_map_from_union_pw_multi_aff( 507 __isl_take isl_union_pw_multi_aff *upma); 508 509 __isl_give isl_printer *isl_printer_print_union_pw_multi_aff( 510 __isl_take isl_printer *p, __isl_keep isl_union_pw_multi_aff *upma); 511 512 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_zero(__isl_take isl_space *space); 513 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_identity( 514 __isl_take isl_space *space); 515 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_aff( 516 __isl_take isl_pw_aff *pa); 517 518 isl_ctx *isl_multi_pw_aff_get_ctx(__isl_keep isl_multi_pw_aff *mpa); 519 __isl_give isl_space *isl_multi_pw_aff_get_space( 520 __isl_keep isl_multi_pw_aff *mpa); 521 __isl_give isl_space *isl_multi_pw_aff_get_domain_space( 522 __isl_keep isl_multi_pw_aff *mpa); 523 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_set_tuple_name( 524 __isl_take isl_multi_pw_aff *mpa, 525 enum isl_dim_type type, const char *s); 526 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_copy( 527 __isl_keep isl_multi_pw_aff *mpa); 528 void *isl_multi_pw_aff_free(__isl_take isl_multi_pw_aff *mpa); 529 530 unsigned isl_multi_pw_aff_dim(__isl_keep isl_multi_pw_aff *mpa, 531 enum isl_dim_type type); 532 __isl_give isl_pw_aff *isl_multi_pw_aff_get_pw_aff( 533 __isl_keep isl_multi_pw_aff *mpa, int pos); 534 535 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_insert_dims( 536 __isl_take isl_multi_pw_aff *mpa, 537 enum isl_dim_type type, unsigned first, unsigned n); 538 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_add_dims( 539 __isl_take isl_multi_pw_aff *mpa, enum isl_dim_type type, unsigned n); 540 541 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_set_dim_name( 542 __isl_take isl_multi_pw_aff *mpa, 543 enum isl_dim_type type, unsigned pos, const char *s); 544 545 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_range_splice( 546 __isl_take isl_multi_pw_aff *mpa1, unsigned pos, 547 __isl_take isl_multi_pw_aff *mpa2); 548 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_splice( 549 __isl_take isl_multi_pw_aff *mpa1, unsigned in_pos, unsigned out_pos, 550 __isl_take isl_multi_pw_aff *mpa2); 551 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_flat_range_product( 552 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 553 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_range_product( 554 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 555 556 __isl_give isl_printer *isl_printer_print_multi_pw_aff( 557 __isl_take isl_printer *p, __isl_keep isl_multi_pw_aff *mpa); 558 void isl_multi_pw_aff_dump(__isl_keep isl_multi_pw_aff *mpa); 559 560 #if defined(__cplusplus) 561 } 562 #endif 563 564 #include <isl/dim.h> 565 566 #endif 567