diff options
Diffstat (limited to 'polly/lib/External/ppcg/schedule.h')
| -rw-r--r-- | polly/lib/External/ppcg/schedule.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/polly/lib/External/ppcg/schedule.h b/polly/lib/External/ppcg/schedule.h new file mode 100644 index 00000000000..25a12aea010 --- /dev/null +++ b/polly/lib/External/ppcg/schedule.h @@ -0,0 +1,56 @@ +#ifndef _SCHEDULE_H +#define _SCHEDULE_H + +#include <isl/id.h> +#include <isl/set_type.h> +#include <isl/map_type.h> +#include <isl/union_map_type.h> + +#include <pet.h> + +/* An access to an outer array element or an iterator. + * Accesses to iterators have an access relation that maps to an unnamed space. + * An access may be both read and write. + * If the access relation is empty, then the output dimension may + * not be equal to the dimension of the corresponding array. + */ +struct gpu_stmt_access { + /* Access reads elements */ + int read; + /* Access writes elements */ + int write; + /* All writes are definite writes. */ + int exact_write; + /* The number of index expressions specified in the access. */ + int n_index; + + /* May access relation */ + isl_map *access; + /* May access relation with as domain a mapping from iteration domain + * to a reference identifier. + */ + isl_map *tagged_access; + /* The reference id of the corresponding pet_expr. */ + isl_id *ref_id; + + struct gpu_stmt_access *next; +}; + +struct gpu_stmt { + isl_id *id; + struct pet_stmt *stmt; + + /* Linked list of accesses. */ + struct gpu_stmt_access *accesses; +}; + +__isl_give isl_map *project_out(__isl_take isl_space *dim, + int len, int first, int n); +__isl_give isl_map *projection(__isl_take isl_space *dim, + int src_len, int dst_len); +__isl_give isl_set *parametrization(__isl_take isl_space *space, + int len, int first, __isl_keep isl_id_list *names); +__isl_give isl_set *extend(__isl_take isl_set *set, int dst_len); +__isl_give isl_union_map *align_range(__isl_take isl_union_map *umap); + +#endif |

