00001 /* 00002 * options.h: this file is part of the PoCC project. 00003 * 00004 * PoCC, the Polyhedral Compiler Collection package 00005 * 00006 * Copyright (C) 2009 Louis-Noel Pouchet 00007 * 00008 * This library is free software; you can redistribute it and/or 00009 * modify it under the terms of the GNU Lesser General Public License 00010 * as published by the Free Software Foundation; either version 2.1 00011 * of the License, or (at your option) any later version. 00012 * 00013 * This library is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 * Lesser General Public License for more details. 00017 * 00018 * The complete GNU General Public Licence Notice can be found as the 00019 * `COPYING.LESSER' file in the root directory. 00020 * 00021 * Author: 00022 * Louis-Noel Pouchet <Louis-Noel.Pouchet@inria.fr> 00023 * 00024 */ 00025 #ifndef POCC_OPTIONS_H 00026 # define POCC_OPTIONS_H 00027 00028 # include <stdio.h> 00029 # include <pocc/common.h> 00030 # include <cloog/options.h> 00031 # include <pluto/pluto.h> 00032 # include <letsee/options.h> 00033 00034 #define POCC_TIMER_CODE_ASM 1 00035 #define POCC_TIMER_CODE_TIME 2 00036 00037 #define POCC_CLOOG_UNDEF -2 00038 00039 struct s_pocc_options 00040 { 00041 // In/Out file information 00042 FILE* input_file; 00043 char* input_file_name; 00044 FILE* output_file; 00045 char* output_file_name; 00046 00047 // Verbose. 00048 int verbose; 00049 int quiet; 00050 00051 // Trash. 00052 int trash; 00053 00054 // Parser options. 00055 int clan_bounded_context; 00056 int inscop_fakepoccarray; 00057 00058 // Compile command. 00059 int compile_program; // Internal field 00060 char* compile_command; 00061 int execute_program; 00062 char* execute_command_args; 00063 char* program_exec_result; // Internal field 00064 00065 // LetSee Options. 00066 int letsee; // Run LetSee (default: no) 00067 int letsee_space; 00068 int letsee_traversal; 00069 int letsee_normspace; 00070 int* letsee_scheme_m1; 00071 int letsee_prune_precut; 00072 int letsee_backtrack_multi; 00073 int letsee_rtries; 00074 int letsee_ilb; 00075 int letsee_iUb; 00076 int letsee_plb; 00077 int letsee_pUb; 00078 int letsee_clb; 00079 int letsee_cUb; 00080 00081 // PLuTo Options. 00082 int pluto; // Run PLuTo (default: no) 00083 int pluto_unroll; 00084 int pluto_parallel; 00085 int pluto_tile; 00086 int pluto_rar; 00087 int pluto_fuse; 00088 int pluto_polyunroll; 00089 int pluto_bee; 00090 int pluto_prevector; 00091 int pluto_ufactor; 00092 int pluto_quiet; 00093 int pluto_context; 00094 int pluto_ft; 00095 int pluto_lt; 00096 int pluto_multipipe; 00097 int pluto_l2tile; 00098 int pluto_lastwriter; 00099 int pluto_scalpriv; 00100 int pluto_external_candl; 00101 00102 00103 // Codegen Options. 00104 int codegen; // Perform codegen (default: yes) 00105 CloogOptions* cloog_options; 00106 int cloog_f; 00107 int cloog_l; 00108 int codegen_timercode; 00109 int codegen_timer_asm; 00110 int codegen_timer_papi; 00111 int timeout; 00112 00113 // Pragmatizer. 00114 int pragmatizer; 00115 00116 // Vectorizer. 00117 int vectorizer; 00118 int vectorizer_mark_par_loops; 00119 int vectorizer_mark_vect_loops; 00120 int vectorizer_vectorize_loops; 00121 int vectorizer_keep_outer_par_loops; 00122 00123 // Storage compaction. 00124 int storage_compaction; 00125 00126 }; 00127 typedef struct s_pocc_options s_pocc_options_t; 00128 00129 00130 00131 BEGIN_C_DECLS 00132 00133 extern 00134 s_pocc_options_t* pocc_options_malloc (); 00135 00136 extern 00137 void pocc_options_init_cloog (s_pocc_options_t* options); 00138 00139 extern 00140 void pocc_options_free (s_pocc_options_t* options); 00141 00142 00143 END_C_DECLS 00144 00145 00146 00147 #endif // POCC_OPTIONS_H