6 #if defined(__cplusplus)
16 /* Structure that handles the construction of skip conditions.
18 * scop_then and scop_else represent the then and else branches
21 * scop1 and scop2 represent the two statements that are combined
23 * skip[type] is true if we need to construct a skip condition of that type
24 * equal is set if the skip conditions of types pet_skip_now and pet_skip_later
25 * are equal to each other
26 * index[type] is an index expression from a zero-dimension domain
27 * to the virtual array representing the skip condition
28 * scop[type] is a scop for computing the skip condition
30 struct pet_skip_info
{
33 enum pet_skip_type type
;
37 isl_multi_pw_aff
*index
[2];
38 struct pet_scop
*scop
[2];
42 struct pet_scop
*scop_then
;
43 struct pet_scop
*scop_else
;
46 struct pet_scop
*scop1
;
47 struct pet_scop
*scop2
;
52 int pet_skip_info_has_skip(struct pet_skip_info
*skip
);
54 void pet_skip_info_if_init(struct pet_skip_info
*skip
, isl_ctx
*ctx
,
55 struct pet_scop
*scop_then
, struct pet_scop
*scop_else
,
56 int have_else
, int affine
);
57 void pet_skip_info_if_extract_index(struct pet_skip_info
*skip
,
58 __isl_keep isl_multi_pw_aff
*index
,
59 int int_size
, int *n_stmt
, int *n_test
);
60 void pet_skip_info_if_extract_cond(struct pet_skip_info
*skip
,
61 __isl_keep isl_pw_aff
*cond
, int int_size
, int *n_stmt
, int *n_test
);
62 struct pet_scop
*pet_skip_info_if_add(struct pet_skip_info
*skip
,
63 struct pet_scop
*scop
, int offset
);
65 void pet_skip_info_seq_init(struct pet_skip_info
*skip
, isl_ctx
*ctx
,
66 struct pet_scop
*scop1
, struct pet_scop
*scop2
);
67 void pet_skip_info_seq_extract(struct pet_skip_info
*skip
,
68 int int_size
, int *n_stmt
, int *n_test
);
69 struct pet_scop
*pet_skip_info_seq_add(struct pet_skip_info
*skip
,
70 struct pet_scop
*scop
, int offset
);
72 #if defined(__cplusplus)