Candl
0.6.1
|
00001 00037 #ifndef CANDL_DEPENDENCE_H 00038 # define CANDL_DEPENDENCE_H 00039 00040 00041 # include <stdio.h> 00042 # include <candl/statement.h> 00043 # include <candl/matrix.h> 00044 # include <candl/program.h> 00045 # include <candl/options.h> 00046 00047 00048 00049 # define CANDL_ARRAY_BUFF_SIZE 2048 00050 # define CANDL_VAR_UNDEF 1 00051 # define CANDL_VAR_IS_DEF 2 00052 # define CANDL_VAR_IS_USED 3 00053 # define CANDL_VAR_IS_DEF_USED 4 00054 00055 00056 # if defined(__cplusplus) 00057 extern "C" 00058 { 00059 # endif 00060 00061 00067 struct candldependence 00068 { CandlStatement * source; 00069 CandlStatement * target; 00070 int depth; 00071 int type; 00084 int ref_source; 00085 int ref_target; 00086 CandlMatrix * domain; 00088 void* usr; 00090 struct candldependence * next; 00091 }; 00092 typedef struct candldependence CandlDependence; 00093 typedef struct candldependence candl_dependence_t; 00094 typedef struct candldependence * candl_dependence_p; 00095 00096 00097 /****************************************************************************** 00098 * Structure display function * 00099 ******************************************************************************/ 00100 void candl_dependence_print_structure(FILE *, candl_dependence_p, int); 00101 void candl_dependence_print(FILE *, candl_dependence_p); 00102 void candl_dependence_pprint(FILE *, candl_dependence_p); 00103 void candl_dependence_view(candl_dependence_p); 00104 # ifdef CANDL_SUPPORTS_SCOPLIB 00105 CandlDependence* candl_dependence_read_from_scop(scoplib_scop_p, CandlProgram*); 00106 void candl_dependence_update_scop_with_deps(scoplib_scop_p, CandlDependence*); 00107 void candl_dependence_print_scop(FILE*, FILE*, CandlDependence*); 00108 # endif 00109 00110 #ifdef CANDL_SUPPORTS_ISL 00111 CandlDependence* candl_dependence_isl_simplify(CandlDependence*, CandlProgram*); 00112 # endif 00113 00114 00115 /****************************************************************************** 00116 * Memory alloc/dealloc function * 00117 ******************************************************************************/ 00118 candl_dependence_p candl_dependence_malloc(); 00119 void candl_dependence_free(candl_dependence_p); 00120 00121 00122 /****************************************************************************** 00123 * Processing functions * 00124 ******************************************************************************/ 00125 int candl_dependence_gcd_test(CandlStatement*, 00126 CandlStatement*, 00127 CandlMatrix*, int); 00128 int candl_dependence_check(CandlProgram *, 00129 candl_dependence_p, 00130 CandlOptions *); 00131 candl_dependence_p candl_dependence(CandlProgram *, CandlOptions *); 00132 00133 00134 /****************************************************************************** 00135 * Scalar analysis functions * 00136 ******************************************************************************/ 00137 int 00138 candl_dependence_var_is_scalar (candl_program_p, int); 00139 00140 CandlStatement** 00141 candl_dependence_refvar_chain(candl_program_p, CandlStatement*, int, int); 00142 00143 int 00144 candl_dependence_var_is_ref(CandlStatement*, int); 00145 00146 int 00147 candl_dependence_check_domain_is_included(CandlStatement*, CandlStatement*, 00148 CandlMatrix*, int); 00149 00150 int 00151 candl_dependence_scalar_is_privatizable_at(candl_program_p, int, int); 00152 00153 int 00154 candl_dependence_is_loop_carried (candl_program_p, CandlDependence*, int); 00155 00156 void 00157 candl_dependence_prune_scalar_waw (candl_program_p, CandlOptions*, 00158 CandlDependence**); 00159 00160 void 00161 candl_dependence_prune_with_privatization (candl_program_p, CandlOptions*, 00162 CandlDependence**); 00163 00164 int 00165 candl_dependence_scalar_renaming(candl_program_p, CandlOptions*, 00166 CandlDependence**); 00167 00168 int 00169 candl_dependence_analyze_scalars(candl_program_p, CandlOptions*); 00170 00171 /****************************************************************************** 00172 * Miscellaneous functions * 00173 ******************************************************************************/ 00174 int 00175 candl_num_dependences(CandlDependence *candl_deps); 00176 00177 void 00178 candl_compute_last_writer (CandlDependence *dep, CandlProgram *prog); 00179 00180 CandlDependence* 00181 candl_dependence_prune_transitively_covered (CandlDependence* deps); 00182 00183 # if defined(__cplusplus) 00184 } 00185 # endif 00186 #endif /* define CANDL_DEPENDENCE_H */ 00187