live-out computation: only remove elements that are actually killed
[ppcg.git] / ppcg_options.h
blob57476439fb71688fe80785f6b27f253bdb0cb455
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_final_schedule;
10 int dump_sizes;
11 int verbose;
14 struct ppcg_options {
15 struct ppcg_debug_options *debug;
17 /* Use isl to compute a schedule replacing the original schedule. */
18 int reschedule;
19 int scale_tile_loops;
20 int wrap;
22 /* Assume all parameters are non-negative. */
23 int non_negative_parameters;
24 char *ctx;
25 char *sizes;
27 int tile_size;
29 /* Take advantage of private memory. */
30 int use_private_memory;
32 /* Take advantage of shared memory. */
33 int use_shared_memory;
35 /* Maximal amount of shared memory. */
36 int max_shared_memory;
38 /* The target we generate code for. */
39 int target;
41 /* Generate OpenMP macros (C target only). */
42 int openmp;
44 /* Linearize all device arrays. */
45 int linearize_device_arrays;
47 /* Allow live range to be reordered. */
48 int live_range_reordering;
50 /* Options to pass to the OpenCL compiler. */
51 char *opencl_compiler_options;
52 /* Prefer GPU device over CPU. */
53 int opencl_use_gpu;
54 /* Number of files to include. */
55 int opencl_n_include_file;
56 /* Files to include. */
57 const char **opencl_include_files;
58 /* Print definitions of types in kernels. */
59 int opencl_print_kernel_types;
60 /* Embed OpenCL kernel code in host code. */
61 int opencl_embed_kernel_code;
63 /* Name of file for saving isl computed schedule or NULL. */
64 char *save_schedule_file;
65 /* Name of file for loading schedule or NULL. */
66 char *load_schedule_file;
69 ISL_ARG_DECL(ppcg_debug_options, struct ppcg_debug_options,
70 ppcg_debug_options_args)
71 ISL_ARG_DECL(ppcg_options, struct ppcg_options, ppcg_options_args)
73 #define PPCG_TARGET_C 0
74 #define PPCG_TARGET_CUDA 1
75 #define PPCG_TARGET_OPENCL 2
77 #endif