add --opencl-include-file option
[ppcg.git] / ppcg_options.c
blobbcb16fe5ea5ca5e95586343ed122b632a58d9d44
1 /*
2 * Copyright 2010-2011 INRIA Saclay
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
7 * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
8 * 91893 Orsay, France
9 */
11 #include "ppcg_options.h"
13 static struct isl_arg_choice target[] = {
14 {"c", PPCG_TARGET_C},
15 {"cuda", PPCG_TARGET_CUDA},
16 {"opencl", PPCG_TARGET_OPENCL},
17 {0}
20 ISL_ARGS_START(struct ppcg_debug_options, ppcg_debug_options_args)
21 ISL_ARG_BOOL(struct ppcg_debug_options, dump_schedule_constraints, 0,
22 "dump-schedule-constraints", 0, "dump schedule constraints")
23 ISL_ARG_BOOL(struct ppcg_debug_options, dump_schedule, 0,
24 "dump-schedule", 0, "dump isl computed schedule")
25 ISL_ARG_BOOL(struct ppcg_debug_options, dump_sizes, 0,
26 "dump-sizes", 0,
27 "dump effectively used per kernel tile, grid and block sizes")
28 ISL_ARGS_END
30 ISL_ARGS_START(struct ppcg_options, ppcg_opencl_options_args)
31 ISL_ARG_STR(struct ppcg_options, opencl_compiler_options, 0, "compiler-options",
32 "options", NULL, "options to pass to the OpenCL compiler")
33 ISL_ARG_BOOL(struct ppcg_options, opencl_use_gpu, 0, "use-gpu", 1,
34 "use GPU device (if available)")
35 ISL_ARG_STR_LIST(struct ppcg_options, opencl_n_include_file,
36 opencl_include_files, 0, "include-file", "filename",
37 "file to #include in generated OpenCL code")
38 ISL_ARGS_END
40 ISL_ARGS_START(struct ppcg_options, ppcg_options_args)
41 ISL_ARG_CHILD(struct ppcg_options, debug, NULL, &ppcg_debug_options_args,
42 "debugging options")
43 ISL_ARG_BOOL(struct ppcg_options, scale_tile_loops, 0,
44 "scale-tile-loops", 1, NULL)
45 ISL_ARG_BOOL(struct ppcg_options, wrap, 0, "wrap", 1, NULL)
46 ISL_ARG_BOOL(struct ppcg_options, use_shared_memory, 0, "shared-memory", 1,
47 "use shared memory in kernel code")
48 ISL_ARG_BOOL(struct ppcg_options, use_private_memory, 0, "private-memory", 1,
49 "use private memory in kernel code")
50 ISL_ARG_STR(struct ppcg_options, ctx, 0, "ctx", "context", NULL,
51 "Constraints on parameters")
52 ISL_ARG_INT(struct ppcg_options, tile_size, 'S', "tile-size", "size", 32, NULL)
53 ISL_ARG_STR(struct ppcg_options, sizes, 0, "sizes", "sizes", NULL,
54 "Per kernel tile, grid and block sizes")
55 ISL_ARG_INT(struct ppcg_options, max_shared_memory, 0,
56 "max-shared-memory", "size", 8192, "maximal amount of shared memory")
57 ISL_ARG_BOOL(struct ppcg_options, openmp, 0, "openmp", 0,
58 "Generate OpenMP macros (only for C target)")
59 ISL_ARG_CHOICE(struct ppcg_options, target, 0, "target", target,
60 PPCG_TARGET_CUDA, "the target to generate code for")
61 ISL_ARG_BOOL(struct ppcg_options, linearize_device_arrays, 0,
62 "linearize-device-arrays", 1,
63 "linearize all device arrays, even those of fixed size")
64 ISL_ARG_BOOL(struct ppcg_options, live_range_reordering, 0,
65 "live-range-reordering", 1,
66 "allow successive live ranges on the same memory element "
67 "to be reordered")
68 ISL_ARG_GROUP("opencl", &ppcg_opencl_options_args, "OpenCL options")
69 ISL_ARGS_END