9 #if defined(__cplusplus)
13 /* Do we want to skip the rest of the current loop iteration (pet_skip_now)
14 * or subsequent loop iterations (pet_skip_later)?
16 enum pet_skip
{ pet_skip_now
= 0, pet_skip_later
= 1 };
18 const char *pet_type_str(enum pet_expr_type type
);
19 enum pet_expr_type
pet_str_type(const char *str
);
21 enum pet_op_type
pet_str_op(const char *str
);
23 struct pet_expr
*pet_expr_from_index(__isl_take isl_multi_pw_aff
*index
);
24 struct pet_expr
*pet_expr_from_index_and_depth(
25 __isl_take isl_multi_pw_aff
*index
, int depth
);
26 struct pet_expr
*pet_expr_from_access(__isl_take isl_map
*access
);
27 struct pet_expr
*pet_expr_kill_from_access_and_index(__isl_take isl_map
*access
,
28 __isl_take isl_multi_pw_aff
*index
);
29 struct pet_expr
*pet_expr_kill_from_access(__isl_take isl_map
*access
);
30 struct pet_expr
*pet_expr_new_unary(isl_ctx
*ctx
, enum pet_op_type op
,
31 struct pet_expr
*arg
);
32 struct pet_expr
*pet_expr_new_binary(isl_ctx
*ctx
, enum pet_op_type op
,
33 struct pet_expr
*lhs
, struct pet_expr
*rhs
);
34 struct pet_expr
*pet_expr_new_ternary(isl_ctx
*ctx
, struct pet_expr
*cond
,
35 struct pet_expr
*lhs
, struct pet_expr
*rhs
);
36 struct pet_expr
*pet_expr_new_call(isl_ctx
*ctx
, const char *name
,
38 struct pet_expr
*pet_expr_new_cast(isl_ctx
*ctx
, const char *type_name
,
39 struct pet_expr
*arg
);
40 struct pet_expr
*pet_expr_new_double(isl_ctx
*ctx
, double d
, const char *s
);
41 void pet_expr_dump(struct pet_expr
*expr
);
42 void *pet_expr_free(struct pet_expr
*expr
);
44 int pet_expr_is_affine(struct pet_expr
*expr
);
45 __isl_give isl_id
*pet_expr_access_get_id(struct pet_expr
*expr
);
46 int pet_expr_is_scalar_access(struct pet_expr
*expr
);
47 int pet_expr_is_equal(struct pet_expr
*expr1
, struct pet_expr
*expr2
);
48 struct pet_expr
*pet_expr_restrict(struct pet_expr
*expr
,
49 __isl_take isl_set
*cond
);
51 struct pet_stmt
*pet_stmt_from_pet_expr(isl_ctx
*ctx
, int line
,
52 __isl_take isl_id
*label
, int id
, struct pet_expr
*expr
);
53 void pet_stmt_dump(struct pet_stmt
*stmt
);
54 void *pet_stmt_free(struct pet_stmt
*stmt
);
56 void pet_array_dump(struct pet_array
*array
);
57 struct pet_array
*pet_array_free(struct pet_array
*array
);
59 void *pet_implication_free(struct pet_implication
*implication
);
61 struct pet_stmt
*pet_stmt_prefix(struct pet_stmt
*stmt
, int pos
);
63 struct pet_scop
*pet_scop_from_pet_stmt(isl_ctx
*ctx
, struct pet_stmt
*stmt
);
64 struct pet_scop
*pet_scop_alloc(isl_ctx
*ctx
);
65 struct pet_scop
*pet_scop_empty(isl_ctx
*ctx
);
66 struct pet_scop
*pet_scop_add_seq(isl_ctx
*ctx
, struct pet_scop
*scop1
,
67 struct pet_scop
*scop2
);
68 struct pet_scop
*pet_scop_add_par(isl_ctx
*ctx
, struct pet_scop
*scop1
,
69 struct pet_scop
*scop2
);
71 int pet_scop_is_equal(struct pet_scop
*scop1
, struct pet_scop
*scop2
);
73 struct pet_scop
*pet_scop_prefix(struct pet_scop
*scop
, int pos
);
74 struct pet_scop
*pet_scop_embed(struct pet_scop
*scop
, __isl_take isl_set
*dom
,
75 __isl_take isl_map
*sched
, __isl_take isl_aff
*iv_map
,
76 __isl_take isl_id
*id
);
77 struct pet_scop
*pet_scop_restrict(struct pet_scop
*scop
,
78 __isl_take isl_set
*cond
);
79 struct pet_scop
*pet_scop_restrict_context(struct pet_scop
*scop
,
80 __isl_take isl_set
*context
);
81 struct pet_scop
*pet_scop_reset_context(struct pet_scop
*scop
);
82 struct pet_expr
*pet_expr_filter(struct pet_expr
*expr
,
83 __isl_take isl_map
*test
, int satisfied
);
84 struct pet_scop
*pet_scop_filter(struct pet_scop
*scop
,
85 __isl_take isl_map
*test
, int satisfied
);
86 struct pet_scop
*pet_scop_merge_filters(struct pet_scop
*scop
);
87 struct pet_scop
*pet_scop_add_implication(struct pet_scop
*scop
,
88 __isl_take isl_map
*map
, int satisfied
);
90 struct pet_scop
*pet_scop_detect_parameter_accesses(struct pet_scop
*scop
);
92 struct pet_scop
*pet_scop_gist(struct pet_scop
*scop
,
93 __isl_keep isl_union_map
*value_bounds
);
95 struct pet_scop
*pet_scop_add_ref_ids(struct pet_scop
*scop
);
96 struct pet_scop
*pet_scop_anonymize(struct pet_scop
*scop
);
98 int pet_expr_foreach_access_expr(struct pet_expr
*expr
,
99 int (*fn
)(struct pet_expr
*expr
, void *user
), void *user
);
100 struct pet_expr
*pet_expr_map_access(struct pet_expr
*expr
,
101 struct pet_expr
*(*fn
)(struct pet_expr
*expr
, void *user
),
104 int pet_scop_writes(struct pet_scop
*scop
, __isl_keep isl_id
*id
);
106 int pet_scop_has_skip(struct pet_scop
*scop
, enum pet_skip type
);
107 int pet_scop_has_affine_skip(struct pet_scop
*scop
, enum pet_skip type
);
108 int pet_scop_has_universal_skip(struct pet_scop
*scop
, enum pet_skip type
);
109 int pet_scop_has_var_skip(struct pet_scop
*scop
, enum pet_skip type
);
110 struct pet_scop
*pet_scop_set_skip(struct pet_scop
*scop
,
111 enum pet_skip type
, __isl_take isl_multi_pw_aff
*skip
);
112 __isl_give isl_multi_pw_aff
*pet_scop_get_skip(struct pet_scop
*scop
,
114 __isl_give isl_set
*pet_scop_get_affine_skip_domain(struct pet_scop
*scop
,
116 __isl_give isl_map
*pet_scop_get_skip_map(struct pet_scop
*scop
,
118 __isl_give isl_id
*pet_scop_get_skip_id(struct pet_scop
*scop
,
120 struct pet_expr
*pet_scop_get_skip_expr(struct pet_scop
*scop
,
122 void pet_scop_reset_skip(struct pet_scop
*scop
, enum pet_skip type
);
124 struct pet_scop
*pet_scop_add_array(struct pet_scop
*scop
,
125 struct pet_array
*array
);
127 struct pet_scop
*pet_scop_update_start_end(struct pet_scop
*scop
,
128 unsigned start
, unsigned end
);
130 #if defined(__cplusplus)