export pet_expr_foreach_access_expr
[pet.git] / expr.h
blob7a830791c29e13f4e21362994f4171d849fb8b51
1 #ifndef PET_EXPR_H
2 #define PET_EXPR_H
4 #include <pet.h>
6 #if defined(__cplusplus)
7 extern "C" {
8 #endif
10 const char *pet_type_str(enum pet_expr_type type);
11 enum pet_expr_type pet_str_type(const char *str);
13 enum pet_op_type pet_str_op(const char *str);
15 struct pet_expr *pet_expr_from_index_and_depth(
16 __isl_take isl_multi_pw_aff *index, int depth);
17 struct pet_expr *pet_expr_from_access_and_index(__isl_take isl_map *access,
18 __isl_take isl_multi_pw_aff *index);
19 struct pet_expr *pet_expr_kill_from_access_and_index(__isl_take isl_map *access,
20 __isl_take isl_multi_pw_aff *index);
21 struct pet_expr *pet_expr_new_unary(isl_ctx *ctx, enum pet_op_type op,
22 struct pet_expr *arg);
23 struct pet_expr *pet_expr_new_binary(isl_ctx *ctx, enum pet_op_type op,
24 struct pet_expr *lhs, struct pet_expr *rhs);
25 struct pet_expr *pet_expr_new_ternary(isl_ctx *ctx, struct pet_expr *cond,
26 struct pet_expr *lhs, struct pet_expr *rhs);
27 struct pet_expr *pet_expr_new_call(isl_ctx *ctx, const char *name,
28 unsigned n_arg);
29 struct pet_expr *pet_expr_new_cast(isl_ctx *ctx, const char *type_name,
30 struct pet_expr *arg);
31 struct pet_expr *pet_expr_new_double(isl_ctx *ctx, double d, const char *s);
32 struct pet_expr *pet_expr_new_int(__isl_take isl_val *v);
33 void pet_expr_dump(struct pet_expr *expr);
35 int pet_expr_is_affine(struct pet_expr *expr);
36 int pet_expr_is_scalar_access(struct pet_expr *expr);
37 int pet_expr_is_equal(struct pet_expr *expr1, struct pet_expr *expr2);
39 __isl_give isl_id *pet_expr_access_get_id(struct pet_expr *expr);
40 __isl_give isl_space *pet_expr_access_get_parameter_space(
41 struct pet_expr *expr);
42 __isl_give isl_space *pet_expr_access_get_data_space(struct pet_expr *expr);
44 struct pet_expr *pet_expr_map_access(struct pet_expr *expr,
45 struct pet_expr *(*fn)(struct pet_expr *expr, void *user),
46 void *user);
48 int pet_expr_writes(struct pet_expr *expr, __isl_keep isl_id *id);
50 struct pet_expr *pet_expr_access_move_dims(struct pet_expr *expr,
51 enum isl_dim_type dst_type, unsigned dst_pos,
52 enum isl_dim_type src_type, unsigned src_pos, unsigned n);
53 struct pet_expr *pet_expr_access_pullback_multi_aff(
54 struct pet_expr *expr, __isl_take isl_multi_aff *ma);
55 struct pet_expr *pet_expr_access_align_params(struct pet_expr *expr);
56 struct pet_expr *pet_expr_restrict(struct pet_expr *expr,
57 __isl_take isl_set *cond);
58 struct pet_expr *pet_expr_access_update_domain(struct pet_expr *expr,
59 __isl_keep isl_multi_pw_aff *update);
60 struct pet_expr *pet_expr_update_domain(struct pet_expr *expr,
61 __isl_take isl_multi_pw_aff *update);
62 struct pet_expr *pet_expr_align_params(struct pet_expr *expr,
63 __isl_take isl_space *space);
64 struct pet_expr *pet_expr_filter(struct pet_expr *expr,
65 __isl_take isl_multi_pw_aff *test, int satisfied);
66 struct pet_expr *pet_expr_detect_parameter_accesses(struct pet_expr *expr,
67 __isl_take isl_space *space);
68 struct pet_expr *pet_expr_add_ref_ids(struct pet_expr *expr, int *n_ref);
69 struct pet_expr *pet_expr_anonymize(struct pet_expr *expr);
70 struct pet_expr *pet_expr_gist(struct pet_expr *expr,
71 __isl_keep isl_set *context, __isl_keep isl_union_map *value_bounds);
73 __isl_give isl_map *pet_expr_tag_access(struct pet_expr *expr,
74 __isl_take isl_map *access);
76 void pet_expr_dump_with_indent(struct pet_expr *expr, int indent);
78 #if defined(__cplusplus)
80 #endif
82 #endif