5 #include <isl/set_type.h>
6 #include <isl/map_type.h>
7 #include <isl/union_map_type.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 */
20 /* Access writes elements */
22 /* All writes are definite writes. */
24 /* The number of index expressions specified in the access. */
27 /* May access relation */
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. */
36 struct gpu_stmt_access
*next
;
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
);