forked from OSchip/llvm-project
101 lines
2.4 KiB
C
101 lines
2.4 KiB
C
#ifndef PPCG_OPTIONS_H
|
|
#define PPCG_OPTIONS_H
|
|
|
|
#include <isl/arg.h>
|
|
#include <isl/options.h>
|
|
|
|
struct ppcg_debug_options {
|
|
int dump_schedule_constraints;
|
|
int dump_schedule;
|
|
int dump_final_schedule;
|
|
int dump_sizes;
|
|
int verbose;
|
|
};
|
|
|
|
struct ppcg_options {
|
|
struct isl_options *isl;
|
|
struct ppcg_debug_options *debug;
|
|
|
|
/* Group chains of consecutive statements before scheduling. */
|
|
int group_chains;
|
|
|
|
/* Use isl to compute a schedule replacing the original schedule. */
|
|
int reschedule;
|
|
int scale_tile_loops;
|
|
int wrap;
|
|
|
|
/* Assume all parameters are non-negative. */
|
|
int non_negative_parameters;
|
|
char *ctx;
|
|
char *sizes;
|
|
|
|
/* Perform tiling (C target). */
|
|
int tile;
|
|
int tile_size;
|
|
|
|
/* Isolate full tiles from partial tiles. */
|
|
int isolate_full_tiles;
|
|
|
|
/* Take advantage of private memory. */
|
|
int use_private_memory;
|
|
|
|
/* Take advantage of shared memory. */
|
|
int use_shared_memory;
|
|
|
|
/* Maximal amount of shared memory. */
|
|
int max_shared_memory;
|
|
|
|
/* The target we generate code for. */
|
|
int target;
|
|
|
|
/* Generate OpenMP macros (C target only). */
|
|
int openmp;
|
|
|
|
/* Linearize all device arrays. */
|
|
int linearize_device_arrays;
|
|
|
|
/* Allow the use of GNU extensions in generated code. */
|
|
int allow_gnu_extensions;
|
|
|
|
/* Allow live range to be reordered. */
|
|
int live_range_reordering;
|
|
|
|
/* Allow hybrid tiling whenever a suitable input pattern is found. */
|
|
int hybrid;
|
|
|
|
/* Unroll the code for copying to/from shared memory. */
|
|
int unroll_copy_shared;
|
|
/* Unroll code inside tile on GPU targets. */
|
|
int unroll_gpu_tile;
|
|
|
|
/* Options to pass to the OpenCL compiler. */
|
|
char *opencl_compiler_options;
|
|
/* Prefer GPU device over CPU. */
|
|
int opencl_use_gpu;
|
|
/* Number of files to include. */
|
|
int opencl_n_include_file;
|
|
/* Files to include. */
|
|
const char **opencl_include_files;
|
|
/* Print definitions of types in kernels. */
|
|
int opencl_print_kernel_types;
|
|
/* Embed OpenCL kernel code in host code. */
|
|
int opencl_embed_kernel_code;
|
|
|
|
/* Name of file for saving isl computed schedule or NULL. */
|
|
char *save_schedule_file;
|
|
/* Name of file for loading schedule or NULL. */
|
|
char *load_schedule_file;
|
|
};
|
|
|
|
ISL_ARG_DECL(ppcg_debug_options, struct ppcg_debug_options,
|
|
ppcg_debug_options_args)
|
|
ISL_ARG_DECL(ppcg_options, struct ppcg_options, ppcg_options_args)
|
|
|
|
#define PPCG_TARGET_C 0
|
|
#define PPCG_TARGET_CUDA 1
|
|
#define PPCG_TARGET_OPENCL 2
|
|
|
|
void ppcg_options_set_target_defaults(struct ppcg_options *options);
|
|
|
|
#endif
|