| 1 | /* |
| 2 | * Copyright 2008-2009 Katholieke Universiteit Leuven |
| 3 | * |
| 4 | * Use of this software is governed by the MIT license |
| 5 | * |
| 6 | * Written by Sven Verdoolaege, K.U.Leuven, Departement |
| 7 | * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium |
| 8 | */ |
| 9 | |
| 10 | #include <stdio.h> |
| 11 | #include <stdlib.h> |
| 12 | #include <string.h> |
| 13 | |
| 14 | #include <isl/ctx.h> |
| 15 | #include <isl_options_private.h> |
| 16 | #include <isl/ast_build.h> |
| 17 | #include <isl/schedule.h> |
| 18 | #include <isl/version.h> |
| 19 | |
| 20 | struct isl_arg_choice isl_pip_context_choice[] = { |
| 21 | {"gbr" , ISL_CONTEXT_GBR}, |
| 22 | {"lexmin" , ISL_CONTEXT_LEXMIN}, |
| 23 | {0} |
| 24 | }; |
| 25 | |
| 26 | struct isl_arg_choice isl_gbr_choice[] = { |
| 27 | {"never" , ISL_GBR_NEVER}, |
| 28 | {"once" , ISL_GBR_ONCE}, |
| 29 | {"always" , ISL_GBR_ALWAYS}, |
| 30 | {0} |
| 31 | }; |
| 32 | |
| 33 | struct isl_arg_choice isl_closure_choice[] = { |
| 34 | {"isl" , ISL_CLOSURE_ISL}, |
| 35 | {"box" , ISL_CLOSURE_BOX}, |
| 36 | {0} |
| 37 | }; |
| 38 | |
| 39 | static struct isl_arg_choice bound[] = { |
| 40 | {"bernstein" , ISL_BOUND_BERNSTEIN}, |
| 41 | {"range" , ISL_BOUND_RANGE}, |
| 42 | {0} |
| 43 | }; |
| 44 | |
| 45 | static struct isl_arg_choice on_error[] = { |
| 46 | {"warn" , ISL_ON_ERROR_WARN}, |
| 47 | {"continue" , ISL_ON_ERROR_CONTINUE}, |
| 48 | {"abort" , ISL_ON_ERROR_ABORT}, |
| 49 | {0} |
| 50 | }; |
| 51 | |
| 52 | static struct isl_arg_choice isl_schedule_algorithm_choice[] = { |
| 53 | {"isl" , ISL_SCHEDULE_ALGORITHM_ISL}, |
| 54 | {"feautrier" , ISL_SCHEDULE_ALGORITHM_FEAUTRIER}, |
| 55 | {0} |
| 56 | }; |
| 57 | |
| 58 | static struct isl_arg_flags bernstein_recurse[] = { |
| 59 | {"none" , ISL_BERNSTEIN_FACTORS | ISL_BERNSTEIN_INTERVALS, 0}, |
| 60 | {"factors" , ISL_BERNSTEIN_FACTORS | ISL_BERNSTEIN_INTERVALS, |
| 61 | ISL_BERNSTEIN_FACTORS}, |
| 62 | {"intervals" , ISL_BERNSTEIN_FACTORS | ISL_BERNSTEIN_INTERVALS, |
| 63 | ISL_BERNSTEIN_INTERVALS}, |
| 64 | {"full" , ISL_BERNSTEIN_FACTORS | ISL_BERNSTEIN_INTERVALS, |
| 65 | ISL_BERNSTEIN_FACTORS | ISL_BERNSTEIN_INTERVALS}, |
| 66 | {0} |
| 67 | }; |
| 68 | |
| 69 | static struct isl_arg_choice convex[] = { |
| 70 | {"wrap" , ISL_CONVEX_HULL_WRAP}, |
| 71 | {"fm" , ISL_CONVEX_HULL_FM}, |
| 72 | {0} |
| 73 | }; |
| 74 | |
| 75 | #define ISL_SCHEDULE_FUSE_MAX 0 |
| 76 | #define ISL_SCHEDULE_FUSE_MIN 1 |
| 77 | |
| 78 | static struct isl_arg_choice fuse[] = { |
| 79 | {"max" , ISL_SCHEDULE_FUSE_MAX}, |
| 80 | {"min" , ISL_SCHEDULE_FUSE_MIN}, |
| 81 | {0} |
| 82 | }; |
| 83 | |
| 84 | /* Callback for setting the "schedule-fuse" option. |
| 85 | * This (now hidden) option tries to mimic an option that was |
| 86 | * replaced by the schedule-serialize-sccs option. |
| 87 | * Setting the old option to ISL_SCHEDULE_FUSE_MIN is now |
| 88 | * expressed by turning on the schedule-serialize-sccs option. |
| 89 | */ |
| 90 | static int set_fuse(void *opt, unsigned val) |
| 91 | { |
| 92 | struct isl_options *options = opt; |
| 93 | |
| 94 | options->schedule_serialize_sccs = (val == ISL_SCHEDULE_FUSE_MIN); |
| 95 | |
| 96 | return 0; |
| 97 | } |
| 98 | |
| 99 | static struct isl_arg_choice separation_bounds[] = { |
| 100 | {"explicit" , ISL_AST_BUILD_SEPARATION_BOUNDS_EXPLICIT}, |
| 101 | {"implicit" , ISL_AST_BUILD_SEPARATION_BOUNDS_IMPLICIT}, |
| 102 | {0} |
| 103 | }; |
| 104 | |
| 105 | static void print_version(void) |
| 106 | { |
| 107 | printf(format: "%s" , isl_version()); |
| 108 | } |
| 109 | |
| 110 | ISL_ARGS_START(struct isl_options, isl_options_args) |
| 111 | ISL_ARG_CHOICE(struct isl_options, context, 0, "context" , \ |
| 112 | isl_pip_context_choice, ISL_CONTEXT_GBR, |
| 113 | "how to handle the pip context tableau" ) |
| 114 | ISL_ARG_CHOICE(struct isl_options, gbr, 0, "gbr" , \ |
| 115 | isl_gbr_choice, ISL_GBR_ALWAYS, |
| 116 | "how often to use generalized basis reduction" ) |
| 117 | ISL_ARG_CHOICE(struct isl_options, closure, 0, "closure" , \ |
| 118 | isl_closure_choice, ISL_CLOSURE_ISL, |
| 119 | "closure operation to use" ) |
| 120 | ISL_ARG_BOOL(struct isl_options, gbr_only_first, 0, "gbr-only-first" , 0, |
| 121 | "only perform basis reduction in first direction" ) |
| 122 | ISL_ARG_CHOICE(struct isl_options, bound, 0, "bound" , bound, |
| 123 | ISL_BOUND_BERNSTEIN, "algorithm to use for computing bounds" ) |
| 124 | ISL_ARG_CHOICE(struct isl_options, on_error, 0, "on-error" , on_error, |
| 125 | ISL_ON_ERROR_WARN, "how to react if an error is detected" ) |
| 126 | ISL_ARG_FLAGS(struct isl_options, bernstein_recurse, 0, |
| 127 | "bernstein-recurse" , bernstein_recurse, ISL_BERNSTEIN_FACTORS, NULL) |
| 128 | ISL_ARG_BOOL(struct isl_options, bernstein_triangulate, 0, |
| 129 | "bernstein-triangulate" , 1, |
| 130 | "triangulate domains during Bernstein expansion" ) |
| 131 | ISL_ARG_BOOL(struct isl_options, pip_symmetry, 0, "pip-symmetry" , 1, |
| 132 | "detect simple symmetries in PIP input" ) |
| 133 | ISL_ARG_CHOICE(struct isl_options, convex, 0, "convex-hull" , \ |
| 134 | convex, ISL_CONVEX_HULL_WRAP, "convex hull algorithm to use" ) |
| 135 | ISL_ARG_BOOL(struct isl_options, coalesce_bounded_wrapping, 0, |
| 136 | "coalesce-bounded-wrapping" , 1, "bound wrapping during coalescing" ) |
| 137 | ISL_ARG_BOOL(struct isl_options, coalesce_preserve_locals, 0, |
| 138 | "coalesce-preserve-locals" , 0, |
| 139 | "preserve local variables during coalescing" ) |
| 140 | ISL_ARG_INT(struct isl_options, schedule_max_coefficient, 0, |
| 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." ) |
| 144 | ISL_ARG_INT(struct isl_options, schedule_max_constant_term, 0, |
| 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." ) |
| 148 | ISL_ARG_BOOL(struct isl_options, schedule_parametric, 0, |
| 149 | "schedule-parametric" , 1, "construct possibly parametric schedules" ) |
| 150 | ISL_ARG_BOOL(struct isl_options, schedule_outer_coincidence, 0, |
| 151 | "schedule-outer-coincidence" , 0, |
| 152 | "try to construct schedules where the outer member of each band " |
| 153 | "satisfies the coincidence constraints" ) |
| 154 | ISL_ARG_BOOL(struct isl_options, schedule_maximize_band_depth, 0, |
| 155 | "schedule-maximize-band-depth" , 0, |
| 156 | "maximize the number of scheduling dimensions in a band" ) |
| 157 | ISL_ARG_BOOL(struct isl_options, schedule_maximize_coincidence, 0, |
| 158 | "schedule-maximize-coincidence" , 0, |
| 159 | "maximize the number of coincident dimensions in a band" ) |
| 160 | ISL_ARG_BOOL(struct isl_options, schedule_split_scaled, 0, |
| 161 | "schedule-split-scaled" , 1, |
| 162 | "split non-tilable bands with scaled schedules" ) |
| 163 | ISL_ARG_BOOL(struct isl_options, schedule_treat_coalescing, 0, |
| 164 | "schedule-treat-coalescing" , 1, |
| 165 | "try and prevent or adjust schedules that perform loop coalescing" ) |
| 166 | ISL_ARG_BOOL(struct isl_options, schedule_separate_components, 0, |
| 167 | "schedule-separate-components" , 1, |
| 168 | "separate components in dependence graph" ) |
| 169 | ISL_ARG_BOOL(struct isl_options, schedule_whole_component, 0, |
| 170 | "schedule-whole-component" , 0, |
| 171 | "try and compute schedule for entire component first" ) |
| 172 | ISL_ARG_CHOICE(struct isl_options, schedule_algorithm, 0, |
| 173 | "schedule-algorithm" , isl_schedule_algorithm_choice, |
| 174 | ISL_SCHEDULE_ALGORITHM_ISL, "scheduling algorithm to use" ) |
| 175 | ISL_ARG_BOOL(struct isl_options, schedule_carry_self_first, 0, |
| 176 | "schedule-carry-self-first" , 1, "try and carry self-dependences first" ) |
| 177 | ISL_ARG_BOOL(struct isl_options, schedule_serialize_sccs, 0, |
| 178 | "schedule-serialize-sccs" , 0, |
| 179 | "serialize strongly connected components in dependence graph" ) |
| 180 | ISL_ARG_PHANTOM_USER_CHOICE_F(0, "schedule-fuse" , fuse, &set_fuse, |
| 181 | ISL_SCHEDULE_FUSE_MAX, "level of fusion during scheduling" , |
| 182 | ISL_ARG_HIDDEN) |
| 183 | ISL_ARG_BOOL(struct isl_options, tile_scale_tile_loops, 0, |
| 184 | "tile-scale-tile-loops" , 1, "scale tile loops" ) |
| 185 | ISL_ARG_BOOL(struct isl_options, tile_shift_point_loops, 0, |
| 186 | "tile-shift-point-loops" , 1, "shift point loops to start at zero" ) |
| 187 | ISL_ARG_STR(struct isl_options, ast_iterator_type, 0, |
| 188 | "ast-iterator-type" , "type" , "int" , |
| 189 | "type used for iterators during printing of AST" ) |
| 190 | ISL_ARG_BOOL(struct isl_options, ast_always_print_block, 0, |
| 191 | "ast-always-print-block" , 0, "print for and if bodies as a block " |
| 192 | "regardless of the number of statements in the body" ) |
| 193 | ISL_ARG_BOOL(struct isl_options, ast_print_outermost_block, 0, |
| 194 | "ast-print-outermost-block" , 1, "print outermost block node as a block" ) |
| 195 | ISL_ARG_BOOL(struct isl_options, ast_print_macro_once, 0, |
| 196 | "ast-print-macro-once" , 0, "only print macro definitions once" ) |
| 197 | ISL_ARG_BOOL(struct isl_options, ast_build_atomic_upper_bound, 0, |
| 198 | "ast-build-atomic-upper-bound" , 1, "generate atomic upper bounds" ) |
| 199 | ISL_ARG_BOOL(struct isl_options, ast_build_prefer_pdiv, 0, |
| 200 | "ast-build-prefer-pdiv" , 1, "prefer pdiv operation over fdiv" ) |
| 201 | ISL_ARG_BOOL(struct isl_options, ast_build_detect_min_max, 0, |
| 202 | "ast-build-detect-min-max" , 0, "detect min/max expressions" ) |
| 203 | ISL_ARG_BOOL(struct isl_options, ast_build_exploit_nested_bounds, 0, |
| 204 | "ast-build-exploit-nested-bounds" , 1, |
| 205 | "simplify conditions based on bounds of nested for loops" ) |
| 206 | ISL_ARG_BOOL(struct isl_options, ast_build_group_coscheduled, 0, |
| 207 | "ast-build-group-coscheduled" , 0, |
| 208 | "keep coscheduled domain elements together" ) |
| 209 | ISL_ARG_CHOICE(struct isl_options, ast_build_separation_bounds, 0, |
| 210 | "ast-build-separation-bounds" , separation_bounds, |
| 211 | ISL_AST_BUILD_SEPARATION_BOUNDS_EXPLICIT, |
| 212 | "bounds to use during separation" ) |
| 213 | ISL_ARG_BOOL(struct isl_options, ast_build_scale_strides, 0, |
| 214 | "ast-build-scale-strides" , 1, |
| 215 | "allow iterators of strided loops to be scaled down" ) |
| 216 | ISL_ARG_BOOL(struct isl_options, ast_build_allow_else, 0, |
| 217 | "ast-build-allow-else" , 1, "generate if statements with else branches" ) |
| 218 | ISL_ARG_BOOL(struct isl_options, ast_build_allow_or, 0, |
| 219 | "ast-build-allow-or" , 1, "generate if conditions with disjunctions" ) |
| 220 | ISL_ARG_BOOL(struct isl_options, print_stats, 0, "print-stats" , 0, |
| 221 | "print statistics for every isl_ctx" ) |
| 222 | ISL_ARG_ULONG(struct isl_options, max_operations, 0, |
| 223 | "max-operations" , 0, "default number of maximal operations per isl_ctx" ) |
| 224 | ISL_ARG_VERSION(print_version) |
| 225 | ISL_ARGS_END |
| 226 | |
| 227 | ISL_ARG_DEF(isl_options, struct isl_options, isl_options_args) |
| 228 | |
| 229 | ISL_ARG_CTX_DEF(isl_options, struct isl_options, isl_options_args) |
| 230 | |
| 231 | ISL_CTX_SET_CHOICE_DEF(isl_options, struct isl_options, isl_options_args, bound) |
| 232 | ISL_CTX_GET_CHOICE_DEF(isl_options, struct isl_options, isl_options_args, bound) |
| 233 | |
| 234 | ISL_CTX_SET_CHOICE_DEF(isl_options, struct isl_options, isl_options_args, |
| 235 | on_error) |
| 236 | ISL_CTX_GET_CHOICE_DEF(isl_options, struct isl_options, isl_options_args, |
| 237 | on_error) |
| 238 | |
| 239 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 240 | pip_symmetry) |
| 241 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 242 | pip_symmetry) |
| 243 | |
| 244 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 245 | coalesce_bounded_wrapping) |
| 246 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 247 | coalesce_bounded_wrapping) |
| 248 | |
| 249 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 250 | coalesce_preserve_locals) |
| 251 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 252 | coalesce_preserve_locals) |
| 253 | |
| 254 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 255 | gbr_only_first) |
| 256 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 257 | gbr_only_first) |
| 258 | |
| 259 | ISL_CTX_SET_INT_DEF(isl_options, struct isl_options, isl_options_args, |
| 260 | schedule_max_coefficient) |
| 261 | ISL_CTX_GET_INT_DEF(isl_options, struct isl_options, isl_options_args, |
| 262 | schedule_max_coefficient) |
| 263 | |
| 264 | ISL_CTX_SET_INT_DEF(isl_options, struct isl_options, isl_options_args, |
| 265 | schedule_max_constant_term) |
| 266 | ISL_CTX_GET_INT_DEF(isl_options, struct isl_options, isl_options_args, |
| 267 | schedule_max_constant_term) |
| 268 | |
| 269 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 270 | schedule_maximize_band_depth) |
| 271 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 272 | schedule_maximize_band_depth) |
| 273 | |
| 274 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 275 | schedule_maximize_coincidence) |
| 276 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 277 | schedule_maximize_coincidence) |
| 278 | |
| 279 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 280 | schedule_split_scaled) |
| 281 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 282 | schedule_split_scaled) |
| 283 | |
| 284 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 285 | schedule_treat_coalescing) |
| 286 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 287 | schedule_treat_coalescing) |
| 288 | |
| 289 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 290 | schedule_separate_components) |
| 291 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 292 | schedule_separate_components) |
| 293 | |
| 294 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 295 | schedule_whole_component) |
| 296 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 297 | schedule_whole_component) |
| 298 | |
| 299 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 300 | schedule_outer_coincidence) |
| 301 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 302 | schedule_outer_coincidence) |
| 303 | |
| 304 | ISL_CTX_SET_CHOICE_DEF(isl_options, struct isl_options, isl_options_args, |
| 305 | schedule_algorithm) |
| 306 | ISL_CTX_GET_CHOICE_DEF(isl_options, struct isl_options, isl_options_args, |
| 307 | schedule_algorithm) |
| 308 | |
| 309 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 310 | schedule_carry_self_first) |
| 311 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 312 | schedule_carry_self_first) |
| 313 | |
| 314 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 315 | schedule_serialize_sccs) |
| 316 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 317 | schedule_serialize_sccs) |
| 318 | |
| 319 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 320 | tile_scale_tile_loops) |
| 321 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 322 | tile_scale_tile_loops) |
| 323 | |
| 324 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 325 | tile_shift_point_loops) |
| 326 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 327 | tile_shift_point_loops) |
| 328 | |
| 329 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 330 | ast_build_atomic_upper_bound) |
| 331 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 332 | ast_build_atomic_upper_bound) |
| 333 | |
| 334 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 335 | ast_build_prefer_pdiv) |
| 336 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 337 | ast_build_prefer_pdiv) |
| 338 | |
| 339 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 340 | ast_build_detect_min_max) |
| 341 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 342 | ast_build_detect_min_max) |
| 343 | |
| 344 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 345 | ast_build_exploit_nested_bounds) |
| 346 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 347 | ast_build_exploit_nested_bounds) |
| 348 | |
| 349 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 350 | ast_build_group_coscheduled) |
| 351 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 352 | ast_build_group_coscheduled) |
| 353 | |
| 354 | ISL_CTX_SET_STR_DEF(isl_options, struct isl_options, isl_options_args, |
| 355 | ast_iterator_type) |
| 356 | ISL_CTX_GET_STR_DEF(isl_options, struct isl_options, isl_options_args, |
| 357 | ast_iterator_type) |
| 358 | |
| 359 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 360 | ast_always_print_block) |
| 361 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 362 | ast_always_print_block) |
| 363 | |
| 364 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 365 | ast_print_outermost_block) |
| 366 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 367 | ast_print_outermost_block) |
| 368 | |
| 369 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 370 | ast_print_macro_once) |
| 371 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 372 | ast_print_macro_once) |
| 373 | |
| 374 | ISL_CTX_SET_CHOICE_DEF(isl_options, struct isl_options, isl_options_args, |
| 375 | ast_build_separation_bounds) |
| 376 | ISL_CTX_GET_CHOICE_DEF(isl_options, struct isl_options, isl_options_args, |
| 377 | ast_build_separation_bounds) |
| 378 | |
| 379 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 380 | ast_build_scale_strides) |
| 381 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 382 | ast_build_scale_strides) |
| 383 | |
| 384 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 385 | ast_build_allow_else) |
| 386 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 387 | ast_build_allow_else) |
| 388 | |
| 389 | ISL_CTX_SET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 390 | ast_build_allow_or) |
| 391 | ISL_CTX_GET_BOOL_DEF(isl_options, struct isl_options, isl_options_args, |
| 392 | ast_build_allow_or) |
| 393 | |