update isl to version 0.10
[ppcg.git] / schedule.h
blob9a419c8632e2f829e9430b54f67a59202eaa5365
1 #ifndef _SCHEDULE_H
2 #define _SCHEDULE_H
4 /* An access to an array element or an iterator.
5 * Accesses to iterators have an access relation that maps to an unnamed space.
6 * An access may be both read and write.
7 */
8 struct cuda_stmt_access {
9 /* Access reads elements */
10 int read;
11 /* Access writes elements */
12 int write;
14 /* Index of the array reference group this reference belong to. */
15 int group;
17 /* Access relation */
18 isl_map *access;
20 struct cuda_stmt_access *next;
23 struct cuda_stmt {
24 isl_set *domain;
25 struct pet_expr *body;
27 /* Number of tile dimensions. */
28 int tile_len;
29 /* Number of initial parallel loops among tile dimensions. */
30 int n_parallel;
32 /* Linked list of accesses. */
33 struct cuda_stmt_access *accesses;
36 __isl_give isl_map *wavefront(__isl_take isl_space *dim, int len,
37 int first, int wave_len);
38 __isl_give isl_map *project_out(__isl_take isl_space *dim,
39 int len, int first, int n);
40 __isl_give isl_map *projection(__isl_take isl_space *dim,
41 int src_len, int dst_len);
42 __isl_give isl_set *extend(__isl_take isl_set *set, int dst_len);
44 #endif