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/set_type.h> 8 #include <isl/aff_type.h> 9 #include <isl/list.h> 10 #include <isl/multi.h> 11 #include <isl/union_set_type.h> 12 #include <isl/val_type.h> 13 #include <isl/point.h> 14 15 #if defined(__cplusplus) 16 extern "C" { 17 #endif 18 19 __isl_give isl_aff *isl_aff_zero_on_domain(__isl_take isl_local_space *ls); 20 __isl_give isl_aff *isl_aff_val_on_domain(__isl_take isl_local_space *ls, 21 __isl_take isl_val *val); 22 __isl_give isl_aff *isl_aff_var_on_domain(__isl_take isl_local_space *ls, 23 enum isl_dim_type type, unsigned pos); 24 __isl_give isl_aff *isl_aff_nan_on_domain(__isl_take isl_local_space *ls); 25 __isl_give isl_aff *isl_aff_param_on_domain_space_id( 26 __isl_take isl_space *space, __isl_take isl_id *id); 27 28 __isl_give isl_aff *isl_aff_copy(__isl_keep isl_aff *aff); 29 __isl_null isl_aff *isl_aff_free(__isl_take isl_aff *aff); 30 31 isl_ctx *isl_aff_get_ctx(__isl_keep isl_aff *aff); 32 uint32_t isl_aff_get_hash(__isl_keep isl_aff *aff); 33 34 int isl_aff_dim(__isl_keep isl_aff *aff, enum isl_dim_type type); 35 isl_bool isl_aff_involves_dims(__isl_keep isl_aff *aff, 36 enum isl_dim_type type, unsigned first, unsigned n); 37 38 __isl_give isl_space *isl_aff_get_domain_space(__isl_keep isl_aff *aff); 39 __isl_give isl_space *isl_aff_get_space(__isl_keep isl_aff *aff); 40 __isl_give isl_local_space *isl_aff_get_domain_local_space( 41 __isl_keep isl_aff *aff); 42 __isl_give isl_local_space *isl_aff_get_local_space(__isl_keep isl_aff *aff); 43 44 const char *isl_aff_get_dim_name(__isl_keep isl_aff *aff, 45 enum isl_dim_type type, unsigned pos); 46 __isl_give isl_val *isl_aff_get_constant_val(__isl_keep isl_aff *aff); 47 __isl_give isl_val *isl_aff_get_coefficient_val(__isl_keep isl_aff *aff, 48 enum isl_dim_type type, int pos); 49 int isl_aff_coefficient_sgn(__isl_keep isl_aff *aff, 50 enum isl_dim_type type, int pos); 51 __isl_give isl_val *isl_aff_get_denominator_val(__isl_keep isl_aff *aff); 52 __isl_give isl_aff *isl_aff_set_constant_si(__isl_take isl_aff *aff, int v); 53 __isl_give isl_aff *isl_aff_set_constant_val(__isl_take isl_aff *aff, 54 __isl_take isl_val *v); 55 __isl_give isl_aff *isl_aff_set_coefficient_si(__isl_take isl_aff *aff, 56 enum isl_dim_type type, int pos, int v); 57 __isl_give isl_aff *isl_aff_set_coefficient_val(__isl_take isl_aff *aff, 58 enum isl_dim_type type, int pos, __isl_take isl_val *v); 59 __isl_give isl_aff *isl_aff_add_constant_si(__isl_take isl_aff *aff, int v); 60 __isl_give isl_aff *isl_aff_add_constant_val(__isl_take isl_aff *aff, 61 __isl_take isl_val *v); 62 __isl_give isl_aff *isl_aff_add_constant_num_si(__isl_take isl_aff *aff, int v); 63 __isl_give isl_aff *isl_aff_add_coefficient_si(__isl_take isl_aff *aff, 64 enum isl_dim_type type, int pos, int v); 65 __isl_give isl_aff *isl_aff_add_coefficient_val(__isl_take isl_aff *aff, 66 enum isl_dim_type type, int pos, __isl_take isl_val *v); 67 68 isl_bool isl_aff_is_cst(__isl_keep isl_aff *aff); 69 70 __isl_give isl_aff *isl_aff_set_tuple_id(__isl_take isl_aff *aff, 71 enum isl_dim_type type, __isl_take isl_id *id); 72 __isl_give isl_aff *isl_aff_set_dim_name(__isl_take isl_aff *aff, 73 enum isl_dim_type type, unsigned pos, const char *s); 74 __isl_give isl_aff *isl_aff_set_dim_id(__isl_take isl_aff *aff, 75 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 76 77 int isl_aff_find_dim_by_name(__isl_keep isl_aff *aff, enum isl_dim_type type, 78 const char *name); 79 80 isl_bool isl_aff_plain_is_equal(__isl_keep isl_aff *aff1, 81 __isl_keep isl_aff *aff2); 82 isl_bool isl_aff_plain_is_zero(__isl_keep isl_aff *aff); 83 isl_bool isl_aff_is_nan(__isl_keep isl_aff *aff); 84 85 __isl_give isl_aff *isl_aff_get_div(__isl_keep isl_aff *aff, int pos); 86 87 __isl_give isl_aff *isl_aff_from_range(__isl_take isl_aff *aff); 88 89 __isl_export 90 __isl_give isl_aff *isl_aff_neg(__isl_take isl_aff *aff); 91 __isl_export 92 __isl_give isl_aff *isl_aff_ceil(__isl_take isl_aff *aff); 93 __isl_export 94 __isl_give isl_aff *isl_aff_floor(__isl_take isl_aff *aff); 95 __isl_overload 96 __isl_give isl_aff *isl_aff_mod_val(__isl_take isl_aff *aff, 97 __isl_take isl_val *mod); 98 99 __isl_export 100 __isl_give isl_aff *isl_aff_mul(__isl_take isl_aff *aff1, 101 __isl_take isl_aff *aff2); 102 __isl_export 103 __isl_give isl_aff *isl_aff_div(__isl_take isl_aff *aff1, 104 __isl_take isl_aff *aff2); 105 __isl_export 106 __isl_give isl_aff *isl_aff_add(__isl_take isl_aff *aff1, 107 __isl_take isl_aff *aff2); 108 __isl_export 109 __isl_give isl_aff *isl_aff_sub(__isl_take isl_aff *aff1, 110 __isl_take isl_aff *aff2); 111 112 __isl_overload 113 __isl_give isl_aff *isl_aff_scale_val(__isl_take isl_aff *aff, 114 __isl_take isl_val *v); 115 __isl_give isl_aff *isl_aff_scale_down_ui(__isl_take isl_aff *aff, unsigned f); 116 __isl_overload 117 __isl_give isl_aff *isl_aff_scale_down_val(__isl_take isl_aff *aff, 118 __isl_take isl_val *v); 119 120 __isl_give isl_aff *isl_aff_insert_dims(__isl_take isl_aff *aff, 121 enum isl_dim_type type, unsigned first, unsigned n); 122 __isl_give isl_aff *isl_aff_add_dims(__isl_take isl_aff *aff, 123 enum isl_dim_type type, unsigned n); 124 __isl_give isl_aff *isl_aff_move_dims(__isl_take isl_aff *aff, 125 enum isl_dim_type dst_type, unsigned dst_pos, 126 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 127 __isl_give isl_aff *isl_aff_drop_dims(__isl_take isl_aff *aff, 128 enum isl_dim_type type, unsigned first, unsigned n); 129 __isl_give isl_aff *isl_aff_project_domain_on_params(__isl_take isl_aff *aff); 130 131 __isl_give isl_aff *isl_aff_align_params(__isl_take isl_aff *aff, 132 __isl_take isl_space *model); 133 134 __isl_give isl_aff *isl_aff_gist(__isl_take isl_aff *aff, 135 __isl_take isl_set *context); 136 __isl_give isl_aff *isl_aff_gist_params(__isl_take isl_aff *aff, 137 __isl_take isl_set *context); 138 139 __isl_give isl_val *isl_aff_eval(__isl_take isl_aff *aff, 140 __isl_take isl_point *pnt); 141 142 __isl_give isl_aff *isl_aff_pullback_aff(__isl_take isl_aff *aff1, 143 __isl_take isl_aff *aff2); 144 __isl_overload 145 __isl_give isl_aff *isl_aff_pullback_multi_aff(__isl_take isl_aff *aff, 146 __isl_take isl_multi_aff *ma); 147 148 __isl_give isl_basic_set *isl_aff_zero_basic_set(__isl_take isl_aff *aff); 149 __isl_give isl_basic_set *isl_aff_neg_basic_set(__isl_take isl_aff *aff); 150 151 __isl_give isl_basic_set *isl_aff_eq_basic_set(__isl_take isl_aff *aff1, 152 __isl_take isl_aff *aff2); 153 __isl_export 154 __isl_give isl_set *isl_aff_eq_set(__isl_take isl_aff *aff1, 155 __isl_take isl_aff *aff2); 156 __isl_export 157 __isl_give isl_set *isl_aff_ne_set(__isl_take isl_aff *aff1, 158 __isl_take isl_aff *aff2); 159 __isl_give isl_basic_set *isl_aff_le_basic_set(__isl_take isl_aff *aff1, 160 __isl_take isl_aff *aff2); 161 __isl_export 162 __isl_give isl_set *isl_aff_le_set(__isl_take isl_aff *aff1, 163 __isl_take isl_aff *aff2); 164 __isl_give isl_basic_set *isl_aff_lt_basic_set(__isl_take isl_aff *aff1, 165 __isl_take isl_aff *aff2); 166 __isl_export 167 __isl_give isl_set *isl_aff_lt_set(__isl_take isl_aff *aff1, 168 __isl_take isl_aff *aff2); 169 __isl_give isl_basic_set *isl_aff_ge_basic_set(__isl_take isl_aff *aff1, 170 __isl_take isl_aff *aff2); 171 __isl_export 172 __isl_give isl_set *isl_aff_ge_set(__isl_take isl_aff *aff1, 173 __isl_take isl_aff *aff2); 174 __isl_give isl_basic_set *isl_aff_gt_basic_set(__isl_take isl_aff *aff1, 175 __isl_take isl_aff *aff2); 176 __isl_export 177 __isl_give isl_set *isl_aff_gt_set(__isl_take isl_aff *aff1, 178 __isl_take isl_aff *aff2); 179 180 __isl_constructor 181 __isl_give isl_aff *isl_aff_read_from_str(isl_ctx *ctx, const char *str); 182 __isl_give char *isl_aff_to_str(__isl_keep isl_aff *aff); 183 __isl_give isl_printer *isl_printer_print_aff(__isl_take isl_printer *p, 184 __isl_keep isl_aff *aff); 185 void isl_aff_dump(__isl_keep isl_aff *aff); 186 187 isl_ctx *isl_pw_aff_get_ctx(__isl_keep isl_pw_aff *pwaff); 188 uint32_t isl_pw_aff_get_hash(__isl_keep isl_pw_aff *pa); 189 __isl_give isl_space *isl_pw_aff_get_domain_space(__isl_keep isl_pw_aff *pwaff); 190 __isl_give isl_space *isl_pw_aff_get_space(__isl_keep isl_pw_aff *pwaff); 191 192 __isl_constructor 193 __isl_give isl_pw_aff *isl_pw_aff_from_aff(__isl_take isl_aff *aff); 194 __isl_give isl_pw_aff *isl_pw_aff_empty(__isl_take isl_space *dim); 195 __isl_give isl_pw_aff *isl_pw_aff_alloc(__isl_take isl_set *set, 196 __isl_take isl_aff *aff); 197 __isl_give isl_pw_aff *isl_pw_aff_zero_on_domain( 198 __isl_take isl_local_space *ls); 199 __isl_give isl_pw_aff *isl_pw_aff_var_on_domain(__isl_take isl_local_space *ls, 200 enum isl_dim_type type, unsigned pos); 201 __isl_give isl_pw_aff *isl_pw_aff_nan_on_domain(__isl_take isl_local_space *ls); 202 __isl_give isl_pw_aff *isl_pw_aff_val_on_domain(__isl_take isl_set *domain, 203 __isl_take isl_val *v); 204 205 __isl_give isl_pw_aff *isl_set_indicator_function(__isl_take isl_set *set); 206 207 const char *isl_pw_aff_get_dim_name(__isl_keep isl_pw_aff *pa, 208 enum isl_dim_type type, unsigned pos); 209 isl_bool isl_pw_aff_has_dim_id(__isl_keep isl_pw_aff *pa, 210 enum isl_dim_type type, unsigned pos); 211 __isl_give isl_id *isl_pw_aff_get_dim_id(__isl_keep isl_pw_aff *pa, 212 enum isl_dim_type type, unsigned pos); 213 __isl_give isl_pw_aff *isl_pw_aff_set_dim_id(__isl_take isl_pw_aff *pma, 214 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 215 216 int isl_pw_aff_find_dim_by_name(__isl_keep isl_pw_aff *pa, 217 enum isl_dim_type type, const char *name); 218 219 isl_bool isl_pw_aff_is_empty(__isl_keep isl_pw_aff *pwaff); 220 isl_bool isl_pw_aff_involves_nan(__isl_keep isl_pw_aff *pa); 221 int isl_pw_aff_plain_cmp(__isl_keep isl_pw_aff *pa1, 222 __isl_keep isl_pw_aff *pa2); 223 isl_bool isl_pw_aff_plain_is_equal(__isl_keep isl_pw_aff *pwaff1, 224 __isl_keep isl_pw_aff *pwaff2); 225 isl_bool isl_pw_aff_is_equal(__isl_keep isl_pw_aff *pa1, 226 __isl_keep isl_pw_aff *pa2); 227 228 __isl_give isl_pw_aff *isl_pw_aff_union_min(__isl_take isl_pw_aff *pwaff1, 229 __isl_take isl_pw_aff *pwaff2); 230 __isl_give isl_pw_aff *isl_pw_aff_union_max(__isl_take isl_pw_aff *pwaff1, 231 __isl_take isl_pw_aff *pwaff2); 232 __isl_export 233 __isl_give isl_pw_aff *isl_pw_aff_union_add(__isl_take isl_pw_aff *pwaff1, 234 __isl_take isl_pw_aff *pwaff2); 235 236 __isl_give isl_pw_aff *isl_pw_aff_copy(__isl_keep isl_pw_aff *pwaff); 237 __isl_null isl_pw_aff *isl_pw_aff_free(__isl_take isl_pw_aff *pwaff); 238 239 unsigned isl_pw_aff_dim(__isl_keep isl_pw_aff *pwaff, enum isl_dim_type type); 240 isl_bool isl_pw_aff_involves_dims(__isl_keep isl_pw_aff *pwaff, 241 enum isl_dim_type type, unsigned first, unsigned n); 242 243 isl_bool isl_pw_aff_is_cst(__isl_keep isl_pw_aff *pwaff); 244 245 __isl_give isl_pw_aff *isl_pw_aff_project_domain_on_params( 246 __isl_take isl_pw_aff *pa); 247 248 __isl_give isl_pw_aff *isl_pw_aff_align_params(__isl_take isl_pw_aff *pwaff, 249 __isl_take isl_space *model); 250 __isl_give isl_pw_aff *isl_pw_aff_drop_unused_params( 251 __isl_take isl_pw_aff *pa); 252 253 isl_bool isl_pw_aff_has_tuple_id(__isl_keep isl_pw_aff *pa, 254 enum isl_dim_type type); 255 __isl_give isl_id *isl_pw_aff_get_tuple_id(__isl_keep isl_pw_aff *pa, 256 enum isl_dim_type type); 257 __isl_give isl_pw_aff *isl_pw_aff_set_tuple_id(__isl_take isl_pw_aff *pwaff, 258 enum isl_dim_type type, __isl_take isl_id *id); 259 __isl_give isl_pw_aff *isl_pw_aff_reset_tuple_id(__isl_take isl_pw_aff *pa, 260 enum isl_dim_type type); 261 __isl_give isl_pw_aff *isl_pw_aff_reset_user(__isl_take isl_pw_aff *pa); 262 263 __isl_give isl_set *isl_pw_aff_params(__isl_take isl_pw_aff *pwa); 264 __isl_give isl_set *isl_pw_aff_domain(__isl_take isl_pw_aff *pwaff); 265 __isl_give isl_pw_aff *isl_pw_aff_from_range(__isl_take isl_pw_aff *pwa); 266 267 __isl_export 268 __isl_give isl_pw_aff *isl_pw_aff_min(__isl_take isl_pw_aff *pwaff1, 269 __isl_take isl_pw_aff *pwaff2); 270 __isl_export 271 __isl_give isl_pw_aff *isl_pw_aff_max(__isl_take isl_pw_aff *pwaff1, 272 __isl_take isl_pw_aff *pwaff2); 273 __isl_export 274 __isl_give isl_pw_aff *isl_pw_aff_mul(__isl_take isl_pw_aff *pwaff1, 275 __isl_take isl_pw_aff *pwaff2); 276 __isl_export 277 __isl_give isl_pw_aff *isl_pw_aff_div(__isl_take isl_pw_aff *pa1, 278 __isl_take isl_pw_aff *pa2); 279 __isl_export 280 __isl_give isl_pw_aff *isl_pw_aff_add(__isl_take isl_pw_aff *pwaff1, 281 __isl_take isl_pw_aff *pwaff2); 282 __isl_export 283 __isl_give isl_pw_aff *isl_pw_aff_sub(__isl_take isl_pw_aff *pwaff1, 284 __isl_take isl_pw_aff *pwaff2); 285 __isl_export 286 __isl_give isl_pw_aff *isl_pw_aff_neg(__isl_take isl_pw_aff *pwaff); 287 __isl_export 288 __isl_give isl_pw_aff *isl_pw_aff_ceil(__isl_take isl_pw_aff *pwaff); 289 __isl_export 290 __isl_give isl_pw_aff *isl_pw_aff_floor(__isl_take isl_pw_aff *pwaff); 291 __isl_overload 292 __isl_give isl_pw_aff *isl_pw_aff_mod_val(__isl_take isl_pw_aff *pa, 293 __isl_take isl_val *mod); 294 __isl_export 295 __isl_give isl_pw_aff *isl_pw_aff_tdiv_q(__isl_take isl_pw_aff *pa1, 296 __isl_take isl_pw_aff *pa2); 297 __isl_export 298 __isl_give isl_pw_aff *isl_pw_aff_tdiv_r(__isl_take isl_pw_aff *pa1, 299 __isl_take isl_pw_aff *pa2); 300 301 __isl_give isl_pw_aff *isl_pw_aff_intersect_params(__isl_take isl_pw_aff *pa, 302 __isl_take isl_set *set); 303 __isl_give isl_pw_aff *isl_pw_aff_intersect_domain(__isl_take isl_pw_aff *pa, 304 __isl_take isl_set *set); 305 __isl_give isl_pw_aff *isl_pw_aff_subtract_domain(__isl_take isl_pw_aff *pa, 306 __isl_take isl_set *set); 307 308 __isl_export 309 __isl_give isl_pw_aff *isl_pw_aff_cond(__isl_take isl_pw_aff *cond, 310 __isl_take isl_pw_aff *pwaff_true, __isl_take isl_pw_aff *pwaff_false); 311 312 __isl_overload 313 __isl_give isl_pw_aff *isl_pw_aff_scale_val(__isl_take isl_pw_aff *pa, 314 __isl_take isl_val *v); 315 __isl_overload 316 __isl_give isl_pw_aff *isl_pw_aff_scale_down_val(__isl_take isl_pw_aff *pa, 317 __isl_take isl_val *f); 318 319 __isl_give isl_pw_aff *isl_pw_aff_insert_dims(__isl_take isl_pw_aff *pwaff, 320 enum isl_dim_type type, unsigned first, unsigned n); 321 __isl_give isl_pw_aff *isl_pw_aff_add_dims(__isl_take isl_pw_aff *pwaff, 322 enum isl_dim_type type, unsigned n); 323 __isl_give isl_pw_aff *isl_pw_aff_move_dims(__isl_take isl_pw_aff *pa, 324 enum isl_dim_type dst_type, unsigned dst_pos, 325 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 326 __isl_give isl_pw_aff *isl_pw_aff_drop_dims(__isl_take isl_pw_aff *pwaff, 327 enum isl_dim_type type, unsigned first, unsigned n); 328 329 __isl_give isl_pw_aff *isl_pw_aff_coalesce(__isl_take isl_pw_aff *pwqp); 330 __isl_give isl_pw_aff *isl_pw_aff_gist(__isl_take isl_pw_aff *pwaff, 331 __isl_take isl_set *context); 332 __isl_give isl_pw_aff *isl_pw_aff_gist_params(__isl_take isl_pw_aff *pwaff, 333 __isl_take isl_set *context); 334 335 __isl_give isl_val *isl_pw_aff_eval(__isl_take isl_pw_aff *pa, 336 __isl_take isl_point *pnt); 337 338 __isl_overload 339 __isl_give isl_pw_aff *isl_pw_aff_pullback_multi_aff( 340 __isl_take isl_pw_aff *pa, __isl_take isl_multi_aff *ma); 341 __isl_overload 342 __isl_give isl_pw_aff *isl_pw_aff_pullback_pw_multi_aff( 343 __isl_take isl_pw_aff *pa, __isl_take isl_pw_multi_aff *pma); 344 __isl_overload 345 __isl_give isl_pw_aff *isl_pw_aff_pullback_multi_pw_aff( 346 __isl_take isl_pw_aff *pa, __isl_take isl_multi_pw_aff *mpa); 347 348 int isl_pw_aff_n_piece(__isl_keep isl_pw_aff *pwaff); 349 isl_stat isl_pw_aff_foreach_piece(__isl_keep isl_pw_aff *pwaff, 350 isl_stat (*fn)(__isl_take isl_set *set, __isl_take isl_aff *aff, 351 void *user), void *user); 352 353 __isl_give isl_set *isl_set_from_pw_aff(__isl_take isl_pw_aff *pwaff); 354 __isl_give isl_map *isl_map_from_pw_aff(__isl_take isl_pw_aff *pwaff); 355 356 __isl_give isl_set *isl_pw_aff_pos_set(__isl_take isl_pw_aff *pa); 357 __isl_give isl_set *isl_pw_aff_nonneg_set(__isl_take isl_pw_aff *pwaff); 358 __isl_give isl_set *isl_pw_aff_zero_set(__isl_take isl_pw_aff *pwaff); 359 __isl_give isl_set *isl_pw_aff_non_zero_set(__isl_take isl_pw_aff *pwaff); 360 361 __isl_export 362 __isl_give isl_set *isl_pw_aff_eq_set(__isl_take isl_pw_aff *pwaff1, 363 __isl_take isl_pw_aff *pwaff2); 364 __isl_export 365 __isl_give isl_set *isl_pw_aff_ne_set(__isl_take isl_pw_aff *pwaff1, 366 __isl_take isl_pw_aff *pwaff2); 367 __isl_export 368 __isl_give isl_set *isl_pw_aff_le_set(__isl_take isl_pw_aff *pwaff1, 369 __isl_take isl_pw_aff *pwaff2); 370 __isl_export 371 __isl_give isl_set *isl_pw_aff_lt_set(__isl_take isl_pw_aff *pwaff1, 372 __isl_take isl_pw_aff *pwaff2); 373 __isl_export 374 __isl_give isl_set *isl_pw_aff_ge_set(__isl_take isl_pw_aff *pwaff1, 375 __isl_take isl_pw_aff *pwaff2); 376 __isl_export 377 __isl_give isl_set *isl_pw_aff_gt_set(__isl_take isl_pw_aff *pwaff1, 378 __isl_take isl_pw_aff *pwaff2); 379 380 __isl_give isl_map *isl_pw_aff_eq_map(__isl_take isl_pw_aff *pa1, 381 __isl_take isl_pw_aff *pa2); 382 __isl_give isl_map *isl_pw_aff_lt_map(__isl_take isl_pw_aff *pa1, 383 __isl_take isl_pw_aff *pa2); 384 __isl_give isl_map *isl_pw_aff_gt_map(__isl_take isl_pw_aff *pa1, 385 __isl_take isl_pw_aff *pa2); 386 387 __isl_constructor 388 __isl_give isl_pw_aff *isl_pw_aff_read_from_str(isl_ctx *ctx, const char *str); 389 __isl_give char *isl_pw_aff_to_str(__isl_keep isl_pw_aff *pa); 390 __isl_give isl_printer *isl_printer_print_pw_aff(__isl_take isl_printer *p, 391 __isl_keep isl_pw_aff *pwaff); 392 void isl_pw_aff_dump(__isl_keep isl_pw_aff *pwaff); 393 394 __isl_give isl_pw_aff *isl_pw_aff_list_min(__isl_take isl_pw_aff_list *list); 395 __isl_give isl_pw_aff *isl_pw_aff_list_max(__isl_take isl_pw_aff_list *list); 396 397 __isl_give isl_set *isl_pw_aff_list_eq_set(__isl_take isl_pw_aff_list *list1, 398 __isl_take isl_pw_aff_list *list2); 399 __isl_give isl_set *isl_pw_aff_list_ne_set(__isl_take isl_pw_aff_list *list1, 400 __isl_take isl_pw_aff_list *list2); 401 __isl_give isl_set *isl_pw_aff_list_le_set(__isl_take isl_pw_aff_list *list1, 402 __isl_take isl_pw_aff_list *list2); 403 __isl_give isl_set *isl_pw_aff_list_lt_set(__isl_take isl_pw_aff_list *list1, 404 __isl_take isl_pw_aff_list *list2); 405 __isl_give isl_set *isl_pw_aff_list_ge_set(__isl_take isl_pw_aff_list *list1, 406 __isl_take isl_pw_aff_list *list2); 407 __isl_give isl_set *isl_pw_aff_list_gt_set(__isl_take isl_pw_aff_list *list1, 408 __isl_take isl_pw_aff_list *list2); 409 410 ISL_DECLARE_MULTI(aff) 411 ISL_DECLARE_MULTI_CMP(aff) 412 ISL_DECLARE_MULTI_NEG(aff) 413 ISL_DECLARE_MULTI_DIMS(aff) 414 ISL_DECLARE_MULTI_WITH_DOMAIN(aff) 415 416 __isl_constructor 417 __isl_give isl_multi_aff *isl_multi_aff_from_aff(__isl_take isl_aff *aff); 418 __isl_give isl_multi_aff *isl_multi_aff_identity(__isl_take isl_space *space); 419 __isl_give isl_multi_aff *isl_multi_aff_domain_map(__isl_take isl_space *space); 420 __isl_give isl_multi_aff *isl_multi_aff_range_map(__isl_take isl_space *space); 421 __isl_give isl_multi_aff *isl_multi_aff_project_out_map( 422 __isl_take isl_space *space, enum isl_dim_type type, 423 unsigned first, unsigned n); 424 425 __isl_give isl_multi_aff *isl_multi_aff_multi_val_on_space( 426 __isl_take isl_space *space, __isl_take isl_multi_val *mv); 427 428 __isl_give isl_multi_aff *isl_multi_aff_floor(__isl_take isl_multi_aff *ma); 429 430 __isl_give isl_multi_aff *isl_multi_aff_gist_params( 431 __isl_take isl_multi_aff *maff, __isl_take isl_set *context); 432 __isl_give isl_multi_aff *isl_multi_aff_gist(__isl_take isl_multi_aff *maff, 433 __isl_take isl_set *context); 434 435 __isl_give isl_multi_aff *isl_multi_aff_lift(__isl_take isl_multi_aff *maff, 436 __isl_give isl_local_space **ls); 437 438 __isl_overload 439 __isl_give isl_multi_aff *isl_multi_aff_pullback_multi_aff( 440 __isl_take isl_multi_aff *ma1, __isl_take isl_multi_aff *ma2); 441 442 __isl_give isl_multi_aff *isl_multi_aff_move_dims(__isl_take isl_multi_aff *ma, 443 enum isl_dim_type dst_type, unsigned dst_pos, 444 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 445 446 __isl_give isl_set *isl_multi_aff_lex_lt_set(__isl_take isl_multi_aff *ma1, 447 __isl_take isl_multi_aff *ma2); 448 __isl_give isl_set *isl_multi_aff_lex_le_set(__isl_take isl_multi_aff *ma1, 449 __isl_take isl_multi_aff *ma2); 450 __isl_give isl_set *isl_multi_aff_lex_gt_set(__isl_take isl_multi_aff *ma1, 451 __isl_take isl_multi_aff *ma2); 452 __isl_give isl_set *isl_multi_aff_lex_ge_set(__isl_take isl_multi_aff *ma1, 453 __isl_take isl_multi_aff *ma2); 454 455 __isl_give char *isl_multi_aff_to_str(__isl_keep isl_multi_aff *ma); 456 __isl_give isl_printer *isl_printer_print_multi_aff(__isl_take isl_printer *p, 457 __isl_keep isl_multi_aff *maff); 458 459 __isl_constructor 460 __isl_give isl_multi_aff *isl_multi_aff_read_from_str(isl_ctx *ctx, 461 const char *str); 462 void isl_multi_aff_dump(__isl_keep isl_multi_aff *maff); 463 464 ISL_DECLARE_MULTI(pw_aff) 465 ISL_DECLARE_MULTI_NEG(pw_aff) 466 ISL_DECLARE_MULTI_DIMS(pw_aff) 467 ISL_DECLARE_MULTI_WITH_DOMAIN(pw_aff) 468 469 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_zero(__isl_take isl_space *space); 470 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_identity( 471 __isl_take isl_space *space); 472 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_map( 473 __isl_take isl_space *space); 474 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_out_map( 475 __isl_take isl_space *space, enum isl_dim_type type, 476 unsigned first, unsigned n); 477 __isl_constructor 478 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_multi_aff( 479 __isl_take isl_multi_aff *ma); 480 __isl_constructor 481 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_pw_aff( 482 __isl_take isl_pw_aff *pa); 483 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_alloc(__isl_take isl_set *set, 484 __isl_take isl_multi_aff *maff); 485 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_copy( 486 __isl_keep isl_pw_multi_aff *pma); 487 __isl_null isl_pw_multi_aff *isl_pw_multi_aff_free( 488 __isl_take isl_pw_multi_aff *pma); 489 490 unsigned isl_pw_multi_aff_dim(__isl_keep isl_pw_multi_aff *pma, 491 enum isl_dim_type type); 492 isl_bool isl_pw_multi_aff_involves_dims(__isl_keep isl_pw_multi_aff *pma, 493 enum isl_dim_type type, unsigned first, unsigned n); 494 __isl_give isl_pw_aff *isl_pw_multi_aff_get_pw_aff( 495 __isl_keep isl_pw_multi_aff *pma, int pos); 496 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_pw_aff( 497 __isl_take isl_pw_multi_aff *pma, unsigned pos, 498 __isl_take isl_pw_aff *pa); 499 500 isl_ctx *isl_pw_multi_aff_get_ctx(__isl_keep isl_pw_multi_aff *pma); 501 __isl_give isl_space *isl_pw_multi_aff_get_domain_space( 502 __isl_keep isl_pw_multi_aff *pma); 503 __isl_give isl_space *isl_pw_multi_aff_get_space( 504 __isl_keep isl_pw_multi_aff *pma); 505 isl_bool isl_pw_multi_aff_has_tuple_name(__isl_keep isl_pw_multi_aff *pma, 506 enum isl_dim_type type); 507 const char *isl_pw_multi_aff_get_tuple_name(__isl_keep isl_pw_multi_aff *pma, 508 enum isl_dim_type type); 509 __isl_give isl_id *isl_pw_multi_aff_get_tuple_id( 510 __isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type); 511 isl_bool isl_pw_multi_aff_has_tuple_id(__isl_keep isl_pw_multi_aff *pma, 512 enum isl_dim_type type); 513 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_tuple_id( 514 __isl_take isl_pw_multi_aff *pma, 515 enum isl_dim_type type, __isl_take isl_id *id); 516 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_tuple_id( 517 __isl_take isl_pw_multi_aff *pma, enum isl_dim_type type); 518 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_reset_user( 519 __isl_take isl_pw_multi_aff *pma); 520 521 int isl_pw_multi_aff_find_dim_by_name(__isl_keep isl_pw_multi_aff *pma, 522 enum isl_dim_type type, const char *name); 523 524 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_drop_dims( 525 __isl_take isl_pw_multi_aff *pma, 526 enum isl_dim_type type, unsigned first, unsigned n); 527 528 __isl_give isl_set *isl_pw_multi_aff_domain(__isl_take isl_pw_multi_aff *pma); 529 530 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_empty(__isl_take isl_space *space); 531 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_domain( 532 __isl_take isl_set *set); 533 534 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_multi_val_on_domain( 535 __isl_take isl_set *domain, __isl_take isl_multi_val *mv); 536 537 const char *isl_pw_multi_aff_get_dim_name(__isl_keep isl_pw_multi_aff *pma, 538 enum isl_dim_type type, unsigned pos); 539 __isl_give isl_id *isl_pw_multi_aff_get_dim_id( 540 __isl_keep isl_pw_multi_aff *pma, enum isl_dim_type type, 541 unsigned pos); 542 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_set_dim_id( 543 __isl_take isl_pw_multi_aff *pma, 544 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 545 546 isl_bool isl_pw_multi_aff_involves_nan(__isl_keep isl_pw_multi_aff *pma); 547 isl_bool isl_pw_multi_aff_plain_is_equal(__isl_keep isl_pw_multi_aff *pma1, 548 __isl_keep isl_pw_multi_aff *pma2); 549 isl_bool isl_pw_multi_aff_is_equal(__isl_keep isl_pw_multi_aff *pma1, 550 __isl_keep isl_pw_multi_aff *pma2); 551 552 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_fix_si( 553 __isl_take isl_pw_multi_aff *pma, enum isl_dim_type type, 554 unsigned pos, int value); 555 556 __isl_export 557 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_add( 558 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 559 560 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_neg( 561 __isl_take isl_pw_multi_aff *pma); 562 563 __isl_export 564 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_add( 565 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 566 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_sub( 567 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 568 569 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_val( 570 __isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v); 571 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_down_val( 572 __isl_take isl_pw_multi_aff *pma, __isl_take isl_val *v); 573 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_scale_multi_val( 574 __isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_val *mv); 575 576 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmin( 577 __isl_take isl_pw_multi_aff *pma1, 578 __isl_take isl_pw_multi_aff *pma2); 579 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_union_lexmax( 580 __isl_take isl_pw_multi_aff *pma1, 581 __isl_take isl_pw_multi_aff *pma2); 582 583 __isl_give isl_multi_aff *isl_multi_aff_flatten_domain( 584 __isl_take isl_multi_aff *ma); 585 586 __isl_export 587 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_range_product( 588 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 589 __isl_export 590 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_flat_range_product( 591 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 592 __isl_export 593 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_product( 594 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 595 596 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_params( 597 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 598 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_intersect_domain( 599 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 600 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_subtract_domain( 601 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 602 603 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_project_domain_on_params( 604 __isl_take isl_pw_multi_aff *pma); 605 606 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_align_params( 607 __isl_take isl_pw_multi_aff *pma, __isl_take isl_space *model); 608 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_drop_unused_params( 609 __isl_take isl_pw_multi_aff *pma); 610 611 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_coalesce( 612 __isl_take isl_pw_multi_aff *pma); 613 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist_params( 614 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 615 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_gist( 616 __isl_take isl_pw_multi_aff *pma, __isl_take isl_set *set); 617 618 __isl_overload 619 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_pullback_multi_aff( 620 __isl_take isl_pw_multi_aff *pma, __isl_take isl_multi_aff *ma); 621 __isl_overload 622 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_pullback_pw_multi_aff( 623 __isl_take isl_pw_multi_aff *pma1, __isl_take isl_pw_multi_aff *pma2); 624 625 int isl_pw_multi_aff_n_piece(__isl_keep isl_pw_multi_aff *pma); 626 isl_stat isl_pw_multi_aff_foreach_piece(__isl_keep isl_pw_multi_aff *pma, 627 isl_stat (*fn)(__isl_take isl_set *set, __isl_take isl_multi_aff *maff, 628 void *user), void *user); 629 630 __isl_give isl_map *isl_map_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma); 631 __isl_give isl_set *isl_set_from_pw_multi_aff(__isl_take isl_pw_multi_aff *pma); 632 633 __isl_give char *isl_pw_multi_aff_to_str(__isl_keep isl_pw_multi_aff *pma); 634 __isl_give isl_printer *isl_printer_print_pw_multi_aff(__isl_take isl_printer *p, 635 __isl_keep isl_pw_multi_aff *pma); 636 637 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_set(__isl_take isl_set *set); 638 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_map(__isl_take isl_map *map); 639 640 __isl_constructor 641 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_read_from_str(isl_ctx *ctx, 642 const char *str); 643 void isl_pw_multi_aff_dump(__isl_keep isl_pw_multi_aff *pma); 644 645 646 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_empty( 647 __isl_take isl_space *space); 648 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_aff( 649 __isl_take isl_aff *aff); 650 __isl_constructor 651 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_pw_multi_aff( 652 __isl_take isl_pw_multi_aff *pma); 653 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_domain( 654 __isl_take isl_union_set *uset); 655 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_multi_val_on_domain( 656 __isl_take isl_union_set *domain, __isl_take isl_multi_val *mv); 657 __isl_give isl_union_pw_aff *isl_union_pw_aff_param_on_domain_id( 658 __isl_take isl_union_set *domain, __isl_take isl_id *id); 659 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_copy( 660 __isl_keep isl_union_pw_multi_aff *upma); 661 __isl_null isl_union_pw_multi_aff *isl_union_pw_multi_aff_free( 662 __isl_take isl_union_pw_multi_aff *upma); 663 664 __isl_give isl_union_pw_multi_aff *isl_union_set_identity_union_pw_multi_aff( 665 __isl_take isl_union_set *uset); 666 667 __isl_give isl_union_pw_aff *isl_union_pw_multi_aff_get_union_pw_aff( 668 __isl_keep isl_union_pw_multi_aff *upma, int pos); 669 670 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_add_pw_multi_aff( 671 __isl_take isl_union_pw_multi_aff *upma, 672 __isl_take isl_pw_multi_aff *pma); 673 674 isl_ctx *isl_union_pw_multi_aff_get_ctx( 675 __isl_keep isl_union_pw_multi_aff *upma); 676 __isl_give isl_space *isl_union_pw_multi_aff_get_space( 677 __isl_keep isl_union_pw_multi_aff *upma); 678 __isl_give isl_pw_multi_aff_list *isl_union_pw_multi_aff_get_pw_multi_aff_list( 679 __isl_keep isl_union_pw_multi_aff *upma); 680 681 unsigned isl_union_pw_multi_aff_dim(__isl_keep isl_union_pw_multi_aff *upma, 682 enum isl_dim_type type); 683 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_set_dim_name( 684 __isl_take isl_union_pw_multi_aff *upma, 685 enum isl_dim_type type, unsigned pos, const char *s); 686 687 int isl_union_pw_multi_aff_find_dim_by_name( 688 __isl_keep isl_union_pw_multi_aff *upma, enum isl_dim_type type, 689 const char *name); 690 691 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_drop_dims( 692 __isl_take isl_union_pw_multi_aff *upma, 693 enum isl_dim_type type, unsigned first, unsigned n); 694 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_reset_user( 695 __isl_take isl_union_pw_multi_aff *upma); 696 697 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_coalesce( 698 __isl_take isl_union_pw_multi_aff *upma); 699 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_gist_params( 700 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_set *context); 701 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_gist( 702 __isl_take isl_union_pw_multi_aff *upma, 703 __isl_take isl_union_set *context); 704 705 __isl_overload 706 __isl_give isl_union_pw_multi_aff * 707 isl_union_pw_multi_aff_pullback_union_pw_multi_aff( 708 __isl_take isl_union_pw_multi_aff *upma1, 709 __isl_take isl_union_pw_multi_aff *upma2); 710 711 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_align_params( 712 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_space *model); 713 714 int isl_union_pw_multi_aff_n_pw_multi_aff( 715 __isl_keep isl_union_pw_multi_aff *upma); 716 717 isl_stat isl_union_pw_multi_aff_foreach_pw_multi_aff( 718 __isl_keep isl_union_pw_multi_aff *upma, 719 isl_stat (*fn)(__isl_take isl_pw_multi_aff *pma, void *user), 720 void *user); 721 __isl_give isl_pw_multi_aff *isl_union_pw_multi_aff_extract_pw_multi_aff( 722 __isl_keep isl_union_pw_multi_aff *upma, __isl_take isl_space *space); 723 724 isl_bool isl_union_pw_multi_aff_involves_nan( 725 __isl_keep isl_union_pw_multi_aff *upma); 726 isl_bool isl_union_pw_multi_aff_plain_is_equal( 727 __isl_keep isl_union_pw_multi_aff *upma1, 728 __isl_keep isl_union_pw_multi_aff *upma2); 729 730 __isl_give isl_union_set *isl_union_pw_multi_aff_domain( 731 __isl_take isl_union_pw_multi_aff *upma); 732 733 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_neg( 734 __isl_take isl_union_pw_multi_aff *upma); 735 736 __isl_export 737 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_add( 738 __isl_take isl_union_pw_multi_aff *upma1, 739 __isl_take isl_union_pw_multi_aff *upma2); 740 __isl_export 741 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_union_add( 742 __isl_take isl_union_pw_multi_aff *upma1, 743 __isl_take isl_union_pw_multi_aff *upma2); 744 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_sub( 745 __isl_take isl_union_pw_multi_aff *upma1, 746 __isl_take isl_union_pw_multi_aff *upma2); 747 748 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_scale_val( 749 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_val *val); 750 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_scale_down_val( 751 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_val *val); 752 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_scale_multi_val( 753 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_multi_val *mv); 754 755 __isl_export 756 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_flat_range_product( 757 __isl_take isl_union_pw_multi_aff *upma1, 758 __isl_take isl_union_pw_multi_aff *upma2); 759 760 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_intersect_params( 761 __isl_take isl_union_pw_multi_aff *upma, __isl_take isl_set *set); 762 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_intersect_domain( 763 __isl_take isl_union_pw_multi_aff *upma, 764 __isl_take isl_union_set *uset); 765 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_subtract_domain( 766 __isl_take isl_union_pw_multi_aff *upma, 767 __isl_take isl_union_set *uset); 768 769 __isl_overload 770 __isl_give isl_union_map *isl_union_map_from_union_pw_multi_aff( 771 __isl_take isl_union_pw_multi_aff *upma); 772 773 __isl_give isl_printer *isl_printer_print_union_pw_multi_aff( 774 __isl_take isl_printer *p, __isl_keep isl_union_pw_multi_aff *upma); 775 776 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_set( 777 __isl_take isl_union_set *uset); 778 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_map( 779 __isl_take isl_union_map *umap); 780 781 __isl_constructor 782 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_read_from_str( 783 isl_ctx *ctx, const char *str); 784 void isl_union_pw_multi_aff_dump(__isl_keep isl_union_pw_multi_aff *upma); 785 __isl_give char *isl_union_pw_multi_aff_to_str( 786 __isl_keep isl_union_pw_multi_aff *upma); 787 788 uint32_t isl_multi_pw_aff_get_hash(__isl_keep isl_multi_pw_aff *mpa); 789 790 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_identity( 791 __isl_take isl_space *space); 792 __isl_constructor 793 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_multi_aff( 794 __isl_take isl_multi_aff *ma); 795 __isl_constructor 796 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_aff( 797 __isl_take isl_pw_aff *pa); 798 __isl_give isl_set *isl_multi_pw_aff_domain(__isl_take isl_multi_pw_aff *mpa); 799 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_intersect_params( 800 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set); 801 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_intersect_domain( 802 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *domain); 803 804 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_coalesce( 805 __isl_take isl_multi_pw_aff *mpa); 806 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_gist( 807 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set); 808 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_gist_params( 809 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_set *set); 810 811 isl_bool isl_multi_pw_aff_is_cst(__isl_keep isl_multi_pw_aff *mpa); 812 isl_bool isl_multi_pw_aff_is_equal(__isl_keep isl_multi_pw_aff *mpa1, 813 __isl_keep isl_multi_pw_aff *mpa2); 814 815 __isl_overload 816 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_multi_aff( 817 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_multi_aff *ma); 818 __isl_overload 819 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_pw_multi_aff( 820 __isl_take isl_multi_pw_aff *mpa, __isl_take isl_pw_multi_aff *pma); 821 __isl_overload 822 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_pullback_multi_pw_aff( 823 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 824 825 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_move_dims( 826 __isl_take isl_multi_pw_aff *pma, 827 enum isl_dim_type dst_type, unsigned dst_pos, 828 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 829 830 __isl_give isl_set *isl_set_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa); 831 __isl_give isl_map *isl_map_from_multi_pw_aff(__isl_take isl_multi_pw_aff *mpa); 832 __isl_give isl_pw_multi_aff *isl_pw_multi_aff_from_multi_pw_aff( 833 __isl_take isl_multi_pw_aff *mpa); 834 __isl_constructor 835 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_from_pw_multi_aff( 836 __isl_take isl_pw_multi_aff *pma); 837 838 __isl_give isl_map *isl_multi_pw_aff_eq_map(__isl_take isl_multi_pw_aff *mpa1, 839 __isl_take isl_multi_pw_aff *mpa2); 840 __isl_give isl_map *isl_multi_pw_aff_lex_lt_map( 841 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 842 __isl_give isl_map *isl_multi_pw_aff_lex_gt_map( 843 __isl_take isl_multi_pw_aff *mpa1, __isl_take isl_multi_pw_aff *mpa2); 844 845 __isl_constructor 846 __isl_give isl_multi_pw_aff *isl_multi_pw_aff_read_from_str(isl_ctx *ctx, 847 const char *str); 848 __isl_give char *isl_multi_pw_aff_to_str(__isl_keep isl_multi_pw_aff *mpa); 849 __isl_give isl_printer *isl_printer_print_multi_pw_aff( 850 __isl_take isl_printer *p, __isl_keep isl_multi_pw_aff *mpa); 851 void isl_multi_pw_aff_dump(__isl_keep isl_multi_pw_aff *mpa); 852 853 __isl_give isl_union_pw_aff *isl_union_pw_aff_copy( 854 __isl_keep isl_union_pw_aff *upa); 855 __isl_null isl_union_pw_aff *isl_union_pw_aff_free( 856 __isl_take isl_union_pw_aff *upa); 857 858 isl_ctx *isl_union_pw_aff_get_ctx(__isl_keep isl_union_pw_aff *upa); 859 __isl_give isl_space *isl_union_pw_aff_get_space( 860 __isl_keep isl_union_pw_aff *upa); 861 __isl_give isl_pw_aff_list *isl_union_pw_aff_get_pw_aff_list( 862 __isl_keep isl_union_pw_aff *upa); 863 864 unsigned isl_union_pw_aff_dim(__isl_keep isl_union_pw_aff *upa, 865 enum isl_dim_type type); 866 __isl_give isl_union_pw_aff *isl_union_pw_aff_set_dim_name( 867 __isl_take isl_union_pw_aff *upa, enum isl_dim_type type, 868 unsigned pos, const char *s); 869 870 int isl_union_pw_aff_find_dim_by_name(__isl_keep isl_union_pw_aff *upa, 871 enum isl_dim_type type, const char *name); 872 873 __isl_give isl_union_pw_aff *isl_union_pw_aff_drop_dims( 874 __isl_take isl_union_pw_aff *upa, 875 enum isl_dim_type type, unsigned first, unsigned n); 876 __isl_give isl_union_pw_aff *isl_union_pw_aff_reset_user( 877 __isl_take isl_union_pw_aff *upa); 878 879 __isl_give isl_union_pw_aff *isl_union_pw_aff_empty( 880 __isl_take isl_space *space); 881 __isl_constructor 882 __isl_give isl_union_pw_aff *isl_union_pw_aff_from_pw_aff( 883 __isl_take isl_pw_aff *pa); 884 __isl_give isl_union_pw_aff *isl_union_pw_aff_val_on_domain( 885 __isl_take isl_union_set *domain, __isl_take isl_val *v); 886 __isl_give isl_union_pw_aff *isl_union_pw_aff_aff_on_domain( 887 __isl_take isl_union_set *domain, __isl_take isl_aff *aff); 888 __isl_give isl_union_pw_aff *isl_union_pw_aff_pw_aff_on_domain( 889 __isl_take isl_union_set *domain, __isl_take isl_pw_aff *pa); 890 __isl_give isl_union_pw_aff *isl_union_pw_aff_add_pw_aff( 891 __isl_take isl_union_pw_aff *upa, __isl_take isl_pw_aff *pa); 892 893 __isl_constructor 894 __isl_give isl_union_pw_multi_aff *isl_union_pw_multi_aff_from_union_pw_aff( 895 __isl_take isl_union_pw_aff *upa); 896 897 int isl_union_pw_aff_n_pw_aff(__isl_keep isl_union_pw_aff *upa); 898 899 isl_stat isl_union_pw_aff_foreach_pw_aff(__isl_keep isl_union_pw_aff *upa, 900 isl_stat (*fn)(__isl_take isl_pw_aff *pa, void *user), void *user); 901 __isl_give isl_pw_aff *isl_union_pw_aff_extract_pw_aff( 902 __isl_keep isl_union_pw_aff *upa, __isl_take isl_space *space); 903 904 isl_bool isl_union_pw_aff_involves_nan(__isl_keep isl_union_pw_aff *upa); 905 isl_bool isl_union_pw_aff_plain_is_equal(__isl_keep isl_union_pw_aff *upa1, 906 __isl_keep isl_union_pw_aff *upa2); 907 908 __isl_give isl_union_set *isl_union_pw_aff_domain( 909 __isl_take isl_union_pw_aff *upa); 910 911 __isl_give isl_union_pw_aff *isl_union_pw_aff_neg( 912 __isl_take isl_union_pw_aff *upa); 913 914 __isl_export 915 __isl_give isl_union_pw_aff *isl_union_pw_aff_add( 916 __isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2); 917 __isl_export 918 __isl_give isl_union_pw_aff *isl_union_pw_aff_union_add( 919 __isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2); 920 __isl_give isl_union_pw_aff *isl_union_pw_aff_sub( 921 __isl_take isl_union_pw_aff *upa1, __isl_take isl_union_pw_aff *upa2); 922 923 __isl_give isl_union_pw_aff *isl_union_pw_aff_coalesce( 924 __isl_take isl_union_pw_aff *upa); 925 __isl_give isl_union_pw_aff *isl_union_pw_aff_gist( 926 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *context); 927 __isl_give isl_union_pw_aff *isl_union_pw_aff_gist_params( 928 __isl_take isl_union_pw_aff *upa, __isl_take isl_set *context); 929 930 __isl_overload 931 __isl_give isl_union_pw_aff *isl_union_pw_aff_pullback_union_pw_multi_aff( 932 __isl_take isl_union_pw_aff *upa, 933 __isl_take isl_union_pw_multi_aff *upma); 934 935 __isl_give isl_union_pw_aff *isl_union_pw_aff_floor( 936 __isl_take isl_union_pw_aff *upa); 937 938 __isl_give isl_union_pw_aff *isl_union_pw_aff_scale_val( 939 __isl_take isl_union_pw_aff *upa, __isl_take isl_val *v); 940 __isl_give isl_union_pw_aff *isl_union_pw_aff_scale_down_val( 941 __isl_take isl_union_pw_aff *upa, __isl_take isl_val *v); 942 __isl_give isl_union_pw_aff *isl_union_pw_aff_mod_val( 943 __isl_take isl_union_pw_aff *upa, __isl_take isl_val *f); 944 945 __isl_give isl_union_pw_aff *isl_union_pw_aff_align_params( 946 __isl_take isl_union_pw_aff *upa, __isl_take isl_space *model); 947 948 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_params( 949 __isl_take isl_union_pw_aff *upa, __isl_take isl_set *set); 950 __isl_give isl_union_pw_aff *isl_union_pw_aff_intersect_domain( 951 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset); 952 __isl_give isl_union_pw_aff *isl_union_pw_aff_subtract_domain( 953 __isl_take isl_union_pw_aff *upa, __isl_take isl_union_set *uset); 954 955 __isl_give isl_union_pw_aff *isl_union_pw_aff_set_dim_name( 956 __isl_take isl_union_pw_aff *upa, 957 enum isl_dim_type type, unsigned pos, const char *s); 958 959 __isl_give isl_union_set *isl_union_pw_aff_zero_union_set( 960 __isl_take isl_union_pw_aff *upa); 961 962 __isl_give isl_union_map *isl_union_map_from_union_pw_aff( 963 __isl_take isl_union_pw_aff *upa); 964 965 __isl_constructor 966 __isl_give isl_union_pw_aff *isl_union_pw_aff_read_from_str(isl_ctx *ctx, 967 const char *str); 968 __isl_give char *isl_union_pw_aff_to_str(__isl_keep isl_union_pw_aff *upa); 969 __isl_give isl_printer *isl_printer_print_union_pw_aff( 970 __isl_take isl_printer *p, __isl_keep isl_union_pw_aff *upa); 971 void isl_union_pw_aff_dump(__isl_keep isl_union_pw_aff *upa); 972 973 ISL_DECLARE_MULTI(union_pw_aff) 974 ISL_DECLARE_MULTI_NEG(union_pw_aff) 975 976 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_multi_aff( 977 __isl_take isl_multi_aff *ma); 978 __isl_constructor 979 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_union_pw_aff( 980 __isl_take isl_union_pw_aff *upa); 981 __isl_constructor 982 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_multi_pw_aff( 983 __isl_take isl_multi_pw_aff *mpa); 984 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_multi_val_on_domain( 985 __isl_take isl_union_set *domain, __isl_take isl_multi_val *mv); 986 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_multi_aff_on_domain( 987 __isl_take isl_union_set *domain, __isl_take isl_multi_aff *ma); 988 __isl_give isl_multi_union_pw_aff * 989 isl_multi_union_pw_aff_pw_multi_aff_on_domain(__isl_take isl_union_set *domain, 990 __isl_take isl_pw_multi_aff *pma); 991 992 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_floor( 993 __isl_take isl_multi_union_pw_aff *mupa); 994 995 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_intersect_domain( 996 __isl_take isl_multi_union_pw_aff *mupa, 997 __isl_take isl_union_set *uset); 998 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_intersect_params( 999 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_set *params); 1000 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_intersect_range( 1001 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_set *set); 1002 1003 __isl_give isl_union_set *isl_multi_union_pw_aff_domain( 1004 __isl_take isl_multi_union_pw_aff *mupa); 1005 1006 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_coalesce( 1007 __isl_take isl_multi_union_pw_aff *aff); 1008 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_gist( 1009 __isl_take isl_multi_union_pw_aff *aff, 1010 __isl_take isl_union_set *context); 1011 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_gist_params( 1012 __isl_take isl_multi_union_pw_aff *aff, __isl_take isl_set *context); 1013 1014 __isl_give isl_union_pw_aff *isl_multi_union_pw_aff_apply_aff( 1015 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_aff *aff); 1016 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_apply_multi_aff( 1017 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_multi_aff *ma); 1018 __isl_give isl_union_pw_aff *isl_multi_union_pw_aff_apply_pw_aff( 1019 __isl_take isl_multi_union_pw_aff *mupa, __isl_take isl_pw_aff *pa); 1020 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_apply_pw_multi_aff( 1021 __isl_take isl_multi_union_pw_aff *mupa, 1022 __isl_take isl_pw_multi_aff *pma); 1023 1024 __isl_overload 1025 __isl_give isl_multi_union_pw_aff * 1026 isl_multi_union_pw_aff_pullback_union_pw_multi_aff( 1027 __isl_take isl_multi_union_pw_aff *mupa, 1028 __isl_take isl_union_pw_multi_aff *upma); 1029 1030 __isl_give isl_union_pw_multi_aff * 1031 isl_union_pw_multi_aff_from_multi_union_pw_aff( 1032 __isl_take isl_multi_union_pw_aff *mupa); 1033 1034 __isl_export 1035 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_union_add( 1036 __isl_take isl_multi_union_pw_aff *mupa1, 1037 __isl_take isl_multi_union_pw_aff *mupa2); 1038 1039 __isl_give isl_multi_union_pw_aff * 1040 isl_multi_union_pw_aff_from_union_pw_multi_aff( 1041 __isl_take isl_union_pw_multi_aff *upma); 1042 1043 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_from_union_map( 1044 __isl_take isl_union_map *umap); 1045 __isl_overload 1046 __isl_give isl_union_map *isl_union_map_from_multi_union_pw_aff( 1047 __isl_take isl_multi_union_pw_aff *mupa); 1048 1049 __isl_give isl_union_set *isl_multi_union_pw_aff_zero_union_set( 1050 __isl_take isl_multi_union_pw_aff *mupa); 1051 1052 __isl_give isl_multi_pw_aff *isl_multi_union_pw_aff_extract_multi_pw_aff( 1053 __isl_keep isl_multi_union_pw_aff *mupa, __isl_take isl_space *space); 1054 1055 __isl_constructor 1056 __isl_give isl_multi_union_pw_aff *isl_multi_union_pw_aff_read_from_str( 1057 isl_ctx *ctx, const char *str); 1058 __isl_give char *isl_multi_union_pw_aff_to_str( 1059 __isl_keep isl_multi_union_pw_aff *mupa); 1060 __isl_give isl_printer *isl_printer_print_multi_union_pw_aff( 1061 __isl_take isl_printer *p, __isl_keep isl_multi_union_pw_aff *mupa); 1062 void isl_multi_union_pw_aff_dump(__isl_keep isl_multi_union_pw_aff *mupa); 1063 1064 ISL_DECLARE_LIST_FN(pw_multi_aff) 1065 ISL_DECLARE_LIST_FN(union_pw_aff) 1066 ISL_DECLARE_LIST_FN(union_pw_multi_aff) 1067 1068 #if defined(__cplusplus) 1069 } 1070 #endif 1071 1072 #endif 1073