Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

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