forked from OSchip/llvm-project
57 lines
1.5 KiB
C
57 lines
1.5 KiB
C
#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
|