Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

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

  1. #ifndef ISL_AST_BUILD_H
  2. #define ISL_AST_BUILD_H
  3.  
  4. #include <isl/ctx.h>
  5. #include <isl/set.h>
  6. #include <isl/ast.h>
  7. #include <isl/schedule.h>
  8.  
  9. #if defined(__cplusplus)
  10. extern "C" {
  11. #endif
  12.  
  13. struct __isl_export isl_ast_build;
  14. typedef struct isl_ast_build isl_ast_build;
  15.  
  16.  
  17. isl_stat isl_options_set_ast_build_atomic_upper_bound(isl_ctx *ctx, int val);
  18. int isl_options_get_ast_build_atomic_upper_bound(isl_ctx *ctx);
  19.  
  20. isl_stat isl_options_set_ast_build_prefer_pdiv(isl_ctx *ctx, int val);
  21. int isl_options_get_ast_build_prefer_pdiv(isl_ctx *ctx);
  22.  
  23. isl_stat isl_options_set_ast_build_detect_min_max(isl_ctx *ctx, int val);
  24. int isl_options_get_ast_build_detect_min_max(isl_ctx *ctx);
  25.  
  26. isl_stat isl_options_set_ast_build_exploit_nested_bounds(isl_ctx *ctx, int val);
  27. int isl_options_get_ast_build_exploit_nested_bounds(isl_ctx *ctx);
  28.  
  29. isl_stat isl_options_set_ast_build_group_coscheduled(isl_ctx *ctx, int val);
  30. int isl_options_get_ast_build_group_coscheduled(isl_ctx *ctx);
  31.  
  32. #define ISL_AST_BUILD_SEPARATION_BOUNDS_EXPLICIT                0
  33. #define ISL_AST_BUILD_SEPARATION_BOUNDS_IMPLICIT                1
  34. isl_stat isl_options_set_ast_build_separation_bounds(isl_ctx *ctx, int val);
  35. int isl_options_get_ast_build_separation_bounds(isl_ctx *ctx);
  36.  
  37. isl_stat isl_options_set_ast_build_scale_strides(isl_ctx *ctx, int val);
  38. int isl_options_get_ast_build_scale_strides(isl_ctx *ctx);
  39.  
  40. isl_stat isl_options_set_ast_build_allow_else(isl_ctx *ctx, int val);
  41. int isl_options_get_ast_build_allow_else(isl_ctx *ctx);
  42.  
  43. isl_stat isl_options_set_ast_build_allow_or(isl_ctx *ctx, int val);
  44. int isl_options_get_ast_build_allow_or(isl_ctx *ctx);
  45.  
  46. isl_ctx *isl_ast_build_get_ctx(__isl_keep isl_ast_build *build);
  47.  
  48. __isl_constructor
  49. __isl_give isl_ast_build *isl_ast_build_alloc(isl_ctx *ctx);
  50. __isl_export
  51. __isl_give isl_ast_build *isl_ast_build_from_context(__isl_take isl_set *set);
  52.  
  53. __isl_give isl_space *isl_ast_build_get_schedule_space(
  54.         __isl_keep isl_ast_build *build);
  55. __isl_export
  56. __isl_give isl_union_map *isl_ast_build_get_schedule(
  57.         __isl_keep isl_ast_build *build);
  58.  
  59. __isl_give isl_ast_build *isl_ast_build_restrict(
  60.         __isl_take isl_ast_build *build, __isl_take isl_set *set);
  61.  
  62. __isl_give isl_ast_build *isl_ast_build_copy(
  63.         __isl_keep isl_ast_build *build);
  64. __isl_null isl_ast_build *isl_ast_build_free(
  65.         __isl_take isl_ast_build *build);
  66.  
  67. __isl_give isl_ast_build *isl_ast_build_set_options(
  68.         __isl_take isl_ast_build *build,
  69.         __isl_take isl_union_map *options);
  70. __isl_give isl_ast_build *isl_ast_build_set_iterators(
  71.         __isl_take isl_ast_build *build,
  72.         __isl_take isl_id_list *iterators);
  73. __isl_export
  74. __isl_give isl_ast_build *isl_ast_build_set_at_each_domain(
  75.         __isl_take isl_ast_build *build,
  76.         __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_node *node,
  77.                 __isl_keep isl_ast_build *build, void *user), void *user);
  78. __isl_give isl_ast_build *isl_ast_build_set_before_each_for(
  79.         __isl_take isl_ast_build *build,
  80.         __isl_give isl_id *(*fn)(__isl_keep isl_ast_build *build,
  81.                 void *user), void *user);
  82. __isl_give isl_ast_build *isl_ast_build_set_after_each_for(
  83.         __isl_take isl_ast_build *build,
  84.         __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_node *node,
  85.                 __isl_keep isl_ast_build *build, void *user), void *user);
  86. __isl_give isl_ast_build *isl_ast_build_set_before_each_mark(
  87.         __isl_take isl_ast_build *build,
  88.         isl_stat (*fn)(__isl_keep isl_id *mark, __isl_keep isl_ast_build *build,
  89.                 void *user), void *user);
  90. __isl_give isl_ast_build *isl_ast_build_set_after_each_mark(
  91.         __isl_take isl_ast_build *build,
  92.         __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_node *node,
  93.                 __isl_keep isl_ast_build *build, void *user), void *user);
  94. __isl_give isl_ast_build *isl_ast_build_set_create_leaf(
  95.         __isl_take isl_ast_build *build,
  96.         __isl_give isl_ast_node *(*fn)(__isl_take isl_ast_build *build,
  97.                 void *user), void *user);
  98.  
  99. __isl_overload
  100. __isl_give isl_ast_expr *isl_ast_build_expr_from_set(
  101.         __isl_keep isl_ast_build *build, __isl_take isl_set *set);
  102. __isl_overload
  103. __isl_give isl_ast_expr *isl_ast_build_expr_from_pw_aff(
  104.         __isl_keep isl_ast_build *build, __isl_take isl_pw_aff *pa);
  105. __isl_overload
  106. __isl_give isl_ast_expr *isl_ast_build_access_from_pw_multi_aff(
  107.         __isl_keep isl_ast_build *build, __isl_take isl_pw_multi_aff *pma);
  108. __isl_overload
  109. __isl_give isl_ast_expr *isl_ast_build_access_from_multi_pw_aff(
  110.         __isl_keep isl_ast_build *build, __isl_take isl_multi_pw_aff *mpa);
  111. __isl_overload
  112. __isl_give isl_ast_expr *isl_ast_build_call_from_pw_multi_aff(
  113.         __isl_keep isl_ast_build *build, __isl_take isl_pw_multi_aff *pma);
  114. __isl_overload
  115. __isl_give isl_ast_expr *isl_ast_build_call_from_multi_pw_aff(
  116.         __isl_keep isl_ast_build *build, __isl_take isl_multi_pw_aff *mpa);
  117.  
  118. __isl_overload
  119. __isl_give isl_ast_node *isl_ast_build_node_from_schedule(
  120.         __isl_keep isl_ast_build *build, __isl_take isl_schedule *schedule);
  121. __isl_export
  122. __isl_give isl_ast_node *isl_ast_build_node_from_schedule_map(
  123.         __isl_keep isl_ast_build *build, __isl_take isl_union_map *schedule);
  124. __isl_give isl_ast_node *isl_ast_build_ast_from_schedule(
  125.         __isl_keep isl_ast_build *build, __isl_take isl_union_map *schedule);
  126.  
  127. #if defined(__cplusplus)
  128. }
  129. #endif
  130.  
  131. #endif
  132.