parse.c: extract_double: fix return type
[pet.git] / scop.h
blobc06c928e2d60223ce1b72eff519267e645e2ee77
1 #ifndef PET_SCOP_H
2 #define PET_SCOP_H
4 #include <pet.h>
6 #include <isl/id.h>
8 #if defined(__cplusplus)
9 extern "C" {
10 #endif
12 /* Do we want to skip the rest of the current loop iteration (pet_skip_now)
13 * or subsequent loop iterations (pet_skip_later)?
15 enum pet_skip { pet_skip_now = 0, pet_skip_later = 1 };
17 const char *pet_type_str(enum pet_expr_type type);
18 enum pet_expr_type pet_str_type(const char *str);
20 enum pet_op_type pet_str_op(const char *str);
22 struct pet_expr *pet_expr_from_access(__isl_take isl_map *access);
23 struct pet_expr *pet_expr_kill_from_access(__isl_take isl_map *access);
24 struct pet_expr *pet_expr_new_unary(isl_ctx *ctx, enum pet_op_type op,
25 struct pet_expr *arg);
26 struct pet_expr *pet_expr_new_binary(isl_ctx *ctx, enum pet_op_type op,
27 struct pet_expr *lhs, struct pet_expr *rhs);
28 struct pet_expr *pet_expr_new_ternary(isl_ctx *ctx, struct pet_expr *cond,
29 struct pet_expr *lhs, struct pet_expr *rhs);
30 struct pet_expr *pet_expr_new_call(isl_ctx *ctx, const char *name,
31 unsigned n_arg);
32 struct pet_expr *pet_expr_new_double(isl_ctx *ctx, double d);
33 void pet_expr_dump(struct pet_expr *expr);
34 void *pet_expr_free(struct pet_expr *expr);
36 int pet_expr_is_affine(struct pet_expr *expr);
37 int pet_expr_is_equal(struct pet_expr *expr1, struct pet_expr *expr2);
38 struct pet_expr *pet_expr_restrict(struct pet_expr *expr,
39 __isl_take isl_set *cond);
41 struct pet_stmt *pet_stmt_from_pet_expr(isl_ctx *ctx, int line,
42 __isl_take isl_id *label, int id, struct pet_expr *expr);
43 void pet_stmt_dump(struct pet_stmt *stmt);
44 void *pet_stmt_free(struct pet_stmt *stmt);
46 void pet_array_dump(struct pet_array *array);
47 struct pet_array *pet_array_free(struct pet_array *array);
49 struct pet_stmt *pet_stmt_prefix(struct pet_stmt *stmt, int pos);
51 struct pet_scop *pet_scop_from_pet_stmt(isl_ctx *ctx, struct pet_stmt *stmt);
52 struct pet_scop *pet_scop_alloc(isl_ctx *ctx);
53 struct pet_scop *pet_scop_empty(isl_ctx *ctx);
54 struct pet_scop *pet_scop_add_seq(isl_ctx *ctx, struct pet_scop *scop1,
55 struct pet_scop *scop2);
56 struct pet_scop *pet_scop_add_par(isl_ctx *ctx, struct pet_scop *scop1,
57 struct pet_scop *scop2);
59 int pet_scop_is_equal(struct pet_scop *scop1, struct pet_scop *scop2);
61 struct pet_scop *pet_scop_prefix(struct pet_scop *scop, int pos);
62 struct pet_scop *pet_scop_embed(struct pet_scop *scop, __isl_take isl_set *dom,
63 __isl_take isl_map *sched, __isl_take isl_map *iv_map,
64 __isl_take isl_id *id);
65 struct pet_scop *pet_scop_restrict(struct pet_scop *scop,
66 __isl_take isl_set *cond);
67 struct pet_scop *pet_scop_restrict_context(struct pet_scop *scop,
68 __isl_take isl_set *context);
69 struct pet_scop *pet_scop_reset_context(struct pet_scop *scop);
70 struct pet_expr *pet_expr_filter(struct pet_expr *expr,
71 __isl_take isl_map *test, int satisfied);
72 struct pet_scop *pet_scop_filter(struct pet_scop *scop,
73 __isl_take isl_map *test, int satisfied);
74 struct pet_scop *pet_scop_merge_filters(struct pet_scop *scop);
76 struct pet_scop *pet_scop_detect_parameter_accesses(struct pet_scop *scop);
78 struct pet_scop *pet_scop_gist(struct pet_scop *scop,
79 __isl_keep isl_union_map *value_bounds);
81 struct pet_scop *pet_scop_anonymize(struct pet_scop *scop);
83 struct pet_expr *pet_expr_foreach_access(struct pet_expr *expr,
84 __isl_give isl_map *(*fn)(__isl_take isl_map *access, void *user),
85 void *user);
87 int pet_scop_writes(struct pet_scop *scop, __isl_keep isl_id *id);
89 int pet_scop_has_skip(struct pet_scop *scop, enum pet_skip type);
90 int pet_scop_has_affine_skip(struct pet_scop *scop, enum pet_skip type);
91 int pet_scop_has_universal_skip(struct pet_scop *scop, enum pet_skip type);
92 int pet_scop_has_var_skip(struct pet_scop *scop, enum pet_skip type);
93 struct pet_scop *pet_scop_set_skip(struct pet_scop *scop,
94 enum pet_skip type, __isl_take isl_set *skip);
95 __isl_give isl_set *pet_scop_get_skip(struct pet_scop *scop,
96 enum pet_skip type);
97 __isl_give isl_map *pet_scop_get_skip_map(struct pet_scop *scop,
98 enum pet_skip type);
99 struct pet_expr *pet_scop_get_skip_expr(struct pet_scop *scop,
100 enum pet_skip type);
101 void pet_scop_reset_skip(struct pet_scop *scop, enum pet_skip type);
103 struct pet_scop *pet_scop_add_array(struct pet_scop *scop,
104 struct pet_array *array);
106 #if defined(__cplusplus)
108 #endif
110 #endif