Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

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

  1. #ifndef ISL_FLOW_H
  2. #define ISL_FLOW_H
  3.  
  4. #include <stdio.h>
  5.  
  6. #include <isl/set_type.h>
  7. #include <isl/map_type.h>
  8. #include <isl/union_set_type.h>
  9. #include <isl/union_map_type.h>
  10. #include <isl/schedule.h>
  11. #include <isl/printer.h>
  12.  
  13. #if defined(__cplusplus)
  14. extern "C" {
  15. #endif
  16.  
  17. /* Let n (>= 0) be the number of iterators shared by first and second.
  18.  * If first precedes second textually return 2 * n + 1,
  19.  * otherwise return 2 * n.
  20.  */
  21. typedef int (*isl_access_level_before)(void *first, void *second);
  22.  
  23. struct isl_restriction;
  24. typedef struct isl_restriction isl_restriction;
  25.  
  26. __isl_null isl_restriction *isl_restriction_free(
  27.         __isl_take isl_restriction *restr);
  28. __isl_give isl_restriction *isl_restriction_empty(
  29.         __isl_take isl_map *source_map);
  30. __isl_give isl_restriction *isl_restriction_none(
  31.         __isl_take isl_map *source_map);
  32. __isl_give isl_restriction *isl_restriction_input(
  33.         __isl_take isl_set *source_restr, __isl_take isl_set *sink_restr);
  34. __isl_give isl_restriction *isl_restriction_output(
  35.         __isl_take isl_set *source_restr);
  36.  
  37. isl_ctx *isl_restriction_get_ctx(__isl_keep isl_restriction *restr);
  38.  
  39. typedef __isl_give isl_restriction *(*isl_access_restrict)(
  40.         __isl_keep isl_map *source_map, __isl_keep isl_set *sink,
  41.         void *source_user, void *user);
  42.  
  43. struct isl_access_info;
  44. typedef struct isl_access_info isl_access_info;
  45. struct isl_flow;
  46. typedef struct isl_flow isl_flow;
  47.  
  48. __isl_give isl_access_info *isl_access_info_alloc(__isl_take isl_map *sink,
  49.         void *sink_user, isl_access_level_before fn, int max_source);
  50. __isl_give isl_access_info *isl_access_info_set_restrict(
  51.         __isl_take isl_access_info *acc, isl_access_restrict fn, void *user);
  52. __isl_give isl_access_info *isl_access_info_add_source(
  53.         __isl_take isl_access_info *acc, __isl_take isl_map *source,
  54.         int must, void *source_user);
  55. __isl_null isl_access_info *isl_access_info_free(
  56.         __isl_take isl_access_info *acc);
  57.  
  58. isl_ctx *isl_access_info_get_ctx(__isl_keep isl_access_info *acc);
  59.  
  60. __isl_give isl_flow *isl_access_info_compute_flow(__isl_take isl_access_info *acc);
  61. isl_stat isl_flow_foreach(__isl_keep isl_flow *deps,
  62.         isl_stat (*fn)(__isl_take isl_map *dep, int must, void *dep_user,
  63.                 void *user),
  64.         void *user);
  65. __isl_give isl_map *isl_flow_get_no_source(__isl_keep isl_flow *deps, int must);
  66. __isl_null isl_flow *isl_flow_free(__isl_take isl_flow *deps);
  67.  
  68. isl_ctx *isl_flow_get_ctx(__isl_keep isl_flow *deps);
  69.  
  70. struct __isl_export isl_union_access_info;
  71. typedef struct isl_union_access_info isl_union_access_info;
  72. struct __isl_export isl_union_flow;
  73. typedef struct isl_union_flow isl_union_flow;
  74.  
  75. __isl_constructor
  76. __isl_give isl_union_access_info *isl_union_access_info_from_sink(
  77.         __isl_take isl_union_map *sink);
  78. __isl_export
  79. __isl_give isl_union_access_info *isl_union_access_info_set_must_source(
  80.         __isl_take isl_union_access_info *access,
  81.         __isl_take isl_union_map *must_source);
  82. __isl_export
  83. __isl_give isl_union_access_info *isl_union_access_info_set_may_source(
  84.         __isl_take isl_union_access_info *access,
  85.         __isl_take isl_union_map *may_source);
  86. __isl_export
  87. __isl_give isl_union_access_info *isl_union_access_info_set_kill(
  88.         __isl_take isl_union_access_info *access,
  89.         __isl_take isl_union_map *kill);
  90. __isl_export
  91. __isl_give isl_union_access_info *isl_union_access_info_set_schedule(
  92.         __isl_take isl_union_access_info *access,
  93.         __isl_take isl_schedule *schedule);
  94. __isl_export
  95. __isl_give isl_union_access_info *isl_union_access_info_set_schedule_map(
  96.         __isl_take isl_union_access_info *access,
  97.         __isl_take isl_union_map *schedule_map);
  98. __isl_give isl_union_access_info *isl_union_access_info_copy(
  99.         __isl_keep isl_union_access_info *access);
  100. __isl_null isl_union_access_info *isl_union_access_info_free(
  101.         __isl_take isl_union_access_info *access);
  102.  
  103. isl_ctx *isl_union_access_info_get_ctx(
  104.         __isl_keep isl_union_access_info *access);
  105.  
  106. __isl_give isl_union_access_info *isl_union_access_info_read_from_file(
  107.         isl_ctx *ctx, FILE *input);
  108. __isl_give isl_printer *isl_printer_print_union_access_info(
  109.         __isl_take isl_printer *p, __isl_keep isl_union_access_info *access);
  110. __isl_give char *isl_union_access_info_to_str(
  111.         __isl_keep isl_union_access_info *access);
  112.  
  113. __isl_export
  114. __isl_give isl_union_flow *isl_union_access_info_compute_flow(
  115.         __isl_take isl_union_access_info *access);
  116.  
  117. isl_ctx *isl_union_flow_get_ctx(__isl_keep isl_union_flow *flow);
  118. __isl_give isl_union_flow *isl_union_flow_copy(
  119.         __isl_keep isl_union_flow *flow);
  120. __isl_export
  121. __isl_give isl_union_map *isl_union_flow_get_must_dependence(
  122.         __isl_keep isl_union_flow *flow);
  123. __isl_export
  124. __isl_give isl_union_map *isl_union_flow_get_may_dependence(
  125.         __isl_keep isl_union_flow *flow);
  126. __isl_export
  127. __isl_give isl_union_map *isl_union_flow_get_full_must_dependence(
  128.         __isl_keep isl_union_flow *flow);
  129. __isl_export
  130. __isl_give isl_union_map *isl_union_flow_get_full_may_dependence(
  131.         __isl_keep isl_union_flow *flow);
  132. __isl_export
  133. __isl_give isl_union_map *isl_union_flow_get_must_no_source(
  134.         __isl_keep isl_union_flow *flow);
  135. __isl_export
  136. __isl_give isl_union_map *isl_union_flow_get_may_no_source(
  137.         __isl_keep isl_union_flow *flow);
  138. __isl_null isl_union_flow *isl_union_flow_free(__isl_take isl_union_flow *flow);
  139.  
  140. __isl_give isl_printer *isl_printer_print_union_flow(
  141.         __isl_take isl_printer *p, __isl_keep isl_union_flow *flow);
  142. __isl_give char *isl_union_flow_to_str(__isl_keep isl_union_flow *flow);
  143.  
  144. int isl_union_map_compute_flow(__isl_take isl_union_map *sink,
  145.         __isl_take isl_union_map *must_source,
  146.         __isl_take isl_union_map *may_source,
  147.         __isl_take isl_union_map *schedule,
  148.         __isl_give isl_union_map **must_dep, __isl_give isl_union_map **may_dep,
  149.         __isl_give isl_union_map **must_no_source,
  150.         __isl_give isl_union_map **may_no_source);
  151.  
  152. #if defined(__cplusplus)
  153. }
  154. #endif
  155.  
  156. #endif
  157.