1 #ifndef ISL_AFF_H 2 #define ISL_AFF_H 3 4 #include <isl/stdint.h> 5 #include <isl/local_space.h> 6 #include <isl/printer.h> 7 #include <isl/id_type.h> 8 #include <isl/set_type.h> 9 #include <isl/aff_type.h> 10 #include <isl/list.h> 11 #include <isl/multi.h> 12 #include <isl/union_set_type.h> 13 #include <isl/val_type.h> 14 #include <isl/point.h> 15 16 #if defined(__cplusplus) 17 extern "C" { 18 #endif 19 20 __isl_overload 21 __isl_give isl_aff *isl_aff_zero_on_domain_space(__isl_take isl_space *space); 22 __isl_export 23 __isl_give isl_aff *isl_space_zero_aff_on_domain(__isl_take isl_space *space); 24 __isl_give isl_aff *isl_aff_zero_on_domain(__isl_take isl_local_space *ls); 25 __isl_give isl_aff *isl_aff_val_on_domain_space(__isl_take isl_space *space, 26 __isl_take isl_val *val); 27 __isl_give isl_aff *isl_aff_val_on_domain(__isl_take isl_local_space *ls, 28 __isl_take isl_val *val); 29 __isl_give isl_aff *isl_aff_var_on_domain(__isl_take isl_local_space *ls, 30 enum isl_dim_type type, unsigned pos); 31 __isl_give isl_aff *isl_aff_nan_on_domain_space(__isl_take isl_space *space); 32 __isl_give isl_aff *isl_aff_nan_on_domain(__isl_take isl_local_space *ls); 33 __isl_give isl_aff *isl_aff_param_on_domain_space_id( 34 __isl_take isl_space *space, __isl_take isl_id *id); 35 36 __isl_give isl_aff *isl_aff_copy(__isl_keep isl_aff *aff); 37 __isl_null isl_aff *isl_aff_free(__isl_take isl_aff *aff); 38 39 isl_ctx *isl_aff_get_ctx(__isl_keep isl_aff *aff); 40 uint32_t isl_aff_get_hash(__isl_keep isl_aff *aff); 41 42 isl_bool isl_aff_involves_locals(__isl_keep isl_aff *aff); 43 44 isl_size isl_aff_dim(__isl_keep isl_aff *aff, enum isl_dim_type type); 45 isl_bool isl_aff_involves_dims(__isl_keep isl_aff *aff, 46 enum isl_dim_type type, unsigned first, unsigned n); 47 48 __isl_give isl_space *isl_aff_get_domain_space(__isl_keep isl_aff *aff); 49 __isl_give isl_space *isl_aff_get_space(__isl_keep isl_aff *aff); 50 __isl_give isl_local_space *isl_aff_get_domain_local_space( 51 __isl_keep isl_aff *aff); 52 __isl_give isl_local_space *isl_aff_get_local_space(__isl_keep isl_aff *aff); 53 54 const char *isl_aff_get_dim_name(__isl_keep isl_aff *aff, 55 enum isl_dim_type type, unsigned pos); 56 __isl_export 57 __isl_give isl_val *isl_aff_get_constant_val(__isl_keep isl_aff *aff); 58 __isl_give isl_val *isl_aff_get_coefficient_val(__isl_keep isl_aff *aff, 59 enum isl_dim_type type, int pos); 60 int isl_aff_coefficient_sgn(__isl_keep isl_aff *aff, 61 enum isl_dim_type type, int pos); 62 __isl_give isl_val *isl_aff_get_denominator_val(__isl_keep isl_aff *aff); 63 __isl_give isl_aff *isl_aff_set_constant_si(__isl_take isl_aff *aff, int v); 64 __isl_give isl_aff *isl_aff_set_constant_val(__isl_take isl_aff *aff, 65 __isl_take isl_val *v); 66 __isl_give isl_aff *isl_aff_set_coefficient_si(__isl_take isl_aff *aff, 67 enum isl_dim_type type, int pos, int v); 68 __isl_give isl_aff *isl_aff_set_coefficient_val(__isl_take isl_aff *aff, 69 enum isl_dim_type type, int pos, __isl_take isl_val *v); 70 __isl_give isl_aff *isl_aff_add_constant_si(__isl_take isl_aff *aff, int v); 71 __isl_overload 72 __isl_give isl_aff *isl_aff_add_constant_val(__isl_take isl_aff *aff, 73 __isl_take isl_val *v); 74 __isl_give isl_aff *isl_aff_add_constant_num_si(__isl_take isl_aff *aff, int v); 75 __isl_give isl_aff *isl_aff_add_coefficient_si(__isl_take isl_aff *aff, 76 enum isl_dim_type type, int pos, int v); 77 __isl_give isl_aff *isl_aff_add_coefficient_val(__isl_take isl_aff *aff, 78 enum isl_dim_type type, int pos, __isl_take isl_val *v); 79 80 __isl_export 81 isl_bool isl_aff_is_cst(__isl_keep isl_aff *aff); 82 83 __isl_give isl_aff *isl_aff_set_tuple_id(__isl_take isl_aff *aff, 84 enum isl_dim_type type, __isl_take isl_id *id); 85 __isl_give isl_aff *isl_aff_set_dim_name(__isl_take isl_aff *aff, 86 enum isl_dim_type type, unsigned pos, const char *s); 87 __isl_give isl_aff *isl_aff_set_dim_id(__isl_take isl_aff *aff, 88 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 89 90 int isl_aff_find_dim_by_name(__isl_keep isl_aff *aff, enum isl_dim_type type, 91 const char *name); 92 93 isl_bool isl_aff_plain_is_equal(__isl_keep isl_aff *aff1, 94 __isl_keep isl_aff *aff2); 95 isl_bool isl_aff_plain_is_zero(__isl_keep isl_aff *aff); 96 isl_bool isl_aff_is_nan(__isl_keep isl_aff *aff); 97 98 __isl_give isl_aff *isl_aff_get_div(__isl_keep isl_aff *aff, int pos); 99 100 __isl_give isl_aff *isl_aff_from_range(__isl_take isl_aff *aff); 101 102 __isl_export 103 __isl_give isl_aff *isl_aff_neg(__isl_take isl_aff *aff); 104 __isl_export 105 __isl_give isl_aff *isl_aff_ceil(__isl_take isl_aff *aff); 106 __isl_export 107 __isl_give isl_aff *isl_aff_floor(__isl_take isl_aff *aff); 108 __isl_overload 109 __isl_give isl_aff *isl_aff_mod_val(__isl_take isl_aff *aff, 110 __isl_take isl_val *mod); 111 112 __isl_export 113 __isl_give isl_aff *isl_aff_mul(__isl_take isl_aff *aff1, 114 __isl_take isl_aff *aff2); 115 __isl_export 116 __isl_give isl_aff *isl_aff_div(__isl_take isl_aff *aff1, 117 __isl_take isl_aff *aff2); 118 __isl_export 119 __isl_give isl_aff *isl_aff_add(__isl_take isl_aff *aff1, 120 __isl_take isl_aff *aff2); 121 __isl_export 122 __isl_give isl_aff *isl_aff_sub(__isl_take isl_aff *aff1, 123 __isl_take isl_aff *aff2); 124 125 __isl_overload 126 __isl_give isl_aff *isl_aff_scale_val(__isl_take isl_aff *aff, 127 __isl_take isl_val *v); 128 __isl_give isl_aff *isl_aff_scale_down_ui(__isl_take isl_aff *aff, unsigned f); 129 __isl_overload 130 __isl_give isl_aff *isl_aff_scale_down_val(__isl_take isl_aff *aff, 131 __isl_take isl_val *v); 132 133 __isl_give isl_aff *isl_aff_insert_dims(__isl_take isl_aff *aff, 134 enum isl_dim_type type, unsigned first, unsigned n); 135 __isl_give isl_aff *isl_aff_add_dims(__isl_take isl_aff *aff, 136 enum isl_dim_type type, unsigned n); 137 __isl_give isl_aff *isl_aff_move_dims(__isl_take isl_aff *aff, 138 enum isl_dim_type dst_type, unsigned dst_pos, 139 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 140 __isl_give isl_aff *isl_aff_drop_dims(__isl_take isl_aff *aff, 141 enum isl_dim_type type, unsigned first, unsigned n); 142 __isl_give isl_aff *isl_aff_project_domain_on_params(__isl_take isl_aff *aff); 143 __isl_export 144 __isl_give isl_aff *isl_aff_unbind_params_insert_domain( 145 __isl_take isl_aff *aff, __isl_take isl_multi_id *domain); 146 147 __isl_give isl_aff *isl_aff_align_params(__isl_take isl_aff *aff, 148 __isl_take isl_space *model); 149 150 __isl_export 151 __isl_give isl_aff *isl_aff_gist(__isl_take isl_aff *aff, 152 __isl_take isl_set *context); 153 __isl_give isl_aff *isl_aff_gist_params(__isl_take isl_aff *aff, 154 __isl_take isl_set *context); 155 156 __isl_export 157 __isl_give isl_val *isl_aff_eval(__isl_take isl_aff *aff, 158 __isl_take isl_point *pnt); 159 160 __isl_give isl_aff *isl_aff_pullback_aff(__isl_take isl_aff *aff1, 161 __isl_take isl_aff *aff2); 162 __isl_overload 163 __isl_give isl_aff *isl_aff_pullback_multi_aff(__isl_take isl_aff *aff, 164 __isl_take isl_multi_aff *ma); 165 166 __isl_give isl_basic_set *isl_aff_zero_basic_set(__isl_take isl_aff *aff); 167 __isl_give isl_basic_set *isl_aff_neg_basic_set(__isl_take isl_aff *aff); 168 169 __isl_give isl_basic_set *isl_aff_eq_basic_set(__isl_take isl_aff *aff1, 170 __isl_take isl_aff *aff2); 171 __isl_export 172 __isl_give isl_set *isl_aff_eq_set(__isl_take isl_aff *aff1, 173 __isl_take isl_aff *aff2); 174 __isl_export 175 __isl_give isl_set *isl_aff_ne_set(__isl_take isl_aff *aff1, 176 __isl_take isl_aff *aff2); 177 __isl_give isl_basic_set *isl_aff_le_basic_set(__isl_take isl_aff *aff1, 178 __isl_take isl_aff *aff2); 179 __isl_export 180 __isl_give isl_set *isl_aff_le_set(__isl_take isl_aff *aff1, 181 __isl_take isl_aff *aff2); 182 __isl_give isl_basic_set *isl_aff_lt_basic_set(__isl_take isl_aff *aff1, 183 __isl_take isl_aff *aff2); 184 __isl_export 185 __isl_give isl_set *isl_aff_lt_set(__isl_take isl_aff *aff1, 186 __isl_take isl_aff *aff2); 187 __isl_give isl_basic_set *isl_aff_ge_basic_set(__isl_take isl_aff *aff1, 188 __isl_take isl_aff *aff2); 189 __isl_export 190 __isl_give isl_set *isl_aff_ge_set(__isl_take isl_aff *aff1, 191 __isl_take isl_aff *aff2); 192 __isl_give isl_basic_set *isl_aff_gt_basic_set(__isl_take isl_aff *aff1, 193 __isl_take isl_aff *aff2); 194 __isl_export 195 __isl_give isl_set *isl_aff_gt_set(__isl_take isl_aff *aff1, 196 __isl_take isl_aff *aff2); 197 198 __isl_overload 199 __isl_give isl_basic_set *isl_aff_bind_id(__isl_take isl_aff *aff, 200 __isl_take isl_id *id); 201 202 __isl_constructor 203 __isl_give isl_aff *isl_aff_read_from_str(isl_ctx *ctx, const char *str); 204 __isl_give char *isl_aff_to_str(__isl_keep isl_aff *aff); 205 __isl_give isl_printer *isl_printer_print_aff(__isl_take isl_printer *p, 206 __isl_keep isl_aff *aff); 207 void isl_aff_dump(__isl_keep isl_aff *aff); 208 209 isl_ctx *isl_pw_aff_get_ctx(__isl_keep isl_pw_aff *pwaff); 210 uint32_t isl_pw_aff_get_hash(__isl_keep isl_pw_aff *pa); 211 __isl_give isl_space *isl_pw_aff_get_domain_space(__isl_keep isl_pw_aff *pwaff); 212 __isl_give isl_space *isl_pw_aff_get_space(__isl_keep isl_pw_aff *pwaff); 213 214 __isl_constructor 215 __isl_give isl_pw_aff *isl_pw_aff_from_aff(__isl_take isl_aff *aff); 216 __isl_give isl_pw_aff *isl_pw_aff_empty(__isl_take isl_space *space); 217 __isl_give isl_pw_aff *isl_pw_aff_alloc(__isl_take isl_set *set, 218 __isl_take isl_aff *aff); 219 __isl_give isl_pw_aff *isl_pw_aff_zero_on_domain( 220 __isl_take isl_local_space *ls); 221 __isl_give isl_pw_aff *isl_pw_aff_var_on_domain(__isl_take isl_local_space *ls, 222 enum isl_dim_type type, unsigned pos); 223 __isl_give isl_pw_aff *isl_pw_aff_nan_on_domain_space( 224 __isl_take isl_space *space); 225 __isl_give isl_pw_aff *isl_pw_aff_nan_on_domain(__isl_take isl_local_space *ls); 226 __isl_give isl_pw_aff *isl_pw_aff_val_on_domain(__isl_take isl_set *domain, 227 __isl_take isl_val *v); 228 __isl_overload 229 __isl_give isl_pw_aff *isl_pw_aff_param_on_domain_id( 230 __isl_take isl_set *domain, __isl_take isl_id *id); 231 232 __isl_export 233 __isl_give isl_pw_aff *isl_set_indicator_function(__isl_take isl_set *set); 234 235 const char *isl_pw_aff_get_dim_name(__isl_keep isl_pw_aff *pa, 236 enum isl_dim_type type, unsigned pos); 237 isl_bool isl_pw_aff_has_dim_id(__isl_keep isl_pw_aff *pa, 238 enum isl_dim_type type, unsigned pos); 239 __isl_give isl_id *isl_pw_aff_get_dim_id(__isl_keep isl_pw_aff *pa, 240 enum isl_dim_type type, unsigned pos); 241 __isl_give isl_pw_aff *isl_pw_aff_set_dim_id(__isl_take isl_pw_aff *pma, 242 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 243 244 int isl_pw_aff_find_dim_by_name(__isl_keep isl_pw_aff *pa, 245 enum isl_dim_type type, const char *name); 246 247 isl_bool isl_pw_aff_is_empty(__isl_keep isl_pw_aff *pwaff); 248 isl_bool isl_pw_aff_involves_nan(__isl_keep isl_pw_aff *pa); 249 int isl_pw_aff_plain_cmp(__isl_keep isl_pw_aff *pa1, 250 __isl_keep isl_pw_aff *pa2); 251 isl_bool isl_pw_aff_plain_is_equal(__isl_keep isl_pw_aff *pwaff1, 252 __isl_keep isl_pw_aff *pwaff2); 253 isl_bool isl_pw_aff_is_equal(__isl_keep isl_pw_aff *pa1, 254 __isl_keep isl_pw_aff *pa2); 255 256 __isl_give isl_pw_aff *isl_pw_aff_union_min(__isl_take isl_pw_aff *pwaff1, 257 __isl_take isl_pw_aff *pwaff2); 258 __isl_give isl_pw_aff *isl_pw_aff_union_max(__isl_take isl_pw_aff *pwaff1, 259 __isl_take isl_pw_aff *pwaff2); 260 __isl_export 261 __isl_give isl_pw_aff *isl_pw_aff_union_add(__isl_take isl_pw_aff *pwaff1, 262 __isl_take isl_pw_aff *pwaff2); 263 264 __isl_give isl_pw_aff *isl_pw_aff_copy(__isl_keep isl_pw_aff *pwaff); 265 __isl_null isl_pw_aff *isl_pw_aff_free(__isl_take isl_pw_aff *pwaff); 266 267 isl_size isl_pw_aff_dim(__isl_keep isl_pw_aff *pwaff, enum isl_dim_type type); 268 isl_bool isl_pw_aff_involves_param_id(__isl_keep isl_pw_aff *pa, 269 __isl_keep isl_id *id); 270 isl_bool isl_pw_aff_involves_dims(__isl_keep isl_pw_aff *pwaff, 271 enum isl_dim_type type, unsigned first, unsigned n); 272 273 isl_bool isl_pw_aff_is_cst(__isl_keep isl_pw_aff *pwaff); 274 275 __isl_export 276 __isl_give isl_pw_aff *isl_pw_aff_insert_domain(__isl_take isl_pw_aff *pa, 277 __isl_take isl_space *domain); 278 __isl_give isl_pw_aff *isl_pw_aff_project_domain_on_params( 279 __isl_take isl_pw_aff *pa); 280 281 __isl_give isl_pw_aff *isl_pw_aff_align_params(__isl_take isl_pw_aff *pwaff, 282 __isl_take isl_space *model); 283 __isl_give isl_pw_aff *isl_pw_aff_drop_unused_params( 284 __isl_take isl_pw_aff *pa); 285 286 isl_bool isl_pw_aff_has_tuple_id(__isl_keep isl_pw_aff *pa, 287 enum isl_dim_type type); 288 __isl_give isl_id *isl_pw_aff_get_tuple_id(__isl_keep isl_pw_aff *pa, 289 enum isl_dim_type type); 290 __isl_give isl_pw_aff *isl_pw_aff_set_tuple_id(__isl_take isl_pw_aff *pwaff, 291 enum isl_dim_type type, __isl_take isl_id *id); 292 __isl_give isl_pw_aff *isl_pw_aff_reset_tuple_id(__isl_take isl_pw_aff *pa, 293 enum isl_dim_type type); 294 __isl_give isl_pw_aff *isl_pw_aff_reset_user(__isl_take isl_pw_aff *pa); 295 296 __isl_give isl_set *isl_pw_aff_params(__isl_take isl_pw_aff *pwa); 297 __isl_export 298 __isl_give isl_set *isl_pw_aff_domain(__isl_take isl_pw_aff *pwaff); 299 __isl_give isl_pw_aff *isl_pw_aff_from_range(__isl_take isl_pw_aff *pwa); 300 301 __isl_export 302 __isl_give isl_pw_aff *isl_pw_aff_min(__isl_take isl_pw_aff *pwaff1, 303 __isl_take isl_pw_aff *pwaff2); 304 __isl_export 305 __isl_give isl_pw_aff *isl_pw_aff_max(__isl_take isl_pw_aff *pwaff1, 306 __isl_take isl_pw_aff *pwaff2); 307 __isl_export 308 __isl_give isl_pw_aff *isl_pw_aff_mul(__isl_take isl_pw_aff *pwaff1, 309 __isl_take isl_pw_aff *pwaff2); 310 __isl_export 311 __isl_give isl_pw_aff *isl_pw_aff_div(__isl_take isl_pw_aff *pa1, 312 __isl_take isl_pw_aff *pa2); 313 __isl_export 314 __isl_give isl_pw_aff *isl_pw_aff_add(__isl_take isl_pw_aff *pwaff1, 315 __isl_take isl_pw_aff *pwaff2); 316 __isl_export 317 __isl_give isl_pw_aff *isl_pw_aff_sub(__isl_take isl_pw_aff *pwaff1, 318 __isl_take isl_pw_aff *pwaff2); 319 __isl_export 320 __isl_give isl_pw_aff *isl_pw_aff_neg(__isl_take isl_pw_aff *pwaff); 321 __isl_export 322 __isl_give isl_pw_aff *isl_pw_aff_ceil(__isl_take isl_pw_aff *pwaff); 323 __isl_export 324 __isl_give isl_pw_aff *isl_pw_aff_floor(__isl_take isl_pw_aff *pwaff); 325 __isl_overload 326 __isl_give isl_pw_aff *isl_pw_aff_mod_val(__isl_take isl_pw_aff *pa, 327 __isl_take isl_val *mod); 328 __isl_export 329 __isl_give isl_pw_aff *isl_pw_aff_tdiv_q(__isl_take isl_pw_aff *pa1, 330 __isl_take isl_pw_aff *pa2); 331 __isl_export 332 __isl_give isl_pw_aff *isl_pw_aff_tdiv_r(__isl_take isl_pw_aff *pa1, 333 __isl_take isl_pw_aff *pa2); 334 335 __isl_export 336 __isl_give isl_pw_aff *isl_pw_aff_intersect_params(__isl_take isl_pw_aff *pa, 337 __isl_take isl_set *set); 338 __isl_export 339 __isl_give isl_pw_aff *isl_pw_aff_intersect_domain(__isl_take isl_pw_aff *pa, 340 __isl_take isl_set *set); 341 __isl_give isl_pw_aff *isl_pw_aff_intersect_domain_wrapped_domain( 342 __isl_take isl_pw_aff *pa, __isl_take isl_set *set); 343 __isl_give isl_pw_aff *isl_pw_aff_intersect_domain_wrapped_range( 344 __isl_take isl_pw_aff *pa, __isl_take isl_set *set); 345 __isl_export 346 __isl_give isl_pw_aff *isl_pw_aff_subtract_domain(__isl_take isl_pw_aff *pa, 347 __isl_take isl_set *set); 348 349 __isl_export 350 __isl_give isl_pw_aff *isl_pw_aff_cond(__isl_take isl_pw_aff *cond, 351 __isl_take isl_pw_aff *pwaff_true, __isl_take isl_pw_aff *pwaff_false); 352 353 __isl_overload 354 __isl_give isl_pw_aff *isl_pw_aff_add_constant_val(__isl_take isl_pw_aff *pa, 355 __isl_take isl_val *v); 356 __isl_overload 357 __isl_give isl_pw_aff *isl_pw_aff_scale_val(__isl_take isl_pw_aff *pa, 358 __isl_take isl_val *v); 359 __isl_overload 360 __isl_give isl_pw_aff *isl_pw_aff_scale_down_val(__isl_take isl_pw_aff *pa, 361 __isl_take isl_val *f); 362 363 __isl_give isl_pw_aff *isl_pw_aff_insert_dims(__isl_take isl_pw_aff *pwaff, 364 enum isl_dim_type type, unsigned first, unsigned n); 365 __isl_give isl_pw_aff *isl_pw_aff_add_dims(__isl_take isl_pw_aff *pwaff, 366 enum isl_dim_type type, unsigned n); 367 __isl_give isl_pw_aff *isl_pw_aff_move_dims(__isl_take isl_pw_aff *pa, 368 enum isl_dim_type dst_type, unsigned dst_pos, 369 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 370 __isl_give isl_pw_aff *isl_pw_aff_drop_dims(__isl_take isl_pw_aff *pwaff, 371 enum isl_dim_type type, unsigned first, unsigned n); 372 373 __isl_export 374 __isl_give isl_pw_aff *isl_pw_aff_coalesce(__isl_take isl_pw_aff *pa); 375 __isl_export 376 __isl_give isl_pw_aff *isl_pw_aff_gist(__isl_take isl_pw_aff *pwaff, 377 __isl_take isl_set *context); 378 __isl_give isl_pw_aff *isl_pw_aff_gist_params(__isl_take isl_pw_aff *pwaff, 379 __isl_take isl_set *context); 380 381 __isl_export 382 __isl_give isl_val *isl_pw_aff_eval(__isl_take isl_pw_aff *pa, 383 __isl_take isl_point *pnt); 384 385 __isl_overload 386 __isl_give isl_pw_aff *isl_pw_aff_pullback_multi_aff( 387 __isl_take isl_pw_aff *pa, __isl_take isl_multi_aff *ma); 388 __isl_overload 389 __isl_give isl_pw_aff *isl_pw_aff_pullback_pw_multi_aff( 390 __isl_take isl_pw_aff *pa, __isl_take isl_pw_multi_aff *pma); 391 __isl_overload 392 __isl_give isl_pw_aff *isl_pw_aff_pullback_multi_pw_aff( 393 __isl_take isl_pw_aff *pa, __isl_take isl_multi_pw_aff *mpa); 394 395 isl_size isl_pw_aff_n_piece(__isl_keep isl_pw_aff *pwaff); 396 isl_stat isl_pw_aff_foreach_piece(__isl_keep isl_pw_aff *pwaff, 397 isl_stat (*fn)(__isl_take isl_set *set, __isl_take isl_aff *aff, 398 void *user), void *user); 399 isl_bool isl_pw_aff_every_piece(__isl_keep isl_pw_aff *pa, 400 isl_bool (*test)(__isl_keep isl_set *set, __isl_keep isl_aff *aff, 401 void *user), void *user); 402 __isl_export 403 isl_bool isl_pw_aff_isa_aff(__isl_keep isl_pw_aff *pa); 404 __isl_export 405 __isl_give isl_aff *isl_pw_aff_as_aff(__isl_take isl_pw_aff *pa); 406 407 __isl_export 408 __isl_give isl_map *isl_pw_aff_as_map(__isl_take isl_pw_aff *pa); 409 __isl_give isl_set *isl_set_from_pw_aff(__isl_take isl_pw_aff *pwaff); 410 __isl_give isl_map *isl_map_from_pw_aff(__isl_take isl_pw_aff *pwaff); 411 412 __isl_give isl_set *isl_pw_aff_pos_set(__isl_take isl_pw_aff *pa); 413 __isl_give isl_set *isl_pw_aff_nonneg_set(__isl_take isl_pw_aff *pwaff); 414 __isl_give isl_set *isl_pw_aff_zero_set(__isl_take isl_pw_aff *pwaff); 415 __isl_give isl_set *isl_pw_aff_non_zero_set(__isl_take isl_pw_aff *pwaff); 416 417 __isl_export 418 __isl_give isl_set *isl_pw_aff_eq_set(__isl_take isl_pw_aff *pwaff1, 419 __isl_take isl_pw_aff *pwaff2); 420 __isl_export 421 __isl_give isl_set *isl_pw_aff_ne_set(__isl_take isl_pw_aff *pwaff1, 422 __isl_take isl_pw_aff *pwaff2); 423 __isl_export 424 __isl_give isl_set *isl_pw_aff_le_set(__isl_take isl_pw_aff *pwaff1, 425 __isl_take isl_pw_aff *pwaff2); 426 __isl_export 427 __isl_give isl_set *isl_pw_aff_lt_set(__isl_take isl_pw_aff *pwaff1, 428 __isl_take isl_pw_aff *pwaff2); 429 __isl_export 430 __isl_give isl_set *isl_pw_aff_ge_set(__isl_take isl_pw_aff *pwaff1, 431 __isl_take isl_pw_aff *pwaff2); 432 __isl_export 433 __isl_give isl_set *isl_pw_aff_gt_set(__isl_take isl_pw_aff *pwaff1, 434 __isl_take isl_pw_aff *pwaff2); 435 436 __isl_give isl_map *isl_pw_aff_eq_map(__isl_take isl_pw_aff *pa1, 437 __isl_take isl_pw_aff *pa2); 438 __isl_give isl_map *isl_pw_aff_le_map(__isl_take isl_pw_aff *pa1, 439 __isl_take isl_pw_aff *pa2); 440 __isl_give isl_map *isl_pw_aff_lt_map(__isl_take isl_pw_aff *pa1, 441 __isl_take isl_pw_aff *pa2); 442 __isl_give isl_map *isl_pw_aff_ge_map(__isl_take isl_pw_aff *pa1, 443 __isl_take isl_pw_aff *pa2); 444 __isl_give isl_map *isl_pw_aff_gt_map(__isl_take isl_pw_aff *pa1, 445 __isl_take isl_pw_aff *pa2); 446 447 __isl_export 448 __isl_give isl_pw_aff *isl_pw_aff_bind_domain(__isl_take isl_pw_aff *pa, 449 __isl_take isl_multi_id *tuple); 450 __isl_export 451 __isl_give isl_pw_aff *isl_pw_aff_bind_domain_wrapped_domain( 452 __isl_take isl_pw_aff *pa, __isl_take isl_multi_id *tuple); 453 __isl_overload 454 __isl_give isl_set *isl_pw_aff_bind_id(__isl_take isl_pw_aff *pa, 455 __isl_take isl_id *id); 456 457 __isl_constructor 458 __isl_give isl_pw_aff *isl_pw_aff_read_from_str(isl_ctx *ctx, const char *str); 459 __isl_give char *isl_pw_aff_to_str(__isl_keep isl_pw_aff *pa); 460 __isl_give isl_printer *isl_printer_print_pw_aff(__isl_take isl_printer *p, 461 __isl_keep isl_pw_aff *pwaff); 462 void isl_pw_aff_dump(__isl_keep isl_pw_aff *pwaff); 463 464 __isl_give isl_pw_aff *isl_pw_aff_list_min(__isl_take isl_pw_aff_list *list); 465 __isl_give isl_pw_aff *isl_pw_aff_list_max(__isl_take isl_pw_aff_list *list); 466 467 __isl_give isl_set *isl_pw_aff_list_eq_set(__isl_take isl_pw_aff_list *list1, 468 __isl_take isl_pw_aff_list *list2); 469 __isl_give isl_set *isl_pw_aff_list_ne_set(__isl_take isl_pw_aff_list *list1, 470 __isl_take isl_pw_aff_list *list2); 471 __isl_give isl_set *isl_pw_aff_list_le_set(__isl_take isl_pw_aff_list *list1, 472 __isl_take isl_pw_aff_list *list2); 473 __isl_give isl_set *isl_pw_aff_list_lt_set(__isl_take isl_pw_aff_list *list1, 474 __isl_take isl_pw_aff_list *list2); 475 __isl_give isl_set *isl_pw_aff_list_ge_set(__isl_take isl_pw_aff_list *list1, 476 __isl_take isl_pw_aff_list *list2); 477 __isl_give isl_set *isl_pw_aff_list_gt_set(__isl_take isl_pw_aff_list *list1, 478 __isl_take isl_pw_aff_list *list2); 479 480 ISL_DECLARE_MULTI(aff) 481 ISL_DECLARE_MULTI_IDENTITY(aff) 482 ISL_DECLARE_MULTI_CMP(aff) 483 ISL_DECLARE_MULTI_ARITH(aff) 484 ISL_DECLARE_MULTI_ADD_CONSTANT(aff) 485 ISL_DECLARE_MULTI_ZERO(aff) 486 ISL_DECLARE_MULTI_NAN(aff) 487 ISL_DECLARE_MULTI_DIMS(aff) 488 ISL_DECLARE_MULTI_INSERT_DOMAIN(aff) 489 ISL_DECLARE_MULTI_LOCALS(aff) 490 ISL_DECLARE_MULTI_DIM_ID(aff) 491 ISL_DECLARE_MULTI_TUPLE_ID(aff) 492 ISL_DECLARE_MULTI_WITH_DOMAIN(aff) 493 ISL_DECLARE_MULTI_BIND_DOMAIN(aff) 494 ISL_DECLARE_MULTI_UNBIND_PARAMS(aff) 495 496 __isl_constructor 497 __isl_give isl_multi_aff *isl_multi_aff_from_aff(__isl_take isl_aff *aff); 498 __isl_export 499 __isl_give isl_multi_aff *isl_multi_aff_domain_map(__isl_take isl_space *space); 500 __isl_export 501 __isl_give isl_multi_aff *isl_space_domain_map_multi_aff( 502 __isl_take isl_space *space); 503 __isl_export 504 __isl_give isl_multi_aff *isl_multi_aff_range_map(__isl_take isl_space *space); 505 __isl_export 506 __isl_give isl_multi_aff *isl_space_range_map_multi_aff( 507 __isl_take isl_space *space); 508 __isl_give isl_multi_aff *isl_multi_aff_project_out_map( 509 __isl_take isl_space *space, enum isl_dim_type type, 510 unsigned first, unsigned n); 511 512 __isl_overload 513 __isl_give isl_multi_aff *isl_multi_aff_multi_val_on_domain_space( 514 __isl_take isl_space *space, __isl_take isl_multi_val *mv); 515 __isl_overload 516 __isl_give isl_multi_aff *isl_space_multi_aff_on_domain_multi_val( 517 __isl_take isl_space *space, __isl_take isl_multi_val *mv); 518 __isl_give isl_multi_aff *isl_multi_aff_multi_val_on_space( 519 __isl_take isl_space *space, __isl_take isl_multi_val *mv); 520 521 __isl_export 522 __isl_give isl_multi_val *isl_multi_aff_get_constant_multi_val( 523 __isl_keep isl_multi_aff *ma); 524 525 __isl_export 526 __isl_give isl_multi_aff *isl_multi_aff_floor(__isl_take isl_multi_aff *ma); 527 528 __isl_give isl_multi_aff *isl_multi_aff_gist_params( 529 __isl_take isl_multi_aff *maff, __isl_take isl_set *context); 530 __isl_export 531 __isl_give isl_multi_aff *isl_multi_aff_gist(__isl_take isl_multi_aff *maff, 532 __isl_take isl_set *context); 533 534 __isl_give isl_multi_aff *isl_multi_aff_lift(__isl_take isl_multi_aff *maff, 535 __isl_give isl_local_space **ls); 536 537 __isl_overload 538 __isl_give isl_multi_aff *isl_multi_aff_pullback_multi_aff( 539 __isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2); 540 541 __isl_give isl_multi_aff *isl_multi_aff_move_dims(__isl_take isl_multi_aff *ma, 542 enum isl_dim_type dst_type, unsigned dst_pos, 543 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 544 545 __isl_give isl_set *isl_multi_aff_lex_lt_set(__isl_take isl_multi_aff *ma1, 546 __isl_take isl_multi_aff *ma2); 547 __isl_give isl_set *isl_multi_aff_lex_le_set(__isl_take isl_multi_aff *ma1, 548 __isl_take isl_multi_aff *ma2); 549 __isl_give isl_set *isl_multi_aff_lex_gt_set(__isl_take isl_multi_aff *ma1, 550 __isl_take isl_multi_aff *ma2); 551 __isl_give isl_set *isl_multi_aff_lex_ge_set(__isl_take isl_multi_aff *ma1, 552 __isl_take isl_multi_aff *ma2); 553 554 __isl_export 555 __isl_give isl_basic_set *isl_multi_aff_bind(__isl_take isl_multi_aff *ma, 556 __isl_take isl_multi_id *tuple); 557 558 __isl_give char *isl_multi_aff_to_str(__isl_keep isl_multi_aff *ma); 559 __isl_give isl_printer *isl_printer_print_multi_aff(__isl_take isl_printer *p, 560 __isl_keep isl_multi_aff *maff); 561 562 __isl_constructor 563 __isl_give isl_multi_aff *isl_multi_aff_read_from_str(isl_ctx *ctx, 564 const char *str); 565 void isl_multi_aff_dump(__isl_keep isl_multi_aff *maff); 566 567 ISL_DECLARE_MULTI(pw_aff) 568 ISL_DECLARE_MULTI_IDENTITY(pw_aff) 569 ISL_DECLARE_MULTI_ARITH(pw_aff) 570 ISL_DECLARE_MULTI_MIN_MAX(pw_aff) 571 ISL_DECLARE_MULTI_ADD_CONSTANT(pw_aff) 572 ISL_DECLARE_MULTI_ZERO(pw_aff) 573 ISL_DECLARE_MULTI_NAN(pw_aff) 574 ISL_DECLARE_MULTI_DIMS(pw_aff) 575 ISL_DECLARE_MULTI_DIM_ID(pw_aff) 576 ISL_DECLARE_MULTI_INSERT_DOMAIN(pw_aff) 577 ISL_DECLARE_MULTI_TUPLE_ID(pw_aff) 578 ISL_DECLARE_MULTI_WITH_DOMAIN(pw_aff) 579 ISL_DECLARE_MULTI_BIND_DOMAIN(pw_aff) 580 ISL_DECLARE_MULTI_PARAM(pw_aff) 581 ISL_DECLARE_MULTI_UNBIND_PARAMS(pw_aff) 582 583 __isl_export 584 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_zero(__isl_take isl_space *space); 585 __isl_overload 586 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity_on_domain_space( 587 __isl_take isl_space *space); 588 __isl_export 589 __isl_give isl_pw_multi_aff *isl_space_identity_pw_multi_aff_on_domain( 590 __isl_take isl_space *space); 591 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity( 592 __isl_take isl_space *space); 593 __isl_export 594 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_domain_map( 595 __isl_take isl_space *space); 596 __isl_export 597 __isl_give isl_pw_multi_aff *isl_space_domain_map_pw_multi_aff( 598 __isl_take isl_space *space); 599 __isl_export 600 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_map( 601 __isl_take isl_space *space); 602 __isl_export 603 __isl_give isl_pw_multi_aff *isl_space_range_map_pw_multi_aff( 604 __isl_take isl_space *space); 605 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_out_map( 606 __isl_take isl_space *space, enum isl_dim_type type, 607 unsigned first, unsigned n); 608 __isl_export 609 __isl_give isl_pw_multi_aff *isl_multi_aff_to_pw_multi_aff( 610 __isl_take isl_multi_aff *ma); 611 __isl_constructor 612 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_multi_aff( 613 __isl_take isl_multi_aff *ma); 614 __isl_constructor 615 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_pw_aff( 616 __isl_take isl_pw_aff *pa); 617 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_alloc(__isl_take isl_set *set, 618 __isl_take isl_multi_aff *maff); 619 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_copy( 620 __isl_keep isl_pw_multi_aff *pma); 621 __isl_null isl_pw_multi_aff *isl_pw_multi_aff_free( 622 __isl_take isl_pw_multi_aff *pma); 623 624 isl_size isl_pw_multi_aff_dim(__isl_keep isl_pw_multi_aff *pma, 625 enum isl_dim_type type); 626 __isl_export 627 isl_bool isl_pw_multi_aff_involves_locals(__isl_keep isl_pw_multi_aff *pma); 628 isl_bool isl_pw_multi_aff_involves_param_id(__isl_keep isl_pw_multi_aff *pma, 629 __isl_keep isl_id *id); 630 isl_bool isl_pw_multi_aff_involves_dims(__isl_keep isl_pw_multi_aff *pma, 631 enum isl_dim_type type, unsigned first, unsigned n); 632 __isl_export 633 __isl_give isl_pw_aff *isl_pw_multi_aff_get_at( 634 __isl_keep isl_pw_multi_aff *pma, int pos); 635 __isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff( 636 __isl_keep isl_pw_multi_aff *pma, int pos); 637 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_pw_aff( 638 __isl_take isl_pw_multi_aff *pma, unsigned pos, 639 __isl_take isl_pw_aff *pa); 640 641 isl_ctx *isl_pw_multi_aff_get_ctx(__isl_keep isl_pw_multi_aff *pma); 642 __isl_give isl_space *isl_pw_multi_aff_get_domain_space( 643 __isl_keep isl_pw_multi_aff *pma); 644 __isl_export 645 __isl_give isl_space *isl_pw_multi_aff_get_space( 646 __isl_keep isl_pw_multi_aff *pma); 647 isl_bool isl_pw_multi_aff_has_tuple_name(__isl_keep isl_pw_multi_aff *pma, 648 enum isl_dim_type type); 649 const char *isl_pw_multi_aff_get_tuple_name(__isl_keep isl_pw_multi_aff *pma, 650 enum isl_dim_type type); 651 __isl_export 652 __isl_give isl_id *isl_pw_multi_aff_get_range_tuple_id( 653 __isl_keep isl_pw_multi_aff *pma); 654 __isl_give isl_id *isl_pw_multi_aff_get_tuple_id( 655 __isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type); 656 __isl_export 657 isl_bool isl_pw_multi_aff_has_range_tuple_id(__isl_keep isl_pw_multi_aff *pma); 658 isl_bool isl_pw_multi_aff_has_tuple_id(__isl_keep isl_pw_multi_aff *pma, 659 enum isl_dim_type type); 660 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_tuple_id( 661 __isl_take isl_pw_multi_aff *pma, 662 enum isl_dim_type type, __isl_take isl_id *id); 663 __isl_overload 664 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_range_tuple_id( 665 __isl_take isl_pw_multi_aff *pma, __isl_take isl_id *id); 666 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_tuple_id( 667 __isl_take isl_pw_multi_aff *pma, enum isl_dim_type type); 668 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_user( 669 __isl_take isl_pw_multi_aff *pma); 670 671 int isl_pw_multi_aff_find_dim_by_name(__isl_keep isl_pw_multi_aff *pma, 672 enum isl_dim_type type, const char *name); 673 674 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_drop_dims( 675 __isl_take isl_pw_multi_aff *pma, 676 enum isl_dim_type type, unsigned first, unsigned n); 677 678 __isl_export 679 __isl_give isl_set *isl_pw_multi_aff_domain(__isl_take isl_pw_multi_aff *pma); 680 681 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_empty(__isl_take isl_space *space); 682 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_domain( 683 __isl_take isl_set *set); 684 685 __isl_export 686 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_multi_val_on_domain( 687 __isl_take isl_set *domain, __isl_take isl_multi_val *mv); 688 __isl_overload 689 __isl_give isl_pw_multi_aff *isl_set_pw_multi_aff_on_domain_multi_val( 690 __isl_take isl_set *domain, __isl_take isl_multi_val *mv); 691 692 const char *isl_pw_multi_aff_get_dim_name(__isl_keep isl_pw_multi_aff *pma, 693 enum isl_dim_type type, unsigned pos); 694 __isl_give isl_id *isl_pw_multi_aff_get_dim_id( 695 __isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type, 696 unsigned pos); 697 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_dim_id( 698 __isl_take isl_pw_multi_aff *pma, 699 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 700 701 isl_bool isl_pw_multi_aff_involves_nan(__isl_keep isl_pw_multi_aff *pma); 702 isl_bool isl_pw_multi_aff_plain_is_equal(__isl_keep isl_pw_multi_aff *pma1, 703 __isl_keep isl_pw_multi_aff *pma2); 704 isl_bool isl_pw_multi_aff_is_equal(__isl_keep isl_pw_multi_aff *pma1, 705 __isl_keep isl_pw_multi_aff *pma2); 706 707 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_fix_si( 708 __isl_take isl_pw_multi_aff *pma, enum isl_dim_type type, 709 unsigned pos, int value); 710 711 __isl_export 712 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_add( 713 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 714 715 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_neg( 716 __isl_take isl_pw_multi_aff *pma); 717 718 __isl_export 719 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add( 720 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 721 __isl_export 722 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_sub( 723 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 724 725 __isl_overload 726 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add_constant_val( 727 __isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v); 728 __isl_overload 729 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add_constant_multi_val( 730 __isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_val *mv); 731 __isl_overload 732 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_val( 733 __isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v); 734 __isl_overload 735 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_down_val( 736 __isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v); 737 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_multi_val( 738 __isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_val *mv); 739 740 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmin( 741 __isl_take isl_pw_multi_aff *pma1, 742 __isl_take isl_pw_multi_aff *pma2); 743 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmax( 744 __isl_take isl_pw_multi_aff *pma1, 745 __isl_take isl_pw_multi_aff *pma2); 746 747 __isl_give isl_multi_aff *isl_multi_aff_flatten_domain( 748 __isl_take isl_multi_aff *ma); 749 750 __isl_export 751 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_product( 752 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 753 __isl_export 754 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_flat_range_product( 755 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 756 __isl_export 757 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_product( 758 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 759 __isl_export 760 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_factor_domain( 761 __isl_take isl_pw_multi_aff *pma); 762 __isl_export 763 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_factor_range( 764 __isl_take isl_pw_multi_aff *pma); 765 766 __isl_export 767 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_params( 768 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 769 __isl_export 770 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain( 771 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 772 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain_wrapped_domain( 773 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 774 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain_wrapped_range( 775 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 776 __isl_export 777 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_subtract_domain( 778 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 779 780 __isl_export 781 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_insert_domain( 782 __isl_take isl_pw_multi_aff *pma, __isl_take isl_space *domain); 783 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_domain_on_params( 784 __isl_take isl_pw_multi_aff *pma); 785 786 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_align_params( 787 __isl_take isl_pw_multi_aff *pma, __isl_take isl_space *model); 788 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_drop_unused_params( 789 __isl_take isl_pw_multi_aff *pma); 790 791 __isl_export 792 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_coalesce( 793 __isl_take isl_pw_multi_aff *pma); 794 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist_params( 795 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 796 __isl_export 797 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist( 798 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 799 800 __isl_overload 801 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_pullback_multi_aff( 802 __isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_aff *ma); 803 __isl_overload 804 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_pullback_pw_multi_aff( 805 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 806 __isl_overload 807 __isl_give isl_pw_multi_aff * 808 isl_pw_multi_aff_preimage_domain_wrapped_domain_pw_multi_aff( 809 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 810 811 __isl_export 812 isl_size isl_pw_multi_aff_n_piece(__isl_keep isl_pw_multi_aff *pma); 813 __isl_export 814 isl_stat isl_pw_multi_aff_foreach_piece(__isl_keep isl_pw_multi_aff *pma, 815 isl_stat (*fn)(__isl_take isl_set *set, __isl_take isl_multi_aff *maff, 816 void *user), void *user); 817 isl_bool isl_pw_multi_aff_every_piece(__isl_keep isl_pw_multi_aff *pma, 818 isl_bool (*test)(__isl_keep isl_set *set, __isl_keep isl_multi_aff *ma, 819 void *user), void *user); 820 __isl_export 821 isl_bool isl_pw_multi_aff_isa_multi_aff(__isl_keep isl_pw_multi_aff *pma); 822 __isl_export 823 __isl_give isl_multi_aff *isl_pw_multi_aff_as_multi_aff( 824 __isl_take isl_pw_multi_aff *pma); 825 826 __isl_export 827 __isl_give isl_map *isl_pw_multi_aff_as_map(__isl_take isl_pw_multi_aff *pma); 828 __isl_give isl_map *isl_map_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma); 829 __isl_export 830 __isl_give isl_set *isl_pw_multi_aff_as_set(__isl_take isl_pw_multi_aff *pma); 831 __isl_give isl_set *isl_set_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma); 832 833 __isl_give char *isl_pw_multi_aff_to_str(__isl_keep isl_pw_multi_aff *pma); 834 __isl_give isl_printer *isl_printer_print_pw_multi_aff(__isl_take isl_printer *p, 835 __isl_keep isl_pw_multi_aff *pma); 836 837 __isl_export 838 __isl_give isl_pw_multi_aff *isl_set_as_pw_multi_aff(__isl_take isl_set *set); 839 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_set(__isl_take isl_set *set); 840 __isl_export 841 __isl_give isl_pw_multi_aff *isl_map_as_pw_multi_aff(__isl_take isl_map *map); 842 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_map(__isl_take isl_map *map); 843 844 __isl_export 845 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_bind_domain( 846 __isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_id *tuple); 847 __isl_export 848 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_bind_domain_wrapped_domain( 849 __isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_id *tuple); 850 851 __isl_constructor 852 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_read_from_str(isl_ctx *ctx, 853 const char *str); 854 void isl_pw_multi_aff_dump(__isl_keep isl_pw_multi_aff *pma); 855 856 857 __isl_overload 858 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_empty_ctx( 859 isl_ctx *ctx); 860 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_empty_space( 861 __isl_take isl_space *space); 862 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_empty( 863 __isl_take isl_space *space); 864 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_aff( 865 __isl_take isl_aff *aff); 866 __isl_constructor 867 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_multi_aff( 868 __isl_take isl_multi_aff *ma); 869 __isl_export 870 __isl_give isl_union_pw_multi_aff *isl_pw_multi_aff_to_union_pw_multi_aff( 871 __isl_take isl_pw_multi_aff *pma); 872 __isl_constructor 873 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_pw_multi_aff( 874 __isl_take isl_pw_multi_aff *pma); 875 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_domain( 876 __isl_take isl_union_set *uset); 877 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_multi_val_on_domain( 878 __isl_take isl_union_set *domain, __isl_take isl_multi_val *mv); 879 __isl_give isl_union_pw_aff *isl_union_pw_aff_param_on_domain_id( 880 __isl_take isl_union_set *domain, __isl_take isl_id *id); 881 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_copy( 882 __isl_keep isl_union_pw_multi_aff *upma); 883 __isl_null isl_union_pw_multi_aff *isl_union_pw_multi_aff_free( 884 __isl_take isl_union_pw_multi_aff *upma); 885 886 __isl_give isl_union_pw_multi_aff *isl_union_set_identity_union_pw_multi_aff( 887 __isl_take isl_union_set *uset); 888 889 __isl_give isl_union_pw_aff *isl_union_pw_multi_aff_get_union_pw_aff( 890 __isl_keep isl_union_pw_multi_aff *upma, int pos); 891 892 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_add_pw_multi_aff( 893 __isl_take isl_union_pw_multi_aff *upma, 894 __isl_take isl_pw_multi_aff *pma); 895 896 isl_ctx *isl_union_pw_multi_aff_get_ctx( 897 __isl_keep isl_union_pw_multi_aff *upma); 898 __isl_export 899 __isl_give isl_space *isl_union_pw_multi_aff_get_space( 900 __isl_keep isl_union_pw_multi_aff *upma); 901 __isl_give isl_pw_multi_aff_list *isl_union_pw_multi_aff_get_pw_multi_aff_list( 902 __isl_keep isl_union_pw_multi_aff *upma); 903 904 isl_size isl_union_pw_multi_aff_dim(__isl_keep isl_union_pw_multi_aff *upma, 905 enum isl_dim_type type); 906 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_set_dim_name( 907 __isl_take isl_union_pw_multi_aff *upma, 908 enum isl_dim_type type, unsigned pos, const char *s); 909 910 int isl_union_pw_multi_aff_find_dim_by_name( 911 __isl_keep isl_union_pw_multi_aff *upma, enum isl_dim_type type, 912 const char *name); 913 914 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_drop_dims( 915 __isl_take isl_union_pw_multi_aff *upma, 916 enum isl_dim_type type, unsigned first, unsigned n); 917 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_reset_user( 918 __isl_take isl_union_pw_multi_aff *upma); 919 920 __isl_export 921 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_coalesce( 922 __isl_take isl_union_pw_multi_aff *upma); 923 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_gist_params( 924 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_set *context); 925 __isl_export 926 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_gist( 927 __isl_take isl_union_pw_multi_aff *upma, 928 __isl_take isl_union_set *context); 929 930 __isl_overload 931 __isl_give isl_union_pw_multi_aff * 932 isl_union_pw_multi_aff_pullback_union_pw_multi_aff( 933 __isl_take isl_union_pw_multi_aff *upma1, 934 __isl_take isl_union_pw_multi_aff *upma2); 935 __isl_overload 936 __isl_give isl_union_pw_multi_aff * 937 isl_union_pw_multi_aff_apply_union_pw_multi_aff( 938 __isl_take isl_union_pw_multi_aff *upma1, 939 __isl_take isl_union_pw_multi_aff *upma2); 940 __isl_overload 941 __isl_give isl_union_pw_multi_aff * 942 isl_union_pw_multi_aff_preimage_domain_wrapped_domain_union_pw_multi_aff( 943 __isl_take isl_union_pw_multi_aff *upma1, 944 __isl_take isl_union_pw_multi_aff *upma2); 945 946 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_align_params( 947 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *model); 948 949 isl_size isl_union_pw_multi_aff_n_pw_multi_aff( 950 __isl_keep isl_union_pw_multi_aff *upma); 951 952 isl_stat isl_union_pw_multi_aff_foreach_pw_multi_aff( 953 __isl_keep isl_union_pw_multi_aff *upma, 954 isl_stat (*fn)(__isl_take isl_pw_multi_aff *pma, void *user), 955 void *user); 956 isl_bool isl_union_pw_multi_aff_every_pw_multi_aff( 957 __isl_keep isl_union_pw_multi_aff *upma, 958 isl_bool (*test)(__isl_keep isl_pw_multi_aff *pma, void *user), 959 void *user); 960 __isl_export 961 __isl_give isl_pw_multi_aff *isl_union_pw_multi_aff_extract_pw_multi_aff( 962 __isl_keep isl_union_pw_multi_aff *upma, __isl_take isl_space *space); 963 __isl_export 964 isl_bool isl_union_pw_multi_aff_isa_pw_multi_aff( 965 __isl_keep isl_union_pw_multi_aff *upma); 966 __isl_export 967 __isl_give isl_pw_multi_aff *isl_union_pw_multi_aff_as_pw_multi_aff( 968 __isl_take isl_union_pw_multi_aff *upma); 969 970 __isl_export 971 isl_bool isl_union_pw_multi_aff_plain_is_empty( 972 __isl_keep isl_union_pw_multi_aff *upma); 973 __isl_export 974 isl_bool isl_union_pw_multi_aff_involves_locals( 975 __isl_keep isl_union_pw_multi_aff *upma); 976 isl_bool isl_union_pw_multi_aff_involves_nan( 977 __isl_keep isl_union_pw_multi_aff *upma); 978 isl_bool isl_union_pw_multi_aff_plain_is_equal( 979 __isl_keep isl_union_pw_multi_aff *upma1, 980 __isl_keep isl_union_pw_multi_aff *upma2); 981 982 __isl_export 983 __isl_give isl_union_set *isl_union_pw_multi_aff_domain( 984 __isl_take isl_union_pw_multi_aff *upma); 985 986 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_neg( 987 __isl_take isl_union_pw_multi_aff *upma); 988 989 __isl_export 990 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_add( 991 __isl_take isl_union_pw_multi_aff *upma1, 992 __isl_take isl_union_pw_multi_aff *upma2); 993 __isl_export 994 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_union_add( 995 __isl_take isl_union_pw_multi_aff *upma1, 996 __isl_take isl_union_pw_multi_aff *upma2); 997 __isl_export 998 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_sub( 999 __isl_take isl_union_pw_multi_aff *upma1, 1000 __isl_take isl_union_pw_multi_aff *upma2); 1001 1002 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_scale_val( 1003 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_val *val); 1004 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_scale_down_val( 1005 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_val *val); 1006 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_scale_multi_val( 1007 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_multi_val *mv); 1008 1009 __isl_export 1010 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_range_product( 1011 __isl_take isl_union_pw_multi_aff *upma1, 1012 __isl_take isl_union_pw_multi_aff *upma2); 1013 __isl_export 1014 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_flat_range_product( 1015 __isl_take isl_union_pw_multi_aff *upma1, 1016 __isl_take isl_union_pw_multi_aff *upma2); 1017 __isl_export 1018 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_range_factor_domain( 1019 __isl_take isl_union_pw_multi_aff *upma); 1020 __isl_export 1021 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_range_factor_range( 1022 __isl_take isl_union_pw_multi_aff *upma); 1023 1024 __isl_export 1025 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_intersect_params( 1026 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_set *set); 1027 __isl_overload 1028 __isl_give isl_union_pw_multi_aff * 1029 isl_union_pw_multi_aff_intersect_domain_union_set( 1030 __isl_take isl_union_pw_multi_aff *upma, 1031 __isl_take isl_union_set *uset); 1032 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_intersect_domain( 1033 __isl_take isl_union_pw_multi_aff *upma, 1034 __isl_take isl_union_set *uset); 1035 __isl_overload 1036 __isl_give isl_union_pw_multi_aff * 1037 isl_union_pw_multi_aff_intersect_domain_space( 1038 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *space); 1039 __isl_export 1040 __isl_give isl_union_pw_multi_aff * 1041 isl_union_pw_multi_aff_intersect_domain_wrapped_domain( 1042 __isl_take isl_union_pw_multi_aff *upma, 1043 __isl_take isl_union_set *uset); 1044 __isl_export 1045 __isl_give isl_union_pw_multi_aff * 1046 isl_union_pw_multi_aff_intersect_domain_wrapped_range( 1047 __isl_take isl_union_pw_multi_aff *upma, 1048 __isl_take isl_union_set *uset); 1049 __isl_overload 1050 __isl_give isl_union_pw_multi_aff * 1051 isl_union_pw_multi_aff_subtract_domain_union_set( 1052 __isl_take isl_union_pw_multi_aff *upma, 1053 __isl_take isl_union_set *uset); 1054 __isl_overload 1055 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_subtract_domain_space( 1056 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *space); 1057 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_subtract_domain( 1058 __isl_take isl_union_pw_multi_aff *upma, 1059 __isl_take isl_union_set *uset); 1060 1061 __isl_export 1062 __isl_give isl_union_map *isl_union_pw_multi_aff_as_union_map( 1063 __isl_take isl_union_pw_multi_aff *upma); 1064 __isl_overload 1065 __isl_give isl_union_map *isl_union_map_from_union_pw_multi_aff( 1066 __isl_take isl_union_pw_multi_aff *upma); 1067 1068 __isl_give isl_printer *isl_printer_print_union_pw_multi_aff( 1069 __isl_take isl_printer *p, __isl_keep isl_union_pw_multi_aff *upma); 1070 1071 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_set( 1072 __isl_take isl_union_set *uset); 1073 __isl_export 1074 __isl_give isl_union_pw_multi_aff *isl_union_map_as_union_pw_multi_aff( 1075 __isl_take isl_union_map *umap); 1076 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_map( 1077 __isl_take isl_union_map *umap); 1078 1079 __isl_constructor 1080 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_read_from_str( 1081 isl_ctx *ctx, const char *str); 1082 void isl_union_pw_multi_aff_dump(__isl_keep isl_union_pw_multi_aff *upma); 1083 __isl_give char *isl_union_pw_multi_aff_to_str( 1084 __isl_keep isl_union_pw_multi_aff *upma); 1085 1086 uint32_t isl_multi_pw_aff_get_hash(__isl_keep isl_multi_pw_aff *mpa); 1087 1088 __isl_constructor 1089 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_aff(__isl_take isl_aff *aff); 1090 __isl_export 1091 __isl_give isl_multi_pw_aff *isl_multi_aff_to_multi_pw_aff( 1092 __isl_take isl_multi_aff *ma); 1093 __isl_constructor 1094 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_multi_aff( 1095 __isl_take isl_multi_aff *ma); 1096 __isl_constructor 1097 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_aff( 1098 __isl_take isl_pw_aff *pa); 1099 __isl_export 1100 __isl_give isl_set *isl_multi_pw_aff_domain(__isl_take isl_multi_pw_aff *mpa); 1101 __isl_export 1102 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_intersect_params( 1103 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set); 1104 __isl_export 1105 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_intersect_domain( 1106 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *domain); 1107 1108 __isl_export 1109 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_coalesce( 1110 __isl_take isl_multi_pw_aff *mpa); 1111 __isl_export 1112 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_gist( 1113 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set); 1114 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_gist_params( 1115 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set); 1116 1117 isl_bool isl_multi_pw_aff_is_cst(__isl_keep isl_multi_pw_aff *mpa); 1118 isl_bool isl_multi_pw_aff_is_equal(__isl_keep isl_multi_pw_aff *mpa1, 1119 __isl_keep isl_multi_pw_aff *mpa2); 1120 1121 __isl_overload 1122 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_multi_aff( 1123 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_multi_aff *ma); 1124 __isl_overload 1125 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_pw_multi_aff( 1126 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_pw_multi_aff *pma); 1127 __isl_overload 1128 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_multi_pw_aff( 1129 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 1130 1131 __isl_export 1132 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_union_add( 1133 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 1134 1135 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_move_dims( 1136 __isl_take isl_multi_pw_aff *pma, 1137 enum isl_dim_type dst_type, unsigned dst_pos, 1138 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 1139 1140 __isl_export 1141 __isl_give isl_set *isl_multi_pw_aff_as_set(__isl_take isl_multi_pw_aff *mpa); 1142 __isl_give isl_set *isl_set_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa); 1143 __isl_export 1144 __isl_give isl_map *isl_multi_pw_aff_as_map(__isl_take isl_multi_pw_aff *mpa); 1145 __isl_give isl_map *isl_map_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa); 1146 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_multi_pw_aff( 1147 __isl_take isl_multi_pw_aff *mpa); 1148 __isl_export 1149 __isl_give isl_multi_pw_aff *isl_pw_multi_aff_to_multi_pw_aff( 1150 __isl_take isl_pw_multi_aff *pma); 1151 __isl_constructor 1152 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_multi_aff( 1153 __isl_take isl_pw_multi_aff *pma); 1154 1155 __isl_give isl_map *isl_multi_pw_aff_eq_map(__isl_take isl_multi_pw_aff *mpa1, 1156 __isl_take isl_multi_pw_aff *mpa2); 1157 __isl_give isl_map *isl_multi_pw_aff_lex_le_map( 1158 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 1159 __isl_give isl_map *isl_multi_pw_aff_lex_lt_map( 1160 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 1161 __isl_give isl_map *isl_multi_pw_aff_lex_ge_map( 1162 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 1163 __isl_give isl_map *isl_multi_pw_aff_lex_gt_map( 1164 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 1165 1166 __isl_export 1167 __isl_give isl_set *isl_multi_pw_aff_bind(__isl_take isl_multi_pw_aff *mpa, 1168 __isl_take isl_multi_id *tuple); 1169 1170 __isl_constructor 1171 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_read_from_str(isl_ctx *ctx, 1172 const char *str); 1173 __isl_give char *isl_multi_pw_aff_to_str(__isl_keep isl_multi_pw_aff *mpa); 1174 __isl_give isl_printer *isl_printer_print_multi_pw_aff( 1175 __isl_take isl_printer *p, __isl_keep isl_multi_pw_aff *mpa); 1176 void isl_multi_pw_aff_dump(__isl_keep isl_multi_pw_aff *mpa); 1177 1178 __isl_give isl_union_pw_aff *isl_union_pw_aff_copy( 1179 __isl_keep isl_union_pw_aff *upa); 1180 __isl_null isl_union_pw_aff *isl_union_pw_aff_free( 1181 __isl_take isl_union_pw_aff *upa); 1182 1183 isl_ctx *isl_union_pw_aff_get_ctx(__isl_keep isl_union_pw_aff *upa); 1184 __isl_export 1185 __isl_give isl_space *isl_union_pw_aff_get_space( 1186 __isl_keep isl_union_pw_aff *upa); 1187 __isl_give isl_pw_aff_list *isl_union_pw_aff_get_pw_aff_list( 1188 __isl_keep isl_union_pw_aff *upa); 1189 1190 isl_size isl_union_pw_aff_dim(__isl_keep isl_union_pw_aff *upa, 1191 enum isl_dim_type type); 1192 __isl_give isl_union_pw_aff *isl_union_pw_aff_set_dim_name( 1193 __isl_take isl_union_pw_aff *upa, enum isl_dim_type type, 1194 unsigned pos, const char *s); 1195 1196 int isl_union_pw_aff_find_dim_by_name(__isl_keep isl_union_pw_aff *upa, 1197 enum isl_dim_type type, const char *name); 1198 1199 __isl_give isl_union_pw_aff *isl_union_pw_aff_drop_dims( 1200 __isl_take isl_union_pw_aff *upa, 1201 enum isl_dim_type type, unsigned first, unsigned n); 1202 __isl_give isl_union_pw_aff *isl_union_pw_aff_reset_user( 1203 __isl_take isl_union_pw_aff *upa); 1204 1205 __isl_give isl_union_pw_aff *isl_union_pw_aff_empty_ctx(isl_ctx *ctx); 1206 __isl_give isl_union_pw_aff *isl_union_pw_aff_empty_space( 1207 __isl_take isl_space *space); 1208 __isl_give isl_union_pw_aff *isl_union_pw_aff_empty( 1209 __isl_take isl_space *space); 1210 __isl_constructor 1211 __isl_give isl_union_pw_aff *isl_union_pw_aff_from_aff(__isl_take isl_aff *aff); 1212 __isl_export 1213 __isl_give isl_union_pw_aff *isl_pw_aff_to_union_pw_aff( 1214 __isl_take isl_pw_aff *pa); 1215 __isl_constructor 1216 __isl_give isl_union_pw_aff *isl_union_pw_aff_from_pw_aff( 1217 __isl_take isl_pw_aff *pa); 1218 __isl_give isl_union_pw_aff *isl_union_pw_aff_val_on_domain( 1219 __isl_take isl_union_set *domain, __isl_take isl_val *v); 1220 __isl_give isl_union_pw_aff *isl_union_pw_aff_aff_on_domain( 1221 __isl_take isl_union_set *domain, __isl_take isl_aff *aff); 1222 __isl_give isl_union_pw_aff *isl_union_pw_aff_pw_aff_on_domain( 1223 __isl_take isl_union_set *domain, __isl_take isl_pw_aff *pa); 1224 __isl_give isl_union_pw_aff *isl_union_pw_aff_add_pw_aff( 1225 __isl_take isl_union_pw_aff *upa, __isl_take isl_pw_aff *pa); 1226 1227 __isl_constructor 1228 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_pw_aff( 1229 __isl_take isl_union_pw_aff *upa); 1230 1231 isl_size isl_union_pw_aff_n_pw_aff(__isl_keep isl_union_pw_aff *upa); 1232 1233 isl_stat isl_union_pw_aff_foreach_pw_aff(__isl_keep isl_union_pw_aff *upa, 1234 isl_stat (*fn)(__isl_take isl_pw_aff *pa, void *user), void *user); 1235 isl_bool isl_union_pw_aff_every_pw_aff(__isl_keep isl_union_pw_aff *upa, 1236 isl_bool (*test)(__isl_keep isl_pw_aff *pa, void *user), void *user); 1237 __isl_give isl_pw_aff *isl_union_pw_aff_extract_pw_aff( 1238 __isl_keep isl_union_pw_aff *upa, __isl_take isl_space *space); 1239 1240 isl_bool isl_union_pw_aff_involves_nan(__isl_keep isl_union_pw_aff *upa); 1241 isl_bool isl_union_pw_aff_plain_is_equal(__isl_keep isl_union_pw_aff *upa1, 1242 __isl_keep isl_union_pw_aff *upa2); 1243 1244 __isl_export 1245 __isl_give isl_union_set *isl_union_pw_aff_domain( 1246 __isl_take isl_union_pw_aff *upa); 1247 1248 __isl_give isl_union_pw_aff *isl_union_pw_aff_neg( 1249 __isl_take isl_union_pw_aff *upa); 1250 1251 __isl_export 1252 __isl_give isl_union_pw_aff *isl_union_pw_aff_add( 1253 __isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2); 1254 __isl_export 1255 __isl_give isl_union_pw_aff *isl_union_pw_aff_union_add( 1256 __isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2); 1257 __isl_export 1258 __isl_give isl_union_pw_aff *isl_union_pw_aff_sub( 1259 __isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2); 1260 1261 __isl_export 1262 __isl_give isl_union_pw_aff *isl_union_pw_aff_coalesce( 1263 __isl_take isl_union_pw_aff *upa); 1264 __isl_export 1265 __isl_give isl_union_pw_aff *isl_union_pw_aff_gist( 1266 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *context); 1267 __isl_give isl_union_pw_aff *isl_union_pw_aff_gist_params( 1268 __isl_take isl_union_pw_aff *upa, __isl_take isl_set *context); 1269 1270 __isl_overload 1271 __isl_give isl_union_pw_aff *isl_union_pw_aff_pullback_union_pw_multi_aff( 1272 __isl_take isl_union_pw_aff *upa, 1273 __isl_take isl_union_pw_multi_aff *upma); 1274 1275 __isl_give isl_union_pw_aff *isl_union_pw_aff_floor( 1276 __isl_take isl_union_pw_aff *upa); 1277 1278 __isl_give isl_union_pw_aff *isl_union_pw_aff_scale_val( 1279 __isl_take isl_union_pw_aff *upa, __isl_take isl_val *v); 1280 __isl_give isl_union_pw_aff *isl_union_pw_aff_scale_down_val( 1281 __isl_take isl_union_pw_aff *upa, __isl_take isl_val *v); 1282 __isl_give isl_union_pw_aff *isl_union_pw_aff_mod_val( 1283 __isl_take isl_union_pw_aff *upa, __isl_take isl_val *f); 1284 1285 __isl_give isl_union_pw_aff *isl_union_pw_aff_align_params( 1286 __isl_take isl_union_pw_aff *upa, __isl_take isl_space *model); 1287 1288 __isl_export 1289 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_params( 1290 __isl_take isl_union_pw_aff *upa, __isl_take isl_set *set); 1291 __isl_overload 1292 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain_space( 1293 __isl_take isl_union_pw_aff *upa, __isl_take isl_space *space); 1294 __isl_overload 1295 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain_union_set( 1296 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset); 1297 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain( 1298 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset); 1299 __isl_export 1300 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain_wrapped_domain( 1301 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset); 1302 __isl_export 1303 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain_wrapped_range( 1304 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset); 1305 __isl_overload 1306 __isl_give isl_union_pw_aff *isl_union_pw_aff_subtract_domain_union_set( 1307 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset); 1308 __isl_overload 1309 __isl_give isl_union_pw_aff *isl_union_pw_aff_subtract_domain_space( 1310 __isl_take isl_union_pw_aff *upa, __isl_take isl_space *space); 1311 __isl_give isl_union_pw_aff *isl_union_pw_aff_subtract_domain( 1312 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset); 1313 1314 __isl_give isl_union_pw_aff *isl_union_pw_aff_set_dim_name( 1315 __isl_take isl_union_pw_aff *upa, 1316 enum isl_dim_type type, unsigned pos, const char *s); 1317 1318 __isl_give isl_union_set *isl_union_pw_aff_zero_union_set( 1319 __isl_take isl_union_pw_aff *upa); 1320 1321 __isl_give isl_union_map *isl_union_map_from_union_pw_aff( 1322 __isl_take isl_union_pw_aff *upa); 1323 1324 __isl_overload 1325 __isl_give isl_union_set *isl_union_pw_aff_bind_id( 1326 __isl_take isl_union_pw_aff *upa, __isl_take isl_id *id); 1327 1328 __isl_constructor 1329 __isl_give isl_union_pw_aff *isl_union_pw_aff_read_from_str(isl_ctx *ctx, 1330 const char *str); 1331 __isl_give char *isl_union_pw_aff_to_str(__isl_keep isl_union_pw_aff *upa); 1332 __isl_give isl_printer *isl_printer_print_union_pw_aff( 1333 __isl_take isl_printer *p, __isl_keep isl_union_pw_aff *upa); 1334 void isl_union_pw_aff_dump(__isl_keep isl_union_pw_aff *upa); 1335 1336 ISL_DECLARE_MULTI(union_pw_aff) 1337 ISL_DECLARE_MULTI_ARITH(union_pw_aff) 1338 ISL_DECLARE_MULTI_ZERO(union_pw_aff) 1339 ISL_DECLARE_MULTI_NAN(union_pw_aff) 1340 ISL_DECLARE_MULTI_DROP_DIMS(union_pw_aff) 1341 ISL_DECLARE_MULTI_DIM_ID(union_pw_aff) 1342 ISL_DECLARE_MULTI_TUPLE_ID(union_pw_aff) 1343 1344 __isl_export 1345 __isl_give isl_multi_union_pw_aff *isl_multi_aff_to_multi_union_pw_aff( 1346 __isl_take isl_multi_aff *ma); 1347 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_multi_aff( 1348 __isl_take isl_multi_aff *ma); 1349 __isl_constructor 1350 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_union_pw_aff( 1351 __isl_take isl_union_pw_aff *upa); 1352 __isl_constructor 1353 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_multi_pw_aff( 1354 __isl_take isl_multi_pw_aff *mpa); 1355 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_multi_val_on_domain( 1356 __isl_take isl_union_set *domain, __isl_take isl_multi_val *mv); 1357 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_multi_aff_on_domain( 1358 __isl_take isl_union_set *domain, __isl_take isl_multi_aff *ma); 1359 __isl_give isl_multi_union_pw_aff * 1360 isl_multi_union_pw_aff_pw_multi_aff_on_domain(__isl_take isl_union_set *domain, 1361 __isl_take isl_pw_multi_aff *pma); 1362 1363 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_floor( 1364 __isl_take isl_multi_union_pw_aff *mupa); 1365 1366 __isl_export 1367 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_intersect_domain( 1368 __isl_take isl_multi_union_pw_aff *mupa, 1369 __isl_take isl_union_set *uset); 1370 __isl_export 1371 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_intersect_params( 1372 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_set *params); 1373 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_intersect_range( 1374 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_set *set); 1375 1376 __isl_export 1377 __isl_give isl_union_set *isl_multi_union_pw_aff_domain( 1378 __isl_take isl_multi_union_pw_aff *mupa); 1379 1380 __isl_export 1381 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_coalesce( 1382 __isl_take isl_multi_union_pw_aff *mupa); 1383 __isl_export 1384 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_gist( 1385 __isl_take isl_multi_union_pw_aff *mupa, 1386 __isl_take isl_union_set *context); 1387 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_gist_params( 1388 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_set *context); 1389 1390 __isl_give isl_union_pw_aff *isl_multi_union_pw_aff_apply_aff( 1391 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_aff *aff); 1392 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_apply_multi_aff( 1393 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_multi_aff *ma); 1394 __isl_give isl_union_pw_aff *isl_multi_union_pw_aff_apply_pw_aff( 1395 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_pw_aff *pa); 1396 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_apply_pw_multi_aff( 1397 __isl_take isl_multi_union_pw_aff *mupa, 1398 __isl_take isl_pw_multi_aff *pma); 1399 1400 __isl_overload 1401 __isl_give isl_multi_union_pw_aff * 1402 isl_multi_union_pw_aff_pullback_union_pw_multi_aff( 1403 __isl_take isl_multi_union_pw_aff *mupa, 1404 __isl_take isl_union_pw_multi_aff *upma); 1405 1406 __isl_give isl_union_pw_multi_aff * 1407 isl_union_pw_multi_aff_from_multi_union_pw_aff( 1408 __isl_take isl_multi_union_pw_aff *mupa); 1409 1410 __isl_export 1411 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_union_add( 1412 __isl_take isl_multi_union_pw_aff *mupa1, 1413 __isl_take isl_multi_union_pw_aff *mupa2); 1414 1415 __isl_export 1416 __isl_give isl_multi_union_pw_aff * 1417 isl_union_pw_multi_aff_as_multi_union_pw_aff( 1418 __isl_take isl_union_pw_multi_aff *upma); 1419 __isl_give isl_multi_union_pw_aff * 1420 isl_multi_union_pw_aff_from_union_pw_multi_aff( 1421 __isl_take isl_union_pw_multi_aff *upma); 1422 1423 __isl_export 1424 __isl_give isl_multi_union_pw_aff *isl_union_map_as_multi_union_pw_aff( 1425 __isl_take isl_union_map *umap); 1426 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_union_map( 1427 __isl_take isl_union_map *umap); 1428 __isl_overload 1429 __isl_give isl_union_map *isl_union_map_from_multi_union_pw_aff( 1430 __isl_take isl_multi_union_pw_aff *mupa); 1431 1432 __isl_give isl_union_set *isl_multi_union_pw_aff_zero_union_set( 1433 __isl_take isl_multi_union_pw_aff *mupa); 1434 __isl_export 1435 __isl_give isl_union_set *isl_multi_union_pw_aff_bind( 1436 __isl_take isl_multi_union_pw_aff *mupa, 1437 __isl_take isl_multi_id *tuple); 1438 1439 __isl_give isl_multi_pw_aff *isl_multi_union_pw_aff_extract_multi_pw_aff( 1440 __isl_keep isl_multi_union_pw_aff *mupa, __isl_take isl_space *space); 1441 1442 __isl_constructor 1443 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_read_from_str( 1444 isl_ctx *ctx, const char *str); 1445 __isl_give char *isl_multi_union_pw_aff_to_str( 1446 __isl_keep isl_multi_union_pw_aff *mupa); 1447 __isl_give isl_printer *isl_printer_print_multi_union_pw_aff( 1448 __isl_take isl_printer *p, __isl_keep isl_multi_union_pw_aff *mupa); 1449 void isl_multi_union_pw_aff_dump(__isl_keep isl_multi_union_pw_aff *mupa); 1450 1451 ISL_DECLARE_EXPORTED_LIST_FN(aff) 1452 ISL_DECLARE_EXPORTED_LIST_FN(pw_aff) 1453 ISL_DECLARE_EXPORTED_LIST_FN(pw_multi_aff) 1454 ISL_DECLARE_EXPORTED_LIST_FN(union_pw_aff) 1455 ISL_DECLARE_LIST_FN(union_pw_multi_aff) 1456 1457 #if defined(__cplusplus) 1458 } 1459 #endif 1460 1461 #endif 1462