9 #if defined(__cplusplus)
19 /* Structure that handles the construction of skip conditions.
21 * scop_then and scop_else represent the then and else branches
24 * scop1 and scop2 represent the two statements that are combined
26 * skip[type] is true if we need to construct a skip condition of that type
27 * equal is set if the skip conditions of types pet_skip_now and pet_skip_later
28 * are equal to each other
29 * index[type] is an index expression from a zero-dimension domain
30 * to the virtual array representing the skip condition
31 * scop[type] is a scop for computing the skip condition
33 struct pet_skip_info
{
36 enum pet_skip_type type
;
40 isl_multi_pw_aff
*index
[2];
41 struct pet_scop
*scop
[2];
45 struct pet_scop
*scop_then
;
46 struct pet_scop
*scop_else
;
49 struct pet_scop
*scop1
;
50 struct pet_scop
*scop2
;
55 int pet_skip_info_has_skip(struct pet_skip_info
*skip
);
57 void pet_skip_info_if_init(struct pet_skip_info
*skip
, isl_ctx
*ctx
,
58 struct pet_scop
*scop_then
, struct pet_scop
*scop_else
,
59 int have_else
, int affine
);
60 void pet_skip_info_if_extract_index(struct pet_skip_info
*skip
,
61 __isl_keep isl_multi_pw_aff
*index
, __isl_keep pet_context
*pc
,
62 struct pet_state
*state
);
63 void pet_skip_info_if_extract_cond(struct pet_skip_info
*skip
,
64 __isl_keep isl_pw_aff
*cond
, __isl_keep pet_context
*pc
,
65 struct pet_state
*state
);
66 struct pet_scop
*pet_skip_info_if_add(struct pet_skip_info
*skip
,
67 struct pet_scop
*scop
, int offset
);
69 void pet_skip_info_seq_init(struct pet_skip_info
*skip
, isl_ctx
*ctx
,
70 struct pet_scop
*scop1
, struct pet_scop
*scop2
);
71 void pet_skip_info_seq_extract(struct pet_skip_info
*skip
,
72 __isl_keep pet_context
*pc
, struct pet_state
*state
);
73 struct pet_scop
*pet_skip_info_seq_add(struct pet_skip_info
*skip
,
74 struct pet_scop
*scop
, int offset
);
76 #if defined(__cplusplus)