75#define ISL_SCHEDULE_FUSE_MAX 0
76#define ISL_SCHEDULE_FUSE_MIN 1
113 "how to handle the pip context tableau")
116 "how often to use generalized basis reduction")
119 "closure operation to use")
121 "only perform basis reduction in first direction")
132 "detect simple symmetries in PIP input")
136 "
coalesce-bounded-wrapping", 1, "
bound wrapping during coalescing")
139 "preserve local variables during coalescing")
141 "
schedule-max-coefficient", "limit", -1, "Only consider schedules "
142 "where the coefficients of the
variable and parameter dimensions "
143 "do
not exceed <limit>.
A value of -1 allows arbitrary coefficients.")
145 "
schedule-max-constant-term", "limit", -1, "Only consider schedules "
146 "where the coefficients of the constant dimension do
not exceed "
147 "<limit>.
A value of -1 allows arbitrary coefficients.")
149 "
schedule-parametric", 1, "construct possibly parametric schedules")
152 "try to construct schedules where the outer member of
each band "
153 "satisfies the coincidence constraints")
156 "maximize the number of scheduling dimensions in
a band")
159 "maximize the number of coincident dimensions in
a band")
162 "
split non-tilable bands with scaled schedules")
165 "try and prevent or adjust schedules that perform loop coalescing")
168 "separate components in dependence graph")
171 "try and compute
schedule for entire component first")
179 "serialize strongly connected components in dependence graph")
189 "
type used
for iterators during printing of AST")
191 "ast-always-print-block", 0, "print
for and
if bodies as
a block "
192 "regardless of the number of statements in the body")
194 "ast-print-outermost-block", 1, "print outermost block node as
a block")
196 "ast-print-macro-once", 0, "only print macro definitions once")
198 "ast-build-atomic-upper-
bound", 1, "
generate atomic upper bounds")
200 "ast-build-prefer-pdiv", 1, "prefer pdiv operation over fdiv")
202 "ast-build-detect-min-max", 0, "detect min/max expressions")
204 "ast-build-exploit-
nested-bounds", 1,
212 "bounds to use during separation")
214 "ast-build-
scale-strides", 1,
215 "allow iterators of strided loops to be scaled down")
219 "ast-build-allow-or", 1, "
generate if conditions with disjunctions")
223 "max-operations", 0, "default number of maximal operations per
isl_ctx")
245 coalesce_bounded_wrapping)
247 coalesce_bounded_wrapping)
250 coalesce_preserve_locals)
252 coalesce_preserve_locals)
260 schedule_max_coefficient)
262 schedule_max_coefficient)
265 schedule_max_constant_term)
267 schedule_max_constant_term)
270 schedule_maximize_band_depth)
272 schedule_maximize_band_depth)
275 schedule_maximize_coincidence)
277 schedule_maximize_coincidence)
280 schedule_split_scaled)
282 schedule_split_scaled)
285 schedule_treat_coalescing)
287 schedule_treat_coalescing)
290 schedule_separate_components)
292 schedule_separate_components)
295 schedule_whole_component)
297 schedule_whole_component)
300 schedule_outer_coincidence)
302 schedule_outer_coincidence)
310 schedule_carry_self_first)
312 schedule_carry_self_first)
315 schedule_serialize_sccs)
317 schedule_serialize_sccs)
320 tile_scale_tile_loops)
322 tile_scale_tile_loops)
325 tile_shift_point_loops)
327 tile_shift_point_loops)
330 ast_build_atomic_upper_bound)
332 ast_build_atomic_upper_bound)
335 ast_build_prefer_pdiv)
337 ast_build_prefer_pdiv)
340 ast_build_detect_min_max)
342 ast_build_detect_min_max)
345 ast_build_exploit_nested_bounds)
347 ast_build_exploit_nested_bounds)
350 ast_build_group_coscheduled)
352 ast_build_group_coscheduled)
360 ast_always_print_block)
362 ast_always_print_block)
365 ast_print_outermost_block)
367 ast_print_outermost_block)
370 ast_print_macro_once)
372 ast_print_macro_once)
375 ast_build_separation_bounds)
377 ast_build_separation_bounds)
380 ast_build_scale_strides)
382 ast_build_scale_strides)
385 ast_build_allow_else)
387 ast_build_allow_else)
#define ISL_ARG_DEF(prefix, st, args)
#define ISL_ARG_VERSION(print)
#define ISL_ARG_CHOICE(st, f, s, l, c, d, h)
#define ISL_ARG_BOOL(st, f, s, l, d, h)
#define ISL_ARG_INT(st, f, s, l, a, d, h)
#define ISL_ARG_FLAGS(st, f, s, l, c, d, h)
#define ISL_ARGS_START(s, name)
#define ISL_ARG_STR(st, f, s, l, a, d, h)
#define ISL_ARG_PHANTOM_USER_CHOICE_F(s, l, c, setter, d, h, fl)
#define ISL_ARG_ULONG(st, f, s, l, d, h)
#define ISL_AST_BUILD_SEPARATION_BOUNDS_IMPLICIT
#define ISL_AST_BUILD_SEPARATION_BOUNDS_EXPLICIT
for(int c0=1;c0< 3 *M - 1;c0+=3)
#define ISL_CTX_GET_INT_DEF(prefix, st, args, field)
#define ISL_ARG_CTX_DEF(prefix, st, args)
#define ISL_CTX_GET_CHOICE_DEF(prefix, st, args, field)
#define ISL_CTX_SET_INT_DEF(prefix, st, args, field)
#define ISL_CTX_SET_CHOICE_DEF(prefix, st, args, field)
#define ISL_CTX_SET_BOOL_DEF(prefix, st, args, field)
#define ISL_CTX_GET_BOOL_DEF(prefix, st, args, field)
#define ISL_CTX_GET_STR_DEF(prefix, st, args, field)
#define ISL_CTX_SET_STR_DEF(prefix, st, args, field)
__isl_export __isl_give ISL_HMAP __isl_take ISL_KEY __isl_take ISL_VAL * val
static __isl_give isl_ast_expr * scale(__isl_take isl_ast_expr *expr, __isl_take isl_val *v)
static int coalesce(isl_ctx *ctx, int n, struct isl_coalesce_info *info)
static void print_stats(isl_ctx *ctx)
static isl_bool coscheduled(void *first, void *second)
static struct isl_arg_choice separation_bounds[]
static void print_version(void)
static struct isl_arg_flags bernstein_recurse[]
#define ISL_SCHEDULE_FUSE_MAX
static int set_fuse(void *opt, unsigned val)
struct isl_arg_choice isl_gbr_choice[]
static struct isl_arg_choice convex[]
static struct isl_arg_choice on_error[]
static struct isl_arg_choice bound[]
#define ISL_SCHEDULE_FUSE_MIN
struct isl_arg_choice isl_closure_choice[]
static struct isl_arg_choice fuse[]
static struct isl_arg_choice isl_schedule_algorithm_choice[]
struct isl_arg_choice isl_pip_context_choice[]
#define ISL_CONTEXT_LEXMIN
#define ISL_CONVEX_HULL_FM
#define ISL_CONVEX_HULL_WRAP
#define ISL_BERNSTEIN_INTERVALS
#define ISL_BERNSTEIN_FACTORS
static isl_bool not(__isl_keep isl_set *set, void *user)
static __isl_give isl_schedule_node * carry(__isl_take isl_schedule_node *node, struct isl_sched_graph *graph, int fallback, int coincidence)
static int at(int i, void *user)
static __isl_give isl_schedule_node * recurse(struct isl_scc_graph *scc_graph, int *pos, int n, __isl_take isl_schedule_node *node)
static __isl_keep isl_space * nested(__isl_keep isl_space *space, enum isl_dim_type type)
static __isl_give isl_set * split(__isl_take isl_set *empty, __isl_take isl_set *min_expr, __isl_take isl_mat *cst)
static isl_stat triangulate(__isl_keep isl_cell *cell, __isl_keep isl_vec *v, int *simplex_ids, int n_simplex, int *other_ids, int n_other, isl_stat(*fn)(__isl_take isl_cell *simplex, void *user), void *user)
#define ISL_SCHEDULE_ALGORITHM_ISL
#define ISL_BOUND_BERNSTEIN
#define ISL_SCHEDULE_ALGORITHM_FEAUTRIER
#define ISL_ON_ERROR_ABORT
#define ISL_ON_ERROR_WARN
#define ISL_ON_ERROR_CONTINUE
static std::vector< Signature > each
const char * isl_version(void)