PIPS
complexity.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/complexity/complexity-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef complexity_header_included
7 #define complexity_header_included
8 /* complexity-local.h */
9 /*
10 
11  $Id: complexity-local.h 23065 2016-03-02 09:05:50Z coelho $
12 
13  Copyright 1989-2016 MINES ParisTech
14 
15  This file is part of PIPS.
16 
17  PIPS is free software: you can redistribute it and/or modify it
18  under the terms of the GNU General Public License as published by
19  the Free Software Foundation, either version 3 of the License, or
20  any later version.
21 
22  PIPS is distributed in the hope that it will be useful, but WITHOUT ANY
23  WARRANTY; without even the implied warranty of MERCHANTABILITY or
24  FITNESS FOR A PARTICULAR PURPOSE.
25 
26  See the GNU General Public License for more details.
27 
28  You should have received a copy of the GNU General Public License
29  along with PIPS. If not, see <http://www.gnu.org/licenses/>.
30 
31 */
32 /*
33  *
34  * COMPLEXITY EVALUATION P. Berthomier 21-08-90
35  *
36  * L. Zhou 21-03-90
37  *
38  * Modifications:
39  * - deletion of includes in this include file; Francois Irigoin,
40  * 13 March 1991
41  *
42  * - deletion of #define for operators ;
43  * (all the operators and the instrinsics are defined inside of ri-util-local.h); Molka Becher, 08.03.2011
44  */
45 #include "matrice.h"
46 
47 #define COMPLEXITY_PACKAGE_NAME "COMPLEXITY"
48 #define COMPLEXITY_UNDEFINED complexity_undefined
49 /*
50 #define COMPLEXITY_UNDEFINED_SYMBOL "<Complexity undefined>"
51 */
52 #define COMPLEXITY_UNDEFINED_P(c) ((c)==complexity_undefined)
53 #define COMPLEXITY_NOT_FOUND ((complexity) HASH_UNDEFINED_VALUE)
54 
55 #define MAX_CONTROLS_IN_UNSTRUCTURED 100
56 
57 /* pseudo-variable for unknown variables */
58 #define UNKNOWN_VARIABLE_NAME "UNKNOWN_VARIABLE"
59 
60 /* pseudo-variable for default iteration number of a loop */
61 #define UNKNOWN_RANGE_NAME "UNKNOWN_RANGE"
62 
63 #define TCST_NAME "_TCST_"
64 
65 /* Prefix added to a variable name when its value is unknown but has to
66  * be used in a complexity formulae
67  */
68 #define UNKNOWN_VARIABLE_VALUE_PREFIX "U_"
69 
70 /* defined complexity data file names here. LZ 13/03/92 */
71 #define COST_DATA "operation index memory trigo transcend overhead"
72 
73 /* defines for "complexity_fprint" calls */
74 #define DO_PRINT_STATS true
75 #define DONT_PRINT_STATS false
76 #define PRINT_LOCAL_NAMES true
77 #define PRINT_GLOBAL_NAMES false
78 
79 #define HASH_LOOP_INDEX ((char *) 4) /* Used as `value' field in the hash-table */
80 #define HASH_USER_VARIABLE ((char *) 8) /* "hash_complexity_parameters"... useful? */
81 #define HASH_FORMAL_PARAM ((char *) 12)
82 #define HASH_COMMON_VARIABLE ((char *) 16) /* used for variable in common. LZ 04/12/91 */
83 
84 #define ZERO_BYTE 0
85 #define INT_NBYTES 4 /* number of bytes used by a standard int */
86 #define FLOAT_NBYTES 4 /* number of bytes used by a single-precision */
87 #define DOUBLE_NBYTES 8 /* number of bytes used by a double-precision */
88 #define COMPLEX_NBYTES 2*FLOAT_NBYTES /* complex, single-precision */
89 #define DCOMPLEX_NBYTES 2*DOUBLE_NBYTES /* complex, double-precision */
90 #define MAKE_INT_BASIC make_basic(is_basic_int, (void *) INT_NBYTES)
91 #define MAKE_ADDRESS_BASIC make_basic(is_basic_int, (void *) DEFAULT_POINTER_TYPE_SIZE)
92 #define MAKE_FLOAT_BASIC make_basic(is_basic_float, (void *) FLOAT_NBYTES)
93 #define MAKE_DOUBLE_BASIC make_basic(is_basic_float, (void *) DOUBLE_NBYTES)
94 #define MAKE_COMPLEX_BASIC make_basic(is_basic_complex, (void *) COMPLEX_NBYTES)
95 #define MAKE_DCOMPLEX_BASIC make_basic(is_basic_complex, (void *) DCOMPLEX_NBYTES)
96 #define MAKE_STRING_BASIC make_basic(is_basic_string, make_value(is_value_unknown, UU))
97 
98 #define hash_contains_p(htp, key) (hash_get(htp, key) != HASH_UNDEFINED_VALUE)
99 #define hash_contains_formal_param_p(htp, key) (hash_get(htp, key) == HASH_FORMAL_PARAM)
100 #define hash_contains_user_var_p(htp, key) (hash_get(htp, key) == HASH_USER_VARIABLE)
101 #define hash_contains_common_var_p(htp, key) (hash_get(htp, key) == HASH_COMMON_VARIABLE)
102 #define hash_contains_loop_index_p(htp, key) (hash_get(htp, key) == HASH_LOOP_INDEX)
103 
104 
105 /* defines for "expression_to_polynome" parameters */
106 #define KEEP_SYMBOLS true
107 #define DONT_KEEP_SYMBOLS false
108 #define MAXIMUM_VALUE 1
109 #define MINIMUM_VALUE -1
110 #define EXACT_VALUE 0
111 #define TAKE_MAX(m) ((m) == MAXIMUM_VALUE)
112 #define TAKE_MIN(m) ((m) == MINIMUM_VALUE)
113 #define KEEP_EXACT(m) ((m) == EXACT_VALUE)
114 
115 /* Intrinsics costs defines */
116 
117 typedef struct intrinsic_cost_rec {
118  char *name;
121  _int int_cost;
127 
128 #define LOOP_INIT_OVERHEAD "LOOP-INIT-OVERHEAD"
129 #define LOOP_BRANCH_OVERHEAD "LOOP-BRANCH-OVERHEAD"
130 #define CONDITION_OVERHEAD "CONDITION-OVERHEAD"
131 
132 #define CALL_ZERO_OVERHEAD "CALL-ZERO-OVERHEAD"
133 #define CALL_ONE_OVERHEAD "CALL-ONE-OVERHEAD"
134 #define CALL_TWO_OVERHEAD "CALL-TWO-OVERHEAD"
135 #define CALL_THREE_OVERHEAD "CALL-THREE-OVERHEAD"
136 #define CALL_FOUR_OVERHEAD "CALL-FOUR-OVERHEAD"
137 #define CALL_FIVE_OVERHEAD "CALL-FIVE-OVERHEAD"
138 #define CALL_SIX_OVERHEAD "CALL-SIX-OVERHEAD"
139 #define CALL_SEVEN_OVERHEAD "CALL-SEVEN-OVERHEAD"
140 
141 /* TYPE_CAST_COST added to handle cast case ; Molka Becher */
142 #define TYPE_CAST_COST "TypeCast"
143 
144 /* the above two lines are added for 6th cost file, overhead. LZ 280993 */
145 /* overhead is divided into two. init and branch 081093 */
146 
147 #define MEMORY_READ_NAME "MEMORY-READ"
148 #define ONE_INDEX_NAME "ONE-INDEX" /* to count indexation costs in multi-dim arrays */
149 #define TWO_INDEX_NAME "TWO-INDEX" /* to count indexation costs in multi-dim arrays */
150 #define THREE_INDEX_NAME "THREE-INDEX"
151 #define FOUR_INDEX_NAME "FOUR-INDEX"
152 #define FIVE_INDEX_NAME "FIVE-INDEX"
153 #define SIX_INDEX_NAME "SIX-INDEX"
154 #define SEVEN_INDEX_NAME "SEVEN-INDEX"
155 #define STRING_INTRINSICS_COST 1
156 #define LOGICAL_INTRINSICS_COST 1
157 
158 #define DONT_COUNT_THAT 0, 0, 0, 0, 0
159 #define EMPTY_COST 0,0,0,0,0
160 #define DISCRIMINE_TYPES 1, 10, 100,1000,10000
161 #define REAL_INTRINSIC 100, 100, 100, 100, 100
162 #define DOUBLE_INTRINSIC 200, 200, 200, 200, 200
163 #define COMPLEX_INTRINSIC 400, 400, 400, 400, 400
164 
165 #define MEMORY_READ_COST DONT_COUNT_THAT
166 #define MEMORY_WRITE_COST DONT_COUNT_THAT
167 #define PLUS_MINUS_COST 1, 10, 20, 20, 40
168 /*
169 #define MULTIPLY_COST 50, 50, 100, 100, 200
170 #define DIVIDE_COST 50, 50, 100, 100, 200
171 */
172 #define MULTIPLY_COST PLUS_MINUS_COST
173 #define DIVIDE_COST PLUS_MINUS_COST
174 #define POWER_COST 100, 100, 200, 200, 400
175 
176 #define TRANSC_COST REAL_INTRINSIC
177 #define DTRANSC_COST DOUBLE_INTRINSIC
178 #define CTRANSC_COST COMPLEX_INTRINSIC
179 #define TRIGO_COST REAL_INTRINSIC
180 #define DTRIGO_COST DOUBLE_INTRINSIC
181 #define CTRIGO_COST COMPLEX_INTRINSIC
182 #define TRIGOH_COST REAL_INTRINSIC
183 #define DTRIGOH_COST DOUBLE_INTRINSIC
184 #define CTRIGOH_COST COMPLEX_INTRINSIC
185 
186 #define TWO_INDEX_COST DONT_COUNT_THAT
187 #define THREE_INDEX_COST DONT_COUNT_THAT
188 #define FOUR_INDEX_COST DONT_COUNT_THAT
189 #define FIVE_INDEX_COST DONT_COUNT_THAT
190 #define SIX_INDEX_COST DONT_COUNT_THAT
191 #define SEVEN_INDEX_COST DONT_COUNT_THAT
192 
193 /* cproto-generated files */
194 /* comp_scan.c */
197 extern bool complexity_map_undefined_p(void);
200 extern void reset_complexity_map(void);
201 extern void free_complexity_map(void);
202 extern void make_complexity_map(void);
208 extern bool uniform_complexities(const string /*module_name*/);
209 extern bool fp_complexities(const string /*module_name*/);
210 extern bool any_complexities(const string /*module_name*/);
211 extern bool summary_complexity(const string /*module_name*/);
212 extern complexity statement_to_complexity(statement /*stat*/, transformer /*precon*/, list /*eff_list*/);
213 extern complexity instruction_to_complexity(instruction /*instr*/, transformer /*precond*/, list /*effects_list*/);
214 extern complexity block_to_complexity(list /*block*/, transformer /*precond*/, list /*effects_list*/);
215 extern complexity test_to_complexity(test /*test_instr*/, transformer /*precond*/, list /*effects_list*/);
216 extern complexity loop_to_complexity(loop /*loop_instr*/, transformer /*precond*/, list /*effects_list*/);
217 extern complexity goto_to_complexity(statement /*st*/, transformer /*precond*/, list /*effects_list*/);
218 extern complexity whileloop_to_complexity(whileloop /*while_instr*/, transformer /*precond*/, list /*effects_list*/);
219 extern complexity call_to_complexity(call /*call_instr*/, basic */*pbasic*/, transformer /*precond*/, list /*effects_list*/);
220 extern complexity arguments_to_complexity(list /*exprlist*/, basic */*pbasic*/, transformer /*precond*/, list /*effects_list*/);
221 extern complexity expression_to_complexity(expression /*expr*/, basic */*pbasic*/, transformer /*precond*/, list /*effects_list*/);
222 extern complexity subscript_to_complexity(subscript /*sub*/, basic */*pbasic*/, transformer /*precond*/, list /*effects_list*/);
223 extern complexity syntax_to_complexity(syntax /*s*/, basic */*pbasic*/, transformer /*precond*/, list /*effects_list*/);
224 extern complexity reference_to_complexity(reference /*ref*/, basic */*pbasic*/, transformer /*precond*/, list /*effects_list*/);
225 extern complexity indices_to_complexity(list /*exprlist*/, basic */*pbasic*/, transformer /*precond*/, list /*effects_list*/);
226 extern complexity range_to_complexity(range /*rng*/, transformer /*precond*/, list /*effects_list*/);
227 /* comp_expr_to_pnome.c */
228 extern char *noms_var(entity /*e*/);
229 extern complexity make_complexity_unknown(const char */*name*/);
230 extern complexity expression_to_complexity_polynome(expression /*expr*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
231 extern complexity syntax_to_polynome(syntax /*synt*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
232 extern complexity normalized_to_polynome(normalized /*no*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
233 extern complexity pvecteur_to_polynome(Pvecteur /*pvect*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
234 extern complexity reference_to_polynome(reference /*ref*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
235 extern complexity range_to_polynome(range /*rg*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
236 extern complexity call_to_polynome(call /*call_instr*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
237 extern complexity cast_to_polynome(cast /*cast_instr*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
238 extern complexity plus_op_handler(list /*args*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
239 extern complexity minus_op_handler(list /*args*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
240 extern complexity multiply_op_handler(list /*args*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
241 extern complexity field_op_handler(list /*args*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
242 extern complexity unary_minus_op_handler(list /*args*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
243 extern complexity unary_plus_op_handler(list /*args*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
244 extern complexity divide_op_handler(list /*args*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
245 extern complexity power_op_handler(list /*args*/, transformer /*precond*/, list /*effects_list*/, bool /*keep_symbols*/, int /*maximize*/);
246 extern complexity evaluate_var_to_complexity(entity /*var*/, transformer /*precond*/, list /*effects_list*/, int /*maximize*/);
247 extern complexity simplify_sc_to_complexity(Psysteme /*ps*/, Variable /*var*/);
248 /* comp_unstr.c */
249 extern complexity unstructured_to_complexity(unstructured /*unstr*/, transformer /*precond*/, list /*effects_list*/);
250 extern void controls_to_hash_table(control /*cont*/, int */*pn_controls*/, control /*control_array*/[], hash_table /*hash_control_to_complexity*/, transformer /*precond*/, list /*effects_list*/);
251 extern int control_element_position_in_control_array(control /*cont*/, control /*control_array*/[], int /*n_controls*/);
252 extern matrice average_probability_matrix(unstructured /*unstr*/, int /*n_controls*/, control /*control_array*/[]);
253 extern void node_successors_to_matrix(control /*cont*/, matrice /*P*/, int /*n_controls*/, control /*control_array*/[], bool /*already_examined*/[]);
254 /* comp_util.c */
255 extern bool complexity_check(complexity /*comp*/);
256 extern void complexity_check_and_warn(const char */*s*/, complexity /*comp*/);
257 extern void good_complexity_assert(string /*function*/, complexity /*comp*/);
258 extern complexity complexity_dup(complexity /*comp*/);
259 extern void complexity_rm(complexity */*pcomp*/);
260 extern char *complexity_sprint(complexity /*comp*/, bool /*print_stats_p*/, bool /*print_local_names_p*/);
261 extern void complexity_fprint(FILE */*fd*/, complexity /*comp*/, bool /*print_stats_p*/, bool /*print_local_names_p*/);
262 extern void complexity_dump(complexity /*comp*/);
263 extern void prc(complexity /*comp*/);
264 extern void prp(Ppolynome /*pp*/);
265 extern void prv(Pvecteur /*pv*/);
266 extern void fprint_statement_complexity(entity /*module*/, statement /*stat*/, hash_table /*hash_statement_to_complexity*/);
268 extern void fprint_cost_table(FILE */*fd*/);
269 extern void init_cost_table(void);
270 extern void load_cost_file(FILE */*fd*/, double /*file_factor*/);
271 extern int intrinsic_cost(const char */*s*/, basic */*pargsbasic*/);
272 extern float constant_entity_to_float(entity /*e*/);
273 extern void trace_on(char */*fmt*/, ...);
274 extern void trace_off(void);
275 extern bool is_linear_unstructured(unstructured /*unstr*/);
276 extern list entity_list_reverse(list /*l*/);
277 extern void add_formal_parameters_to_hash_table(entity /*mod*/, hash_table /*hash_complexity_params*/);
278 extern void remove_formal_parameters_from_hash_table(entity /*mod*/, hash_table /*hash_complexity_params*/);
280 extern hash_table fetch_callees_complexities(char */*module_name*/);
281 extern hash_table fetch_complexity_parameters(char */*module_name*/);
282 extern void add_common_variables_to_hash_table(entity /*module*/, hash_table /*hash_complexity_params*/);
283 extern void remove_common_variables_from_hash_table(entity /*module*/, hash_table /*hash_complexity_params*/);
284 extern bool is_must_be_written_var(list /*effects_list*/, char */*var_name*/);
285 extern complexity final_statement_to_complexity_evaluation(complexity /*comp*/, transformer /*precond*/, list /*effects_list*/);
286 extern complexity translate_complexity_from_local_to_current_name(complexity /*callee_comp*/, string /*oldname*/, string /*newname*/);
287 extern bool complexity_is_monomial_p(complexity /*c*/);
288 extern int complexity_degree(complexity /*c*/);
289 /* comp_math.c */
290 extern complexity complexity_sigma(complexity /*comp*/, Variable /*index*/, complexity /*clower*/, complexity /*cupper*/);
291 extern complexity complexity_var_subst(complexity /*comp*/, Variable /*var*/, complexity /*compsubst*/);
293 extern complexity make_single_var_complexity(double /*f*/, Variable /*var*/);
295 extern complexity make_zero_complexity(void);
296 extern bool complexity_zero_p(complexity /*comp*/);
297 extern bool complexity_constant_p(complexity /*comp*/);
298 extern bool complexity_unknown_p(complexity /*comp*/);
299 extern float complexity_TCST(complexity /*comp*/);
300 extern void complexity_scalar_mult(complexity */*pcomp*/, double /*f*/);
301 extern void complexity_stats_add(complexity */*pcomp1*/, complexity /*comp2*/);
302 extern void complexity_add(complexity */*pcomp1*/, complexity /*comp2*/);
303 extern void complexity_sub(complexity */*pcomp1*/, complexity /*comp2*/);
304 extern void complexity_mult(complexity */*pcomp1*/, complexity /*comp2*/);
305 extern void complexity_div(complexity */*pcomp1*/, complexity /*comp2*/);
306 extern void complexity_polynome_add(complexity */*pcomp*/, Ppolynome /*pp*/);
307 extern void complexity_float_add(complexity */*pcomp*/, double /*f*/);
308 extern Ppolynome complexity_polynome(complexity /*comp*/);
309 extern complexity replace_formal_parameters_by_real_ones(complexity /*comp*/, entity /*mod*/, list /*args*/, transformer /*precond*/, list /*effects_list*/);
310 extern list list_ith_element(list /*thelist*/, int /*ith*/);
311 /* comp_prettyprint.c */
312 extern bool print_code_complexities(const string /*module_name*/);
313 extern bool print_code_as_a_graph_complexities(const string /*mod_name*/);
314 extern bool print_source_complexities(const string /*module_name*/);
315 extern bool print_call_graph_with_complexities(const string /*module_name*/);
316 extern bool print_icfg_with_complexities(const string /*module_name*/);
317 extern bool print_icfg_with_loops_complexities(const string /*module_name*/);
318 extern bool print_icfg_with_control_complexities(const string /*module_name*/);
319 /* polynome_ri.c */
320 extern char *variable_name(Variable /*var*/);
321 extern char *variable_local_name(Variable /*var*/);
322 extern bool is_inferior_var(Variable /*var1*/, Variable /*var2*/);
323 extern int is_inferior_varval(Pvecteur /*varval1*/, Pvecteur /*varval2*/);
324 extern int is_inferior_pvarval(Pvecteur */*pvarval1*/, Pvecteur */*pvarval2*/);
325 extern Variable name_to_variable(char */*name*/);
326 extern Variable local_name_to_variable(char */*name*/);
327 /* comp_matrice.c */
328 extern void lu_decomposition(float */*a*/, int /*n*/, int */*indx*/, int */*pd*/);
329 extern void lu_back_substitution(float */*a*/, int /*n*/, int */*indx*/, float */*b*/);
330 extern void float_matrice_inversion(float */*a*/, int /*n*/, int */*indx*/, int */*pd*/);
331 #endif /* complexity_header_included */
complexity unstructured_to_complexity(unstructured, transformer, list)
comp_unstr.c
Definition: comp_unstr.c:75
char * complexity_sprint(complexity, bool, bool)
Definition: comp_util.c:175
hash_table fetch_complexity_parameters(char *)
Definition: comp_util.c:901
hash_table hash_complexity_parameters
Definition: comp_scan.c:58
void complexity_div(complexity *, complexity)
void complexity_div(complexity *pcomp1, comp2) performs *pcomp1 = *pcomp1 / comp2; !...
Definition: comp_math.c:445
complexity complexity_sigma(complexity, Variable, complexity, complexity)
comp_math.c
Definition: comp_math.c:84
complexity statement_to_complexity(statement, transformer, list)
void add_formal_parameters_to_hash_table(entity, hash_table)
Definition: comp_util.c:768
complexity reference_to_complexity(reference, basic *, transformer, list)
1st element of syntax
Definition: comp_scan.c:952
complexity indices_to_complexity(list, basic *, transformer, list)
2nd element of reference
Definition: comp_scan.c:1057
bool summary_complexity(const string)
Definition: comp_scan.c:179
complexity polynome_to_new_complexity(Ppolynome)
Create a complexity equal to Ppolynome pp with null statistics.
Definition: comp_math.c:200
void update_statement_complexity(statement, complexity)
void add_common_variables_to_hash_table(entity, hash_table)
Definition: comp_util.c:946
int control_element_position_in_control_array(control, control[], int)
bool print_icfg_with_loops_complexities(const string)
void complexity_scalar_mult(complexity *, double)
hash_table hash_callee_to_complexity
cproto-generated files
Definition: comp_scan.c:57
bool complexity_unknown_p(complexity)
true if comp is unknown.
Definition: comp_math.c:269
complexity syntax_to_complexity(syntax, basic *, transformer, list)
the only available element of expression
Definition: comp_scan.c:881
Variable local_name_to_variable(char *)
Definition: polynome_ri.c:194
complexity unary_plus_op_handler(list, transformer, list, bool, int)
void complexity_float_add(complexity *, double)
bool print_source_complexities(const string)
complexity loop_to_complexity(loop, transformer, list)
3rd element of instruction
Definition: comp_scan.c:460
complexity make_complexity_unknown(const char *)
builds a new unknown complexity attached to a virtual package
matrice average_probability_matrix(unstructured, int, control[])
void fprint_cost_table(FILE *)
Definition: comp_util.c:481
complexity goto_to_complexity(statement, transformer, list)
void complexity_add(complexity *, complexity)
void complexity_add(complexity *pcomp1, comp2) performs *pcomp1 = *pcomp1 + comp2; !...
Definition: comp_math.c:372
void node_successors_to_matrix(control, matrice, int, control[], bool[])
complexity cast_to_polynome(cast, transformer, list, bool, int)
4th element of syntax : Molka Becher
complexity call_to_polynome(call, transformer, list, bool, int)
3rd element of syntax
complexity make_zero_complexity(void)
make a zero complexity "0.0000 * TCST" with null statistics
Definition: comp_math.c:238
void complexity_sub(complexity *, complexity)
void complexity_sub(complexity *pcomp1, comp2) performs *pcomp1 = *pcomp1 - comp2; !...
Definition: comp_math.c:394
statement_mapping get_complexity_map(void)
int is_inferior_varval(Pvecteur, Pvecteur)
Definition: polynome_ri.c:134
bool fp_complexities(const string)
Definition: comp_scan.c:89
char * variable_name(Variable)
polynome_ri.c
Definition: polynome_ri.c:73
complexity multiply_op_handler(list, transformer, list, bool, int)
void prv(Pvecteur)
Definition: comp_util.c:246
complexity test_to_complexity(test, transformer, list)
2nd element of instruction
Definition: comp_scan.c:414
complexity normalized_to_polynome(normalized, transformer, list, bool, int)
2nd element of expression
bool print_code_as_a_graph_complexities(const string)
complexity complexity_var_subst(complexity, Variable, complexity)
complexity complexity_var_subst(comp, var, compsubst) replaces every occurrence of variable var in co...
Definition: comp_math.c:155
char * variable_local_name(Variable)
Definition: polynome_ri.c:95
void make_complexity_map(void)
hash_table free_callees_complexities(hash_table)
Definition: comp_util.c:812
void store_statement_complexity(statement, complexity)
bool uniform_complexities(const string)
declares the static variable complexity_map and defines its access functions
Definition: comp_scan.c:79
Ppolynome complexity_polynome(complexity)
Because complexity is composed of two elements, we use this function to get the first element : polyn...
Definition: comp_math.c:506
void complexity_polynome_add(complexity *, Ppolynome)
Definition: comp_math.c:463
bool complexity_check(complexity)
comp_util.c
Definition: comp_util.c:96
complexity whileloop_to_complexity(whileloop, transformer, list)
5th element of instruction
Definition: comp_scan.c:692
Variable name_to_variable(char *)
Definition: polynome_ri.c:172
complexity unary_minus_op_handler(list, transformer, list, bool, int)
complexity syntax_to_polynome(syntax, transformer, list, bool, int)
1st element of expression
complexity block_to_complexity(list, transformer, list)
1st element of instruction
Definition: comp_scan.c:344
complexity power_op_handler(list, transformer, list, bool, int)
bool is_must_be_written_var(list, char *)
Definition: comp_util.c:1014
complexity field_op_handler(list, transformer, list, bool, int)
complexity divide_op_handler(list, transformer, list, bool, int)
bool any_complexities(const string)
Definition: comp_scan.c:99
bool print_call_graph_with_complexities(const string)
complexity plus_op_handler(list, transformer, list, bool, int)
void complexity_dump(complexity)
Definition: comp_util.c:228
complexity final_statement_to_complexity_evaluation(complexity, transformer, list)
Definition: comp_util.c:1052
complexity simplify_sc_to_complexity(Psysteme, Variable)
This function is recently added by L.Zhou June 5, 91 simplify_sc_to_complexity(Psysteme ps,...
void complexity_mult(complexity *, complexity)
void complexity_mult(complexity *pcomp1, comp2) performs *pcomp1 = *pcomp1 * comp2; !...
Definition: comp_math.c:418
complexity complexity_dup(complexity)
duplicates complexity comp
Definition: comp_util.c:131
void prp(Ppolynome)
Definition: comp_util.c:239
complexity minus_op_handler(list, transformer, list, bool, int)
void init_cost_table(void)
Completes the intrinsic cost table with the costs read from the files specified in the "COMPLEXITY_CO...
Definition: comp_util.c:519
void complexity_check_and_warn(const char *, complexity)
complexity make_single_var_complexity(double, Variable)
bool is_linear_unstructured(unstructured)
return true if unstr is simply a linear string of controls
Definition: comp_util.c:738
void good_complexity_assert(string, complexity)
bool print_icfg_with_complexities(const string)
void load_cost_file(FILE *, double)
bool complexity_constant_p(complexity)
true if comp is constant.
Definition: comp_math.c:256
void controls_to_hash_table(control, int *, control[], hash_table, transformer, list)
void remove_common_variables_from_hash_table(entity, hash_table)
Definition: comp_util.c:985
complexity range_to_complexity(range, transformer, list)
2nd element of syntax
Definition: comp_scan.c:1089
complexity range_to_polynome(range, transformer, list, bool, int)
void trace_on(char *,...)
Definition: comp_util.c:684
complexity call_to_complexity(call, basic *, transformer, list)
3rd element of syntax
Definition: comp_scan.c:736
int intrinsic_cost(const char *, basic *)
int is_inferior_pvarval(Pvecteur *, Pvecteur *)
Definition: polynome_ri.c:149
complexity load_statement_complexity(statement)
intrinsic_cost_record intrinsic_cost_table[]
The table intrinsic_cost_table[] gathers cost information of each intrinsic's cost; those costs are d...
Definition: comp_util.c:286
void reset_complexity_map(void)
complexity expression_to_complexity(expression, basic *, transformer, list)
2nd element of call –arguments
Definition: comp_scan.c:838
float complexity_TCST(complexity)
return the constant term of comp.
Definition: comp_math.c:288
list entity_list_reverse(list)
Definition: comp_util.c:757
void lu_decomposition(float *, int, int *, int *)
comp_matrice.c
Definition: comp_matrice.c:65
bool is_inferior_var(Variable, Variable)
Definition: polynome_ri.c:118
complexity make_constant_complexity(double)
void lu_back_substitution(float *, int, int *, float *)
Definition: comp_matrice.c:155
void complexity_stats_add(complexity *, complexity)
Add comp2's statistics to *pcomp1's comp2 keeps unchanged.
Definition: comp_math.c:323
complexity pvecteur_to_polynome(Pvecteur, transformer, list, bool, int)
The only element available of normalized.
void trace_off(void)
"trace off"
Definition: comp_util.c:714
void float_matrice_inversion(float *, int, int *, int *)
Definition: comp_matrice.c:198
complexity arguments_to_complexity(list, basic *, transformer, list)
2nd element of call
Definition: comp_scan.c:804
list list_ith_element(list, int)
return a pointer to the (i)th element of the list if i = 1, the pointer doesn't change at all.
Definition: comp_math.c:579
bool print_code_complexities(const string)
comp_prettyprint.c
hash_table fetch_callees_complexities(char *)
Definition: comp_util.c:821
complexity expression_to_complexity_polynome(expression, transformer, list, bool, int)
Entry point routine of this file:
bool complexity_is_monomial_p(complexity)
Definition: comp_util.c:1159
complexity instruction_to_complexity(instruction, transformer, list)
The only element available of the statement.
Definition: comp_scan.c:275
bool print_icfg_with_control_complexities(const string)
complexity translate_complexity_from_local_to_current_name(complexity, string, string)
translate_complexity_from_local_to_current_name(callee_comp,oldname,newname) B:M -> A:M if A calls B ...
Definition: comp_util.c:1100
float constant_entity_to_float(entity)
Return if possible the value of e in a float.
Definition: comp_util.c:664
complexity subscript_to_complexity(subscript, basic *, transformer, list)
Definition: comp_scan.c:860
void complexity_rm(complexity *)
remove complexity comp
Definition: comp_util.c:164
void fprint_statement_complexity(entity, statement, hash_table)
Definition: comp_util.c:253
int complexity_degree(complexity)
Definition: comp_util.c:1167
void free_complexity_map(void)
bool statement_complexity_undefined_p(statement)
void complexity_fprint(FILE *, complexity, bool, bool)
Definition: comp_util.c:217
complexity evaluate_var_to_complexity(entity, transformer, list, int)
void set_complexity_map(statement_mapping)
bool complexity_map_undefined_p(void)
bool complexity_zero_p(complexity)
zero complexity check.
Definition: comp_math.c:244
complexity reference_to_polynome(reference, transformer, list, bool, int)
First element of the "syntax" domain.
complexity replace_formal_parameters_by_real_ones(complexity, entity, list, transformer, list)
transform formal params into real ones (args) in complexity comp
Definition: comp_math.c:519
void delete_statement_complexity(statement)
void prc(complexity)
Definition: comp_util.c:233
struct intrinsic_cost_rec intrinsic_cost_record
Intrinsics costs defines.
char * noms_var(entity)
comp_expr_to_pnome.c
void remove_formal_parameters_from_hash_table(entity, hash_table)
Definition: comp_util.c:791
Value * matrice
package matrice
Definition: matrice-local.h:71
intptr_t _int
_INT
Definition: newgen_types.h:53
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
Intrinsics costs defines.
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Definition: vecteur-local.h:60