1 /* 2 * Copyright 2008-2009 Katholieke Universiteit Leuven 3 * 4 * Use of this software is governed by the MIT license 5 * 6 * Written by Sven Verdoolaege, K.U.Leuven, Departement 7 * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium 8 */ 9 10 #ifndef ISL_MAP_H 11 #define ISL_MAP_H 12 13 #include <stdio.h> 14 15 #include <isl/ctx.h> 16 #include <isl/space_type.h> 17 #include <isl/vec.h> 18 #include <isl/mat.h> 19 #include <isl/printer.h> 20 #include <isl/local_space.h> 21 #include <isl/aff_type.h> 22 #include <isl/list.h> 23 #include <isl/map_type.h> 24 #include <isl/val_type.h> 25 #include <isl/stdint.h> 26 #include <isl/stride_info.h> 27 #include <isl/fixed_box.h> 28 29 #if defined(__cplusplus) 30 extern "C" { 31 #endif 32 33 isl_size isl_basic_map_total_dim(__isl_keep const isl_basic_map *bmap); 34 isl_size isl_basic_map_dim(__isl_keep isl_basic_map *bmap, 35 enum isl_dim_type type); 36 37 isl_size isl_map_dim(__isl_keep isl_map *map, enum isl_dim_type type); 38 39 isl_ctx *isl_basic_map_get_ctx(__isl_keep isl_basic_map *bmap); 40 isl_ctx *isl_map_get_ctx(__isl_keep isl_map *map); 41 __isl_give isl_space *isl_basic_map_get_space(__isl_keep isl_basic_map *bmap); 42 __isl_export 43 __isl_give isl_space *isl_map_get_space(__isl_keep isl_map *map); 44 45 __isl_give isl_aff *isl_basic_map_get_div(__isl_keep isl_basic_map *bmap, 46 int pos); 47 48 __isl_give isl_local_space *isl_basic_map_get_local_space( 49 __isl_keep isl_basic_map *bmap); 50 51 __isl_give isl_basic_map *isl_basic_map_set_tuple_name( 52 __isl_take isl_basic_map *bmap, enum isl_dim_type type, const char *s); 53 const char *isl_basic_map_get_tuple_name(__isl_keep isl_basic_map *bmap, 54 enum isl_dim_type type); 55 isl_bool isl_map_has_tuple_name(__isl_keep isl_map *map, 56 enum isl_dim_type type); 57 const char *isl_map_get_tuple_name(__isl_keep isl_map *map, 58 enum isl_dim_type type); 59 __isl_give isl_map *isl_map_set_tuple_name(__isl_take isl_map *map, 60 enum isl_dim_type type, const char *s); 61 const char *isl_basic_map_get_dim_name(__isl_keep isl_basic_map *bmap, 62 enum isl_dim_type type, unsigned pos); 63 isl_bool isl_map_has_dim_name(__isl_keep isl_map *map, 64 enum isl_dim_type type, unsigned pos); 65 const char *isl_map_get_dim_name(__isl_keep isl_map *map, 66 enum isl_dim_type type, unsigned pos); 67 __isl_give isl_basic_map *isl_basic_map_set_dim_name( 68 __isl_take isl_basic_map *bmap, 69 enum isl_dim_type type, unsigned pos, const char *s); 70 __isl_give isl_map *isl_map_set_dim_name(__isl_take isl_map *map, 71 enum isl_dim_type type, unsigned pos, const char *s); 72 73 __isl_give isl_basic_map *isl_basic_map_set_tuple_id( 74 __isl_take isl_basic_map *bmap, 75 enum isl_dim_type type, __isl_take isl_id *id); 76 __isl_give isl_map *isl_map_set_dim_id(__isl_take isl_map *map, 77 enum isl_dim_type type, unsigned pos, __isl_take isl_id *id); 78 isl_bool isl_basic_map_has_dim_id(__isl_keep isl_basic_map *bmap, 79 enum isl_dim_type type, unsigned pos); 80 isl_bool isl_map_has_dim_id(__isl_keep isl_map *map, 81 enum isl_dim_type type, unsigned pos); 82 __isl_give isl_id *isl_map_get_dim_id(__isl_keep isl_map *map, 83 enum isl_dim_type type, unsigned pos); 84 __isl_give isl_map *isl_map_set_tuple_id(__isl_take isl_map *map, 85 enum isl_dim_type type, __isl_take isl_id *id); 86 __isl_give isl_map *isl_map_reset_tuple_id(__isl_take isl_map *map, 87 enum isl_dim_type type); 88 isl_bool isl_map_has_tuple_id(__isl_keep isl_map *map, enum isl_dim_type type); 89 __isl_give isl_id *isl_map_get_tuple_id(__isl_keep isl_map *map, 90 enum isl_dim_type type); 91 __isl_give isl_map *isl_map_reset_user(__isl_take isl_map *map); 92 93 int isl_basic_map_find_dim_by_name(__isl_keep isl_basic_map *bmap, 94 enum isl_dim_type type, const char *name); 95 int isl_map_find_dim_by_id(__isl_keep isl_map *map, enum isl_dim_type type, 96 __isl_keep isl_id *id); 97 int isl_map_find_dim_by_name(__isl_keep isl_map *map, enum isl_dim_type type, 98 const char *name); 99 100 isl_bool isl_basic_map_is_rational(__isl_keep isl_basic_map *bmap); 101 102 __isl_give isl_basic_map *isl_basic_map_identity(__isl_take isl_space *space); 103 __isl_null isl_basic_map *isl_basic_map_free(__isl_take isl_basic_map *bmap); 104 __isl_give isl_basic_map *isl_basic_map_copy(__isl_keep isl_basic_map *bmap); 105 __isl_give isl_basic_map *isl_basic_map_equal( 106 __isl_take isl_space *space, unsigned n_equal); 107 __isl_give isl_basic_map *isl_basic_map_less_at(__isl_take isl_space *space, 108 unsigned pos); 109 __isl_give isl_basic_map *isl_basic_map_more_at(__isl_take isl_space *space, 110 unsigned pos); 111 __isl_give isl_basic_map *isl_basic_map_empty(__isl_take isl_space *space); 112 __isl_give isl_basic_map *isl_basic_map_universe(__isl_take isl_space *space); 113 __isl_give isl_basic_map *isl_basic_map_nat_universe( 114 __isl_take isl_space *space); 115 __isl_give isl_basic_map *isl_basic_map_remove_redundancies( 116 __isl_take isl_basic_map *bmap); 117 __isl_give isl_map *isl_map_remove_redundancies(__isl_take isl_map *map); 118 __isl_give isl_basic_map *isl_map_simple_hull(__isl_take isl_map *map); 119 __isl_export 120 __isl_give isl_basic_map *isl_map_unshifted_simple_hull( 121 __isl_take isl_map *map); 122 __isl_give isl_basic_map *isl_map_plain_unshifted_simple_hull( 123 __isl_take isl_map *map); 124 __isl_give isl_basic_map *isl_map_unshifted_simple_hull_from_map_list( 125 __isl_take isl_map *map, __isl_take isl_map_list *list); 126 127 __isl_export 128 __isl_give isl_basic_map *isl_basic_map_intersect_domain( 129 __isl_take isl_basic_map *bmap, 130 __isl_take isl_basic_set *bset); 131 __isl_export 132 __isl_give isl_basic_map *isl_basic_map_intersect_range( 133 __isl_take isl_basic_map *bmap, 134 __isl_take isl_basic_set *bset); 135 __isl_export 136 __isl_give isl_basic_map *isl_basic_map_intersect( 137 __isl_take isl_basic_map *bmap1, 138 __isl_take isl_basic_map *bmap2); 139 __isl_give isl_basic_map *isl_basic_map_list_intersect( 140 __isl_take isl_basic_map_list *list); 141 __isl_export 142 __isl_give isl_map *isl_basic_map_union( 143 __isl_take isl_basic_map *bmap1, 144 __isl_take isl_basic_map *bmap2); 145 __isl_export 146 __isl_give isl_basic_map *isl_basic_map_apply_domain( 147 __isl_take isl_basic_map *bmap1, 148 __isl_take isl_basic_map *bmap2); 149 __isl_export 150 __isl_give isl_basic_map *isl_basic_map_apply_range( 151 __isl_take isl_basic_map *bmap1, 152 __isl_take isl_basic_map *bmap2); 153 __isl_export 154 __isl_give isl_basic_map *isl_basic_map_affine_hull( 155 __isl_take isl_basic_map *bmap); 156 __isl_give isl_basic_map *isl_basic_map_preimage_domain_multi_aff( 157 __isl_take isl_basic_map *bmap, __isl_take isl_multi_aff *ma); 158 __isl_give isl_basic_map *isl_basic_map_preimage_range_multi_aff( 159 __isl_take isl_basic_map *bmap, __isl_take isl_multi_aff *ma); 160 __isl_export 161 __isl_give isl_basic_map *isl_basic_map_reverse(__isl_take isl_basic_map *bmap); 162 __isl_give isl_basic_set *isl_basic_map_domain(__isl_take isl_basic_map *bmap); 163 __isl_give isl_basic_set *isl_basic_map_range(__isl_take isl_basic_map *bmap); 164 __isl_give isl_basic_map *isl_basic_map_domain_map( 165 __isl_take isl_basic_map *bmap); 166 __isl_give isl_basic_map *isl_basic_map_range_map( 167 __isl_take isl_basic_map *bmap); 168 __isl_give isl_basic_map *isl_basic_map_remove_dims( 169 __isl_take isl_basic_map *bmap, 170 enum isl_dim_type type, unsigned first, unsigned n); 171 __isl_give isl_basic_map *isl_basic_map_eliminate( 172 __isl_take isl_basic_map *bmap, 173 enum isl_dim_type type, unsigned first, unsigned n); 174 __isl_export 175 __isl_give isl_basic_map *isl_basic_map_sample(__isl_take isl_basic_map *bmap); 176 __isl_export 177 __isl_give isl_basic_map *isl_basic_map_detect_equalities( 178 __isl_take isl_basic_map *bmap); 179 __isl_give isl_basic_map *isl_basic_map_read_from_file(isl_ctx *ctx, 180 FILE *input); 181 __isl_constructor 182 __isl_give isl_basic_map *isl_basic_map_read_from_str(isl_ctx *ctx, 183 const char *str); 184 __isl_give isl_map *isl_map_read_from_file(isl_ctx *ctx, FILE *input); 185 __isl_constructor 186 __isl_give isl_map *isl_map_read_from_str(isl_ctx *ctx, const char *str); 187 void isl_basic_map_dump(__isl_keep isl_basic_map *bmap); 188 void isl_map_dump(__isl_keep isl_map *map); 189 __isl_give char *isl_basic_map_to_str(__isl_keep isl_basic_map *bmap); 190 __isl_give isl_printer *isl_printer_print_basic_map( 191 __isl_take isl_printer *printer, __isl_keep isl_basic_map *bmap); 192 __isl_give char *isl_map_to_str(__isl_keep isl_map *map); 193 __isl_give isl_printer *isl_printer_print_map(__isl_take isl_printer *printer, 194 __isl_keep isl_map *map); 195 __isl_give isl_basic_map *isl_basic_map_fix_si(__isl_take isl_basic_map *bmap, 196 enum isl_dim_type type, unsigned pos, int value); 197 __isl_give isl_basic_map *isl_basic_map_fix_val(__isl_take isl_basic_map *bmap, 198 enum isl_dim_type type, unsigned pos, __isl_take isl_val *v); 199 __isl_give isl_basic_map *isl_basic_map_lower_bound_si( 200 __isl_take isl_basic_map *bmap, 201 enum isl_dim_type type, unsigned pos, int value); 202 __isl_give isl_basic_map *isl_basic_map_upper_bound_si( 203 __isl_take isl_basic_map *bmap, 204 enum isl_dim_type type, unsigned pos, int value); 205 __isl_overload 206 __isl_give isl_map *isl_map_lower_bound_multi_val(__isl_take isl_map *map, 207 __isl_take isl_multi_val *lower); 208 __isl_overload 209 __isl_give isl_map *isl_map_upper_bound_multi_val(__isl_take isl_map *map, 210 __isl_take isl_multi_val *upper); 211 __isl_overload 212 __isl_give isl_map *isl_map_lower_bound_multi_pw_aff(__isl_take isl_map *map, 213 __isl_take isl_multi_pw_aff *lower); 214 __isl_overload 215 __isl_give isl_map *isl_map_upper_bound_multi_pw_aff(__isl_take isl_map *map, 216 __isl_take isl_multi_pw_aff *upper); 217 218 __isl_give isl_basic_map *isl_basic_map_sum(__isl_take isl_basic_map *bmap1, 219 __isl_take isl_basic_map *bmap2); 220 __isl_give isl_basic_map *isl_basic_map_neg(__isl_take isl_basic_map *bmap); 221 222 __isl_give isl_map *isl_map_sum(__isl_take isl_map *map1, 223 __isl_take isl_map *map2); 224 __isl_give isl_map *isl_map_neg(__isl_take isl_map *map); 225 __isl_give isl_map *isl_map_floordiv_val(__isl_take isl_map *map, 226 __isl_take isl_val *d); 227 228 __isl_export 229 isl_bool isl_basic_map_is_equal(__isl_keep isl_basic_map *bmap1, 230 __isl_keep isl_basic_map *bmap2); 231 isl_bool isl_basic_map_is_disjoint(__isl_keep isl_basic_map *bmap1, 232 __isl_keep isl_basic_map *bmap2); 233 234 __isl_give isl_map *isl_basic_map_partial_lexmax( 235 __isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, 236 __isl_give isl_set **empty); 237 __isl_give isl_map *isl_basic_map_partial_lexmin( 238 __isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, 239 __isl_give isl_set **empty); 240 __isl_give isl_map *isl_map_partial_lexmax( 241 __isl_take isl_map *map, __isl_take isl_set *dom, 242 __isl_give isl_set **empty); 243 __isl_give isl_map *isl_map_partial_lexmin( 244 __isl_take isl_map *map, __isl_take isl_set *dom, 245 __isl_give isl_set **empty); 246 __isl_export 247 __isl_give isl_map *isl_basic_map_lexmin(__isl_take isl_basic_map *bmap); 248 __isl_export 249 __isl_give isl_map *isl_basic_map_lexmax(__isl_take isl_basic_map *bmap); 250 __isl_export 251 __isl_give isl_map *isl_map_lexmin(__isl_take isl_map *map); 252 __isl_export 253 __isl_give isl_map *isl_map_lexmax(__isl_take isl_map *map); 254 __isl_give isl_pw_multi_aff *isl_basic_map_partial_lexmin_pw_multi_aff( 255 __isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, 256 __isl_give isl_set **empty); 257 __isl_give isl_pw_multi_aff *isl_basic_map_partial_lexmax_pw_multi_aff( 258 __isl_take isl_basic_map *bmap, __isl_take isl_basic_set *dom, 259 __isl_give isl_set **empty); 260 __isl_give isl_pw_multi_aff *isl_basic_map_lexmin_pw_multi_aff( 261 __isl_take isl_basic_map *bmap); 262 __isl_export 263 __isl_give isl_pw_multi_aff *isl_map_lexmin_pw_multi_aff( 264 __isl_take isl_map *map); 265 __isl_export 266 __isl_give isl_pw_multi_aff *isl_map_lexmax_pw_multi_aff( 267 __isl_take isl_map *map); 268 __isl_export 269 __isl_give isl_multi_pw_aff *isl_map_min_multi_pw_aff(__isl_take isl_map *map); 270 __isl_export 271 __isl_give isl_multi_pw_aff *isl_map_max_multi_pw_aff(__isl_take isl_map *map); 272 273 void isl_basic_map_print_internal(__isl_keep isl_basic_map *bmap, 274 FILE *out, int indent); 275 276 __isl_give isl_val *isl_basic_map_plain_get_val_if_fixed( 277 __isl_keep isl_basic_map *bmap, 278 enum isl_dim_type type, unsigned pos); 279 280 isl_bool isl_basic_map_image_is_bounded(__isl_keep isl_basic_map *bmap); 281 isl_bool isl_basic_map_plain_is_universe(__isl_keep isl_basic_map *bmap); 282 isl_bool isl_basic_map_is_universe(__isl_keep isl_basic_map *bmap); 283 isl_bool isl_basic_map_plain_is_empty(__isl_keep isl_basic_map *bmap); 284 __isl_export 285 isl_bool isl_basic_map_is_empty(__isl_keep isl_basic_map *bmap); 286 __isl_export 287 isl_bool isl_basic_map_is_subset(__isl_keep isl_basic_map *bmap1, 288 __isl_keep isl_basic_map *bmap2); 289 isl_bool isl_basic_map_is_strict_subset(__isl_keep isl_basic_map *bmap1, 290 __isl_keep isl_basic_map *bmap2); 291 292 __isl_export 293 __isl_give isl_map *isl_map_universe(__isl_take isl_space *space); 294 __isl_give isl_map *isl_map_nat_universe(__isl_take isl_space *space); 295 __isl_export 296 __isl_give isl_map *isl_map_empty(__isl_take isl_space *space); 297 __isl_give isl_map *isl_map_identity(__isl_take isl_space *space); 298 __isl_give isl_map *isl_map_lex_lt_first(__isl_take isl_space *space, 299 unsigned n); 300 __isl_give isl_map *isl_map_lex_le_first(__isl_take isl_space *space, 301 unsigned n); 302 __isl_give isl_map *isl_map_lex_lt(__isl_take isl_space *set_space); 303 __isl_give isl_map *isl_map_lex_le(__isl_take isl_space *set_space); 304 __isl_give isl_map *isl_map_lex_gt_first(__isl_take isl_space *space, 305 unsigned n); 306 __isl_give isl_map *isl_map_lex_ge_first(__isl_take isl_space *space, 307 unsigned n); 308 __isl_give isl_map *isl_map_lex_gt(__isl_take isl_space *set_space); 309 __isl_give isl_map *isl_map_lex_ge(__isl_take isl_space *set_space); 310 __isl_null isl_map *isl_map_free(__isl_take isl_map *map); 311 __isl_give isl_map *isl_map_copy(__isl_keep isl_map *map); 312 __isl_export 313 __isl_give isl_map *isl_map_reverse(__isl_take isl_map *map); 314 __isl_export 315 __isl_give isl_map *isl_map_range_reverse(__isl_take isl_map *map); 316 __isl_export 317 __isl_give isl_map *isl_map_union( 318 __isl_take isl_map *map1, 319 __isl_take isl_map *map2); 320 __isl_give isl_map *isl_map_union_disjoint( 321 __isl_take isl_map *map1, __isl_take isl_map *map2); 322 __isl_export 323 __isl_give isl_map *isl_map_intersect_domain( 324 __isl_take isl_map *map, 325 __isl_take isl_set *set); 326 __isl_export 327 __isl_give isl_map *isl_map_intersect_range( 328 __isl_take isl_map *map, 329 __isl_take isl_set *set); 330 __isl_give isl_map *isl_map_intersect_domain_factor_range( 331 __isl_take isl_map *map, __isl_take isl_map *factor); 332 __isl_give isl_map *isl_map_intersect_range_factor_domain( 333 __isl_take isl_map *map, __isl_take isl_map *factor); 334 __isl_give isl_map *isl_map_intersect_range_factor_range( 335 __isl_take isl_map *map, __isl_take isl_map *factor); 336 __isl_export 337 __isl_give isl_map *isl_map_apply_domain( 338 __isl_take isl_map *map1, 339 __isl_take isl_map *map2); 340 __isl_export 341 __isl_give isl_map *isl_map_apply_range( 342 __isl_take isl_map *map1, 343 __isl_take isl_map *map2); 344 __isl_overload 345 __isl_give isl_map *isl_map_preimage_domain_multi_aff(__isl_take isl_map *map, 346 __isl_take isl_multi_aff *ma); 347 __isl_overload 348 __isl_give isl_map *isl_map_preimage_range_multi_aff(__isl_take isl_map *map, 349 __isl_take isl_multi_aff *ma); 350 __isl_overload 351 __isl_give isl_map *isl_map_preimage_domain_pw_multi_aff( 352 __isl_take isl_map *map, __isl_take isl_pw_multi_aff *pma); 353 __isl_overload 354 __isl_give isl_map *isl_map_preimage_range_pw_multi_aff( 355 __isl_take isl_map *map, __isl_take isl_pw_multi_aff *pma); 356 __isl_overload 357 __isl_give isl_map *isl_map_preimage_domain_multi_pw_aff( 358 __isl_take isl_map *map, __isl_take isl_multi_pw_aff *mpa); 359 __isl_give isl_basic_map *isl_basic_map_product( 360 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2); 361 __isl_give isl_map *isl_map_product(__isl_take isl_map *map1, 362 __isl_take isl_map *map2); 363 __isl_give isl_basic_map *isl_basic_map_domain_product( 364 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2); 365 __isl_give isl_basic_map *isl_basic_map_range_product( 366 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2); 367 __isl_export 368 __isl_give isl_map *isl_map_domain_product(__isl_take isl_map *map1, 369 __isl_take isl_map *map2); 370 __isl_export 371 __isl_give isl_map *isl_map_range_product(__isl_take isl_map *map1, 372 __isl_take isl_map *map2); 373 __isl_give isl_basic_map *isl_basic_map_flat_product( 374 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2); 375 __isl_give isl_map *isl_map_flat_product(__isl_take isl_map *map1, 376 __isl_take isl_map *map2); 377 __isl_give isl_basic_map *isl_basic_map_flat_range_product( 378 __isl_take isl_basic_map *bmap1, __isl_take isl_basic_map *bmap2); 379 __isl_give isl_map *isl_map_flat_domain_product(__isl_take isl_map *map1, 380 __isl_take isl_map *map2); 381 __isl_give isl_map *isl_map_flat_range_product(__isl_take isl_map *map1, 382 __isl_take isl_map *map2); 383 isl_bool isl_map_domain_is_wrapping(__isl_keep isl_map *map); 384 isl_bool isl_map_range_is_wrapping(__isl_keep isl_map *map); 385 isl_bool isl_map_is_product(__isl_keep isl_map *map); 386 __isl_export 387 __isl_give isl_map *isl_map_factor_domain(__isl_take isl_map *map); 388 __isl_export 389 __isl_give isl_map *isl_map_factor_range(__isl_take isl_map *map); 390 __isl_export 391 __isl_give isl_map *isl_map_domain_factor_domain(__isl_take isl_map *map); 392 __isl_export 393 __isl_give isl_map *isl_map_domain_factor_range(__isl_take isl_map *map); 394 __isl_export 395 __isl_give isl_map *isl_map_range_factor_domain(__isl_take isl_map *map); 396 __isl_export 397 __isl_give isl_map *isl_map_range_factor_range(__isl_take isl_map *map); 398 __isl_export 399 __isl_give isl_map *isl_map_intersect(__isl_take isl_map *map1, 400 __isl_take isl_map *map2); 401 __isl_export 402 __isl_give isl_map *isl_map_intersect_params(__isl_take isl_map *map, 403 __isl_take isl_set *params); 404 __isl_export 405 __isl_give isl_map *isl_map_subtract( 406 __isl_take isl_map *map1, 407 __isl_take isl_map *map2); 408 __isl_give isl_map *isl_map_subtract_domain(__isl_take isl_map *map, 409 __isl_take isl_set *dom); 410 __isl_give isl_map *isl_map_subtract_range(__isl_take isl_map *map, 411 __isl_take isl_set *dom); 412 __isl_export 413 __isl_give isl_map *isl_map_complement(__isl_take isl_map *map); 414 __isl_give isl_map *isl_map_fix_input_si(__isl_take isl_map *map, 415 unsigned input, int value); 416 __isl_give isl_map *isl_map_fix_si(__isl_take isl_map *map, 417 enum isl_dim_type type, unsigned pos, int value); 418 __isl_give isl_map *isl_map_fix_val(__isl_take isl_map *map, 419 enum isl_dim_type type, unsigned pos, __isl_take isl_val *v); 420 __isl_give isl_map *isl_map_lower_bound_si(__isl_take isl_map *map, 421 enum isl_dim_type type, unsigned pos, int value); 422 __isl_give isl_map *isl_map_lower_bound_val(__isl_take isl_map *map, 423 enum isl_dim_type type, unsigned pos, __isl_take isl_val *value); 424 __isl_give isl_map *isl_map_upper_bound_si(__isl_take isl_map *map, 425 enum isl_dim_type type, unsigned pos, int value); 426 __isl_give isl_map *isl_map_upper_bound_val(__isl_take isl_map *map, 427 enum isl_dim_type type, unsigned pos, __isl_take isl_val *value); 428 __isl_export 429 __isl_give isl_basic_set *isl_basic_map_deltas(__isl_take isl_basic_map *bmap); 430 __isl_export 431 __isl_give isl_set *isl_map_deltas(__isl_take isl_map *map); 432 __isl_give isl_basic_map *isl_basic_map_deltas_map( 433 __isl_take isl_basic_map *bmap); 434 __isl_give isl_map *isl_map_deltas_map(__isl_take isl_map *map); 435 __isl_export 436 __isl_give isl_map *isl_map_detect_equalities(__isl_take isl_map *map); 437 __isl_export 438 __isl_give isl_basic_map *isl_map_affine_hull(__isl_take isl_map *map); 439 __isl_give isl_basic_map *isl_map_convex_hull(__isl_take isl_map *map); 440 __isl_export 441 __isl_give isl_basic_map *isl_map_polyhedral_hull(__isl_take isl_map *map); 442 __isl_give isl_basic_map *isl_basic_map_add_dims(__isl_take isl_basic_map *bmap, 443 enum isl_dim_type type, unsigned n); 444 __isl_give isl_map *isl_map_add_dims(__isl_take isl_map *map, 445 enum isl_dim_type type, unsigned n); 446 __isl_give isl_basic_map *isl_basic_map_insert_dims( 447 __isl_take isl_basic_map *bmap, enum isl_dim_type type, 448 unsigned pos, unsigned n); 449 __isl_give isl_map *isl_map_insert_dims(__isl_take isl_map *map, 450 enum isl_dim_type type, unsigned pos, unsigned n); 451 __isl_give isl_basic_map *isl_basic_map_move_dims( 452 __isl_take isl_basic_map *bmap, 453 enum isl_dim_type dst_type, unsigned dst_pos, 454 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 455 __isl_give isl_map *isl_map_move_dims(__isl_take isl_map *map, 456 enum isl_dim_type dst_type, unsigned dst_pos, 457 enum isl_dim_type src_type, unsigned src_pos, unsigned n); 458 __isl_give isl_basic_map *isl_basic_map_project_out( 459 __isl_take isl_basic_map *bmap, 460 enum isl_dim_type type, unsigned first, unsigned n); 461 __isl_give isl_map *isl_map_project_out(__isl_take isl_map *map, 462 enum isl_dim_type type, unsigned first, unsigned n); 463 __isl_export 464 __isl_give isl_map *isl_map_project_out_all_params(__isl_take isl_map *map); 465 __isl_give isl_basic_map *isl_basic_map_remove_divs( 466 __isl_take isl_basic_map *bmap); 467 __isl_give isl_map *isl_map_remove_unknown_divs(__isl_take isl_map *map); 468 __isl_give isl_map *isl_map_remove_divs(__isl_take isl_map *map); 469 __isl_give isl_map *isl_map_eliminate(__isl_take isl_map *map, 470 enum isl_dim_type type, unsigned first, unsigned n); 471 __isl_give isl_map *isl_map_remove_dims(__isl_take isl_map *map, 472 enum isl_dim_type type, unsigned first, unsigned n); 473 __isl_give isl_basic_map *isl_basic_map_remove_divs_involving_dims( 474 __isl_take isl_basic_map *bmap, 475 enum isl_dim_type type, unsigned first, unsigned n); 476 __isl_give isl_map *isl_map_remove_divs_involving_dims(__isl_take isl_map *map, 477 enum isl_dim_type type, unsigned first, unsigned n); 478 __isl_give isl_map *isl_map_remove_inputs(__isl_take isl_map *map, 479 unsigned first, unsigned n); 480 481 __isl_give isl_basic_map *isl_basic_map_equate(__isl_take isl_basic_map *bmap, 482 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 483 __isl_give isl_basic_map *isl_basic_map_order_ge(__isl_take isl_basic_map *bmap, 484 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 485 __isl_give isl_map *isl_map_order_ge(__isl_take isl_map *map, 486 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 487 __isl_give isl_map *isl_map_order_le(__isl_take isl_map *map, 488 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 489 __isl_give isl_map *isl_map_equate(__isl_take isl_map *map, 490 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 491 __isl_give isl_map *isl_map_oppose(__isl_take isl_map *map, 492 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 493 __isl_give isl_map *isl_map_order_lt(__isl_take isl_map *map, 494 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 495 __isl_give isl_basic_map *isl_basic_map_order_gt(__isl_take isl_basic_map *bmap, 496 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 497 __isl_give isl_map *isl_map_order_gt(__isl_take isl_map *map, 498 enum isl_dim_type type1, int pos1, enum isl_dim_type type2, int pos2); 499 500 __isl_export 501 __isl_give isl_map *isl_set_identity(__isl_take isl_set *set); 502 503 __isl_export 504 isl_bool isl_basic_set_is_wrapping(__isl_keep isl_basic_set *bset); 505 __isl_export 506 isl_bool isl_set_is_wrapping(__isl_keep isl_set *set); 507 __isl_give isl_basic_set *isl_basic_map_wrap(__isl_take isl_basic_map *bmap); 508 __isl_export 509 __isl_give isl_set *isl_map_wrap(__isl_take isl_map *map); 510 __isl_give isl_basic_map *isl_basic_set_unwrap(__isl_take isl_basic_set *bset); 511 __isl_export 512 __isl_give isl_map *isl_set_unwrap(__isl_take isl_set *set); 513 __isl_export 514 __isl_give isl_basic_map *isl_basic_map_flatten(__isl_take isl_basic_map *bmap); 515 __isl_export 516 __isl_give isl_map *isl_map_flatten(__isl_take isl_map *map); 517 __isl_export 518 __isl_give isl_basic_map *isl_basic_map_flatten_domain( 519 __isl_take isl_basic_map *bmap); 520 __isl_export 521 __isl_give isl_basic_map *isl_basic_map_flatten_range( 522 __isl_take isl_basic_map *bmap); 523 __isl_export 524 __isl_give isl_map *isl_map_flatten_domain(__isl_take isl_map *map); 525 __isl_export 526 __isl_give isl_map *isl_map_flatten_range(__isl_take isl_map *map); 527 __isl_export 528 __isl_give isl_basic_set *isl_basic_set_flatten(__isl_take isl_basic_set *bset); 529 __isl_export 530 __isl_give isl_set *isl_set_flatten(__isl_take isl_set *set); 531 __isl_give isl_map *isl_set_flatten_map(__isl_take isl_set *set); 532 __isl_give isl_set *isl_map_params(__isl_take isl_map *map); 533 __isl_export 534 __isl_give isl_set *isl_map_domain(__isl_take isl_map *bmap); 535 __isl_export 536 __isl_give isl_set *isl_map_range(__isl_take isl_map *map); 537 __isl_export 538 __isl_give isl_map *isl_set_insert_domain(__isl_take isl_set *set, 539 __isl_take isl_space *domain); 540 __isl_give isl_map *isl_map_domain_map(__isl_take isl_map *map); 541 __isl_give isl_map *isl_map_range_map(__isl_take isl_map *map); 542 __isl_give isl_map *isl_set_wrapped_domain_map(__isl_take isl_set *set); 543 __isl_constructor 544 __isl_give isl_map *isl_map_from_basic_map(__isl_take isl_basic_map *bmap); 545 __isl_give isl_map *isl_map_from_domain(__isl_take isl_set *set); 546 __isl_give isl_basic_map *isl_basic_map_from_domain( 547 __isl_take isl_basic_set *bset); 548 __isl_give isl_basic_map *isl_basic_map_from_range( 549 __isl_take isl_basic_set *bset); 550 __isl_give isl_map *isl_map_from_range(__isl_take isl_set *set); 551 __isl_give isl_basic_map *isl_basic_map_from_domain_and_range( 552 __isl_take isl_basic_set *domain, __isl_take isl_basic_set *range); 553 __isl_give isl_map *isl_map_from_domain_and_range(__isl_take isl_set *domain, 554 __isl_take isl_set *range); 555 __isl_export 556 __isl_give isl_basic_map *isl_map_sample(__isl_take isl_map *map); 557 558 __isl_export 559 __isl_give isl_set *isl_map_bind_domain(__isl_take isl_map *map, 560 __isl_take isl_multi_id *tuple); 561 __isl_export 562 __isl_give isl_set *isl_map_bind_range(__isl_take isl_map *map, 563 __isl_take isl_multi_id *tuple); 564 565 isl_bool isl_map_plain_is_empty(__isl_keep isl_map *map); 566 isl_bool isl_map_plain_is_universe(__isl_keep isl_map *map); 567 __isl_export 568 isl_bool isl_map_is_empty(__isl_keep isl_map *map); 569 __isl_export 570 isl_bool isl_map_is_subset(__isl_keep isl_map *map1, __isl_keep isl_map *map2); 571 __isl_export 572 isl_bool isl_map_is_strict_subset(__isl_keep isl_map *map1, 573 __isl_keep isl_map *map2); 574 __isl_export 575 isl_bool isl_map_is_equal(__isl_keep isl_map *map1, __isl_keep isl_map *map2); 576 __isl_export 577 isl_bool isl_map_is_disjoint(__isl_keep isl_map *map1, 578 __isl_keep isl_map *map2); 579 isl_bool isl_basic_map_is_single_valued(__isl_keep isl_basic_map *bmap); 580 isl_bool isl_map_plain_is_single_valued(__isl_keep isl_map *map); 581 __isl_export 582 isl_bool isl_map_is_single_valued(__isl_keep isl_map *map); 583 isl_bool isl_map_plain_is_injective(__isl_keep isl_map *map); 584 __isl_export 585 isl_bool isl_map_is_injective(__isl_keep isl_map *map); 586 __isl_export 587 isl_bool isl_map_is_bijective(__isl_keep isl_map *map); 588 isl_bool isl_map_is_identity(__isl_keep isl_map *map); 589 int isl_map_is_translation(__isl_keep isl_map *map); 590 isl_bool isl_map_has_equal_space(__isl_keep isl_map *map1, 591 __isl_keep isl_map *map2); 592 593 isl_bool isl_basic_map_can_zip(__isl_keep isl_basic_map *bmap); 594 isl_bool isl_map_can_zip(__isl_keep isl_map *map); 595 __isl_give isl_basic_map *isl_basic_map_zip(__isl_take isl_basic_map *bmap); 596 __isl_give isl_map *isl_map_zip(__isl_take isl_map *map); 597 598 isl_bool isl_basic_map_can_curry(__isl_keep isl_basic_map *bmap); 599 isl_bool isl_map_can_curry(__isl_keep isl_map *map); 600 __isl_give isl_basic_map *isl_basic_map_curry(__isl_take isl_basic_map *bmap); 601 __isl_export 602 __isl_give isl_map *isl_map_curry(__isl_take isl_map *map); 603 604 isl_bool isl_map_can_range_curry(__isl_keep isl_map *map); 605 __isl_give isl_map *isl_map_range_curry(__isl_take isl_map *map); 606 607 isl_bool isl_basic_map_can_uncurry(__isl_keep isl_basic_map *bmap); 608 isl_bool isl_map_can_uncurry(__isl_keep isl_map *map); 609 __isl_give isl_basic_map *isl_basic_map_uncurry(__isl_take isl_basic_map *bmap); 610 __isl_export 611 __isl_give isl_map *isl_map_uncurry(__isl_take isl_map *map); 612 613 __isl_give isl_map *isl_map_make_disjoint(__isl_take isl_map *map); 614 __isl_give isl_map *isl_basic_map_compute_divs(__isl_take isl_basic_map *bmap); 615 __isl_give isl_map *isl_map_compute_divs(__isl_take isl_map *map); 616 ISL_DEPRECATED 617 __isl_give isl_map *isl_map_align_divs(__isl_take isl_map *map); 618 619 __isl_give isl_basic_map *isl_basic_map_drop_constraints_involving_dims( 620 __isl_take isl_basic_map *bmap, 621 enum isl_dim_type type, unsigned first, unsigned n); 622 __isl_give isl_basic_map *isl_basic_map_drop_constraints_not_involving_dims( 623 __isl_take isl_basic_map *bmap, 624 enum isl_dim_type type, unsigned first, unsigned n); 625 __isl_give isl_map *isl_map_drop_constraints_involving_dims( 626 __isl_take isl_map *map, 627 enum isl_dim_type type, unsigned first, unsigned n); 628 __isl_give isl_map *isl_map_drop_constraints_not_involving_dims( 629 __isl_take isl_map *map, 630 enum isl_dim_type type, unsigned first, unsigned n); 631 632 isl_bool isl_basic_map_involves_dims(__isl_keep isl_basic_map *bmap, 633 enum isl_dim_type type, unsigned first, unsigned n); 634 isl_bool isl_map_involves_dims(__isl_keep isl_map *map, 635 enum isl_dim_type type, unsigned first, unsigned n); 636 637 void isl_map_print_internal(__isl_keep isl_map *map, FILE *out, int indent); 638 639 __isl_give isl_val *isl_map_plain_get_val_if_fixed(__isl_keep isl_map *map, 640 enum isl_dim_type type, unsigned pos); 641 642 __isl_give isl_basic_map *isl_basic_map_gist_domain( 643 __isl_take isl_basic_map *bmap, __isl_take isl_basic_set *context); 644 __isl_export 645 __isl_give isl_basic_map *isl_basic_map_gist(__isl_take isl_basic_map *bmap, 646 __isl_take isl_basic_map *context); 647 __isl_export 648 __isl_give isl_map *isl_map_gist(__isl_take isl_map *map, 649 __isl_take isl_map *context); 650 __isl_export 651 __isl_give isl_map *isl_map_gist_domain(__isl_take isl_map *map, 652 __isl_take isl_set *context); 653 __isl_give isl_map *isl_map_gist_range(__isl_take isl_map *map, 654 __isl_take isl_set *context); 655 __isl_give isl_map *isl_map_gist_params(__isl_take isl_map *map, 656 __isl_take isl_set *context); 657 __isl_give isl_map *isl_map_gist_basic_map(__isl_take isl_map *map, 658 __isl_take isl_basic_map *context); 659 660 __isl_give isl_stride_info *isl_map_get_range_stride_info( 661 __isl_keep isl_map *map, int pos); 662 __isl_export 663 __isl_give isl_fixed_box *isl_map_get_range_simple_fixed_box_hull( 664 __isl_keep isl_map *map); 665 666 __isl_export 667 __isl_give isl_map *isl_map_coalesce(__isl_take isl_map *map); 668 669 isl_bool isl_map_plain_is_equal(__isl_keep isl_map *map1, 670 __isl_keep isl_map *map2); 671 672 uint32_t isl_map_get_hash(__isl_keep isl_map *map); 673 674 isl_size isl_map_n_basic_map(__isl_keep isl_map *map); 675 __isl_export 676 isl_stat isl_map_foreach_basic_map(__isl_keep isl_map *map, 677 isl_stat (*fn)(__isl_take isl_basic_map *bmap, void *user), void *user); 678 __isl_give isl_basic_map_list *isl_map_get_basic_map_list( 679 __isl_keep isl_map *map); 680 681 __isl_give isl_map *isl_map_fixed_power_val(__isl_take isl_map *map, 682 __isl_take isl_val *exp); 683 __isl_give isl_map *isl_map_power(__isl_take isl_map *map, isl_bool *exact); 684 __isl_give isl_map *isl_map_reaching_path_lengths(__isl_take isl_map *map, 685 isl_bool *exact); 686 __isl_give isl_map *isl_map_transitive_closure(__isl_take isl_map *map, 687 isl_bool *exact); 688 689 __isl_give isl_map *isl_map_lex_le_map(__isl_take isl_map *map1, 690 __isl_take isl_map *map2); 691 __isl_give isl_map *isl_map_lex_lt_map(__isl_take isl_map *map1, 692 __isl_take isl_map *map2); 693 __isl_give isl_map *isl_map_lex_ge_map(__isl_take isl_map *map1, 694 __isl_take isl_map *map2); 695 __isl_give isl_map *isl_map_lex_gt_map(__isl_take isl_map *map1, 696 __isl_take isl_map *map2); 697 698 __isl_overload 699 __isl_give isl_map *isl_map_eq_at_multi_pw_aff(__isl_take isl_map *map, 700 __isl_take isl_multi_pw_aff *mpa); 701 __isl_overload 702 __isl_give isl_map *isl_map_lex_lt_at_multi_pw_aff(__isl_take isl_map *map, 703 __isl_take isl_multi_pw_aff *mpa); 704 __isl_overload 705 __isl_give isl_map *isl_map_lex_le_at_multi_pw_aff(__isl_take isl_map *map, 706 __isl_take isl_multi_pw_aff *mpa); 707 __isl_overload 708 __isl_give isl_map *isl_map_lex_gt_at_multi_pw_aff(__isl_take isl_map *map, 709 __isl_take isl_multi_pw_aff *mpa); 710 __isl_overload 711 __isl_give isl_map *isl_map_lex_ge_at_multi_pw_aff(__isl_take isl_map *map, 712 __isl_take isl_multi_pw_aff *mpa); 713 714 __isl_give isl_basic_map *isl_basic_map_align_params( 715 __isl_take isl_basic_map *bmap, __isl_take isl_space *model); 716 __isl_give isl_map *isl_map_align_params(__isl_take isl_map *map, 717 __isl_take isl_space *model); 718 __isl_give isl_basic_map *isl_basic_map_drop_unused_params( 719 __isl_take isl_basic_map *bmap); 720 __isl_give isl_map *isl_map_drop_unused_params(__isl_take isl_map *map); 721 722 __isl_give isl_mat *isl_basic_map_equalities_matrix( 723 __isl_keep isl_basic_map *bmap, enum isl_dim_type c1, 724 enum isl_dim_type c2, enum isl_dim_type c3, 725 enum isl_dim_type c4, enum isl_dim_type c5); 726 __isl_give isl_mat *isl_basic_map_inequalities_matrix( 727 __isl_keep isl_basic_map *bmap, enum isl_dim_type c1, 728 enum isl_dim_type c2, enum isl_dim_type c3, 729 enum isl_dim_type c4, enum isl_dim_type c5); 730 __isl_give isl_basic_map *isl_basic_map_from_constraint_matrices( 731 __isl_take isl_space *space, 732 __isl_take isl_mat *eq, __isl_take isl_mat *ineq, enum isl_dim_type c1, 733 enum isl_dim_type c2, enum isl_dim_type c3, 734 enum isl_dim_type c4, enum isl_dim_type c5); 735 736 __isl_give isl_basic_map *isl_basic_map_from_aff(__isl_take isl_aff *aff); 737 __isl_give isl_basic_map *isl_basic_map_from_multi_aff( 738 __isl_take isl_multi_aff *maff); 739 __isl_give isl_basic_map *isl_basic_map_from_aff_list( 740 __isl_take isl_space *domain_space, __isl_take isl_aff_list *list); 741 742 __isl_give isl_map *isl_map_from_aff(__isl_take isl_aff *aff); 743 __isl_give isl_map *isl_map_from_multi_aff(__isl_take isl_multi_aff *maff); 744 745 __isl_give isl_pw_aff *isl_map_dim_min(__isl_take isl_map *map, int pos); 746 __isl_give isl_pw_aff *isl_map_dim_max(__isl_take isl_map *map, int pos); 747 748 ISL_DECLARE_LIST_FN(basic_map) 749 ISL_DECLARE_LIST_FN(map) 750 751 #if defined(__cplusplus) 752 } 753 #endif 754 755 #endif 756