export pet_expr_dump
[pet.git] / expr.h
blob9689e232161507d69ab6dcf5895638a0f1a90dc6
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);
34 int pet_expr_is_scalar_access(struct pet_expr *expr);
35 int pet_expr_is_equal(struct pet_expr *expr1, struct pet_expr *expr2);
37 __isl_give isl_id *pet_expr_access_get_id(struct pet_expr *expr);
38 __isl_give isl_space *pet_expr_access_get_parameter_space(
39 struct pet_expr *expr);
40 __isl_give isl_space *pet_expr_access_get_data_space(struct pet_expr *expr);
42 struct pet_expr *pet_expr_map_access(struct pet_expr *expr,
43 struct pet_expr *(*fn)(struct pet_expr *expr, void *user),
44 void *user);
46 int pet_expr_writes(struct pet_expr *expr, __isl_keep isl_id *id);
48 struct pet_expr *pet_expr_access_move_dims(struct pet_expr *expr,
49 enum isl_dim_type dst_type, unsigned dst_pos,
50 enum isl_dim_type src_type, unsigned src_pos, unsigned n);
51 struct pet_expr *pet_expr_access_pullback_multi_aff(
52 struct pet_expr *expr, __isl_take isl_multi_aff *ma);
53 struct pet_expr *pet_expr_access_align_params(struct pet_expr *expr);
54 struct pet_expr *pet_expr_restrict(struct pet_expr *expr,
55 __isl_take isl_set *cond);
56 struct pet_expr *pet_expr_access_update_domain(struct pet_expr *expr,
57 __isl_keep isl_multi_pw_aff *update);
58 struct pet_expr *pet_expr_update_domain(struct pet_expr *expr,
59 __isl_take isl_multi_pw_aff *update);
60 struct pet_expr *pet_expr_align_params(struct pet_expr *expr,
61 __isl_take isl_space *space);
62 struct pet_expr *pet_expr_filter(struct pet_expr *expr,
63 __isl_take isl_multi_pw_aff *test, int satisfied);
64 struct pet_expr *pet_expr_detect_parameter_accesses(struct pet_expr *expr,
65 __isl_take isl_space *space);
66 struct pet_expr *pet_expr_add_ref_ids(struct pet_expr *expr, int *n_ref);
67 struct pet_expr *pet_expr_anonymize(struct pet_expr *expr);
68 struct pet_expr *pet_expr_gist(struct pet_expr *expr,
69 __isl_keep isl_set *context, __isl_keep isl_union_map *value_bounds);
71 __isl_give isl_map *pet_expr_tag_access(struct pet_expr *expr,
72 __isl_take isl_map *access);
74 void pet_expr_dump_with_indent(struct pet_expr *expr, int indent);
76 #if defined(__cplusplus)
78 #endif
80 #endif