ppcg.c: compute_order_dependences: avoid use of before relation
[ppcg.git] / schedule.h
blob25a12aea010670770242ba6cf09228c6cd0544aa
1 #ifndef _SCHEDULE_H
2 #define _SCHEDULE_H
4 #include <isl/id.h>
5 #include <isl/set_type.h>
6 #include <isl/map_type.h>
7 #include <isl/union_map_type.h>
9 #include <pet.h>
11 /* An access to an outer array element or an iterator.
12 * Accesses to iterators have an access relation that maps to an unnamed space.
13 * An access may be both read and write.
14 * If the access relation is empty, then the output dimension may
15 * not be equal to the dimension of the corresponding array.
17 struct gpu_stmt_access {
18 /* Access reads elements */
19 int read;
20 /* Access writes elements */
21 int write;
22 /* All writes are definite writes. */
23 int exact_write;
24 /* The number of index expressions specified in the access. */
25 int n_index;
27 /* May access relation */
28 isl_map *access;
29 /* May access relation with as domain a mapping from iteration domain
30 * to a reference identifier.
32 isl_map *tagged_access;
33 /* The reference id of the corresponding pet_expr. */
34 isl_id *ref_id;
36 struct gpu_stmt_access *next;
39 struct gpu_stmt {
40 isl_id *id;
41 struct pet_stmt *stmt;
43 /* Linked list of accesses. */
44 struct gpu_stmt_access *accesses;
47 __isl_give isl_map *project_out(__isl_take isl_space *dim,
48 int len, int first, int n);
49 __isl_give isl_map *projection(__isl_take isl_space *dim,
50 int src_len, int dst_len);
51 __isl_give isl_set *parametrization(__isl_take isl_space *space,
52 int len, int first, __isl_keep isl_id_list *names);
53 __isl_give isl_set *extend(__isl_take isl_set *set, int dst_len);
54 __isl_give isl_union_map *align_range(__isl_take isl_union_map *umap);
56 #endif