ppcg_kernel: keep track of core statement domain spaces
[ppcg.git] / ppcg_options.h
blob5a83fad6293ff4c279d61b7646ab237c83b7ad18
1 #ifndef PPCG_OPTIONS_H
2 #define PPCG_OPTIONS_H
4 #include <isl/arg.h>
6 struct ppcg_debug_options {
7 int dump_schedule_constraints;
8 int dump_schedule;
9 int dump_sizes;
10 int verbose;
13 struct ppcg_options {
14 struct ppcg_debug_options *debug;
16 int scale_tile_loops;
17 int wrap;
19 char *ctx;
20 char *sizes;
22 int tile_size;
24 /* Take advantage of private memory. */
25 int use_private_memory;
27 /* Take advantage of shared memory. */
28 int use_shared_memory;
30 /* Maximal amount of shared memory. */
31 int max_shared_memory;
33 /* The target we generate code for. */
34 int target;
36 /* Generate OpenMP macros (C target only). */
37 int openmp;
39 /* Linearize all device arrays. */
40 int linearize_device_arrays;
42 /* Allow live range to be reordered. */
43 int live_range_reordering;
45 /* Options to pass to the OpenCL compiler. */
46 char *opencl_compiler_options;
47 /* Prefer GPU device over CPU. */
48 int opencl_use_gpu;
49 /* Number of files to include. */
50 int opencl_n_include_file;
51 /* Files to include. */
52 const char **opencl_include_files;
53 /* Print definitions of types in kernels. */
54 int opencl_print_kernel_types;
55 /* Embed OpenCL kernel code in host code. */
56 int opencl_embed_kernel_code;
59 ISL_ARG_DECL(ppcg_debug_options, struct ppcg_debug_options,
60 ppcg_debug_options_args)
61 ISL_ARG_DECL(ppcg_options, struct ppcg_options, ppcg_options_args)
63 #define PPCG_TARGET_C 0
64 #define PPCG_TARGET_CUDA 1
65 #define PPCG_TARGET_OPENCL 2
67 #endif