hybrid.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #ifndef HYBRID_H
  2. #define HYBRID_H
  3. #include <isl/val.h>
  4. #include <isl/schedule_node.h>
  5. #include "ppcg.h"
  6. struct ppcg_ht_bounds;
  7. typedef struct ppcg_ht_bounds ppcg_ht_bounds;
  8. struct ppcg_ht_phase;
  9. typedef struct ppcg_ht_phase ppcg_ht_phase;
  10. isl_bool ppcg_ht_has_input_pattern(__isl_keep isl_schedule_node *node);
  11. isl_bool ppcg_ht_parent_has_input_pattern(__isl_keep isl_schedule_node *node);
  12. __isl_give ppcg_ht_bounds *ppcg_ht_compute_bounds(struct ppcg_scop *scop,
  13. __isl_keep isl_schedule_node *node);
  14. void ppcg_ht_bounds_dump(__isl_keep ppcg_ht_bounds *bounds);
  15. isl_bool ppcg_ht_bounds_is_valid(__isl_keep ppcg_ht_bounds *bounds);
  16. isl_bool ppcg_ht_bounds_supports_sizes(__isl_keep ppcg_ht_bounds *bounds,
  17. __isl_keep isl_multi_val *sizes);
  18. __isl_give isl_schedule_node *ppcg_ht_bounds_insert_tiling(
  19. __isl_take ppcg_ht_bounds *bounds, __isl_take isl_multi_val *sizes,
  20. __isl_take isl_schedule_node *node, struct ppcg_options *options);
  21. __isl_null ppcg_ht_bounds *ppcg_ht_bounds_free(
  22. __isl_take ppcg_ht_bounds *bounds);
  23. __isl_keep ppcg_ht_phase *ppcg_ht_phase_extract_from_mark(
  24. __isl_keep isl_schedule_node *node);
  25. __isl_give isl_schedule_node *ppcg_ht_phase_shift_space_point(
  26. __isl_keep ppcg_ht_phase *phase, __isl_take isl_schedule_node *node);
  27. __isl_give isl_schedule_node *hybrid_tile_foreach_phase(
  28. __isl_take isl_schedule_node *node,
  29. __isl_give isl_schedule_node *(*fn)(__isl_take isl_schedule_node *node,
  30. void *user), void *user);
  31. __isl_give isl_schedule_node *hybrid_tile_drop_phase_marks(
  32. __isl_take isl_schedule_node *node);
  33. #endif