PIPS
ricedg.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/ricedg/ricedg-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef ricedg_header_included
7 #define ricedg_header_included
8 /* ricedg-local.h */
9 /*
10 
11  $Id: ricedg-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 #define INFAISABLE 0
33 #define FAISABLE 1
34 
35 /* maximun number of nested loops */
36 #define MAXDEPTH 9
37 /* maximum number of scalar variables */
38 #define MAXSV 1024
39 
40 
41 /*the variables for the statistics of test of dependence and parallelization */
42 extern int NbrArrayDepInit;
43 extern int NbrIndepFind;
44 extern int NbrAllEquals;
45 extern int NbrDepCnst;
46 extern int NbrDepExact;
47 extern int NbrDepInexactEq;
48 extern int NbrDepInexactFM;
49 extern int NbrDepInexactEFM;
50 extern int NbrScalDep;
51 extern int NbrIndexDep;
52 extern int deptype[5][3], constdep[5][3];
53 extern int NbrTestCnst;
54 extern int NbrTestGcd;
55 extern int NbrTestSimple; /* by sc_normalize() */
56 extern int NbrTestDiCnst;
57 extern int NbrTestProjEqDi;
58 extern int NbrTestProjFMDi;
59 extern int NbrTestProjEq;
60 extern int NbrTestProjFM;
61 extern int NbrTestDiVar;
62 extern int NbrProjFMTotal;
63 extern int NbrFMSystNonAug;
64 extern int FMComp[18];
65 extern bool is_test_exact;
66 extern bool is_test_inexact_eq;
67 extern bool is_test_inexact_fm;
68 extern bool is_dep_cnst;
69 extern bool is_test_Di;
70 extern bool Finds2s1;
71 
72 // counter used by one debug message, defined in ri-util.
73 extern int Nbrdo;
74 
75 /* Definition for the dependance_verticies_p function
76  */
77 
78 #define FLOW_DEPENDANCE 1
79 #define ANTI_DEPENDANCE 2
80 #define OUTPUT_DEPENDANCE 4
81 #define INPUT_DEPENDANCE 8
82 
83 
84 
85 
86 
87 
88 /* cproto-generated files */
89 /* util.c */
91 extern int vertex_ordering(vertex /*v*/);
92 extern int compare_vertex(const void */*v0*/, const void */*v1*/);
93 extern hash_table compute_ordering_to_dg_mapping(graph /*dependance_graph*/);
94 extern int vertex_sort_callback(const vertex */*v1*/, const vertex */*v2*/);
95 extern int successor_sort_callback(const successor */*succ1*/, const successor */*succ2*/);
96 extern int conflicts_sort_callback(conflict */*c1*/, conflict */*c2*/);
97 extern void prettyprint_dependence_graph(FILE */*fd*/, statement /*mod_stat*/, graph /*mod_graph*/);
98 extern void prettyprint_dot_dependence_graph(FILE */*fd*/, statement /*mod_stat*/, graph /*mod_graph*/);
99 extern void prettyprint_dependence_graph_view(FILE */*fd*/, statement /*mod_stat*/, graph /*mod_graph*/);
100 extern void print_vect_in_vertice_val(FILE */*fd*/, Pvecteur /*v*/, Pbase /*b*/);
101 extern void print_dependence_cone(FILE */*fd*/, Ptsg /*dc*/, Pbase /*basis*/);
102 extern hash_table statements_to_successors(list /*statements*/, graph /*dg*/);
103 /* contexts.c */
105 /* testdep_util.c */
106 extern entity DiVars[9];
107 extern entity LiVars[9];
108 extern entity DsiVars[1024];
109 extern entity MakeDiVar(int /*l*/);
110 extern entity GetDiVar(int /*l*/);
111 extern entity MakeLiVar(int /*l*/);
112 extern entity GetLiVar(int /*l*/);
113 extern entity MakeDsiVar(int /*l*/);
114 extern entity GetDsiVar(int /*l*/);
115 extern int DiVarLevel(entity /*e*/);
116 extern void sc_add_di(int /*l*/, entity /*e*/, Psysteme /*s*/, int /*li*/);
117 extern void sc_add_dsi(int /*l*/, entity /*e*/, Psysteme /*s*/);
118 extern int sc_proj_on_di(int /*cl*/, Psysteme /*s*/);
119 extern Pbase MakeDibaseinorder(int /*n*/);
120 extern int FindMaximumCommonLevel(cons */*n1*/, cons */*n2*/);
121 extern void ResetLoopCounter(void);
122 extern entity MakeLoopCounter(void);
123 extern int dep_type(action /*ac1*/, action /*ac2*/);
124 extern int sc_proj_optim_on_di_ofl(int /*cl*/, Psysteme */*psc*/);
125 extern bool sc_faisabilite_optim(Psysteme /*sc*/);
127 extern bool sc_minmax_of_variable_optim(Psysteme volatile /*ps*/, Variable /*var*/, Value */*pmin*/, Value */*pmax*/);
128 extern Psysteme sc_invers(Psysteme /*ps*/);
129 extern void vect_chg_var_sign(Pvecteur */*ppv*/, Variable /*var*/);
130 /* ricedg.c */
131 extern int NbrArrayDepInit;
132 extern int NbrIndepFind;
133 extern int NbrAllEquals;
134 extern int NbrDepCnst;
135 extern int NbrTestExact;
136 extern int NbrDepInexactEq;
137 extern int NbrDepInexactFM;
138 extern int NbrDepInexactEFM;
139 extern int NbrScalDep;
140 extern int NbrIndexDep;
141 extern int deptype[5][3];
142 extern int constdep[5][3];
143 extern int NbrTestCnst;
144 extern int NbrTestGcd;
145 extern int NbrTestSimple;
146 extern int NbrTestDiCnst;
147 extern int NbrTestProjEqDi;
148 extern int NbrTestProjFMDi;
149 extern int NbrTestProjEq;
150 extern int NbrTestProjFM;
151 extern int NbrTestDiVar;
152 extern int NbrProjFMTotal;
153 extern int NbrFMSystNonAug;
154 extern int FMComp[18];
155 extern bool is_test_exact;
156 extern bool is_test_inexact_eq;
157 extern bool is_test_inexact_fm;
158 extern bool is_dep_cnst;
159 extern bool is_test_Di;
160 extern bool Finds2s1;
161 extern bool context_map_undefined_p(void);
164 extern void reset_context_map(void);
165 extern void free_context_map(void);
166 extern void make_context_map(void);
170 extern void store_statement_context(statement /*s*/, Psysteme /*t*/);
171 extern void update_statement_context(statement /*s*/, Psysteme /*t*/);
172 extern bool rice_fast_dependence_graph(char */*mod_name*/);
173 extern bool rice_full_dependence_graph(char */*mod_name*/);
174 extern bool rice_semantics_dependence_graph(char */*mod_name*/);
175 extern bool rice_regions_dependence_graph(char */*mod_name*/);
176 extern list TestCoupleOfReferences(list /*n1*/, Psysteme /*sc1*/, statement /*s1*/, effect /*ef1*/, reference /*r1*/, list /*n2*/, Psysteme /*sc2*/, statement /*s2*/, effect /*ef2*/, reference /*r2*/, list /*llv*/, Ptsg */*gs*/, list */*levelsop*/, Ptsg */*gsop*/);
177 extern void writeresult(char */*mod_name*/);
179 extern graph compute_dg_on_statement_from_chains(statement /*s*/, graph /*chains*/);
180 /* prettyprint.c */
181 extern bool print_whole_dependence_graph(const string /*mod_name*/);
182 extern bool print_filtered_dependence_graph(const string /*mod_name*/);
183 extern bool print_filtered_dependence_daVinci_graph(const string /*mod_name*/);
184 extern bool print_effective_dependence_graph(const string /*mod_name*/);
185 extern bool print_loop_carried_dependence_graph(const string /*mod_name*/);
186 extern bool print_dependence_graph(string /*name*/);
187 extern bool print_chains_graph(string /*name*/);
188 extern bool print_dot_chains_graph(string /*name*/);
189 extern bool print_dot_dependence_graph(string /*name*/);
190 /* quick_privatize.c */
191 extern void quick_privatize_graph(graph /*dep_graph*/);
192 /* trace.c */
193 extern vertex get_vertex_in_list(list /*in_l*/, string /*in_s*/);
194 extern void prettyprint_graph_text(FILE */*out_f*/, list /*l_of_vers*/);
195 extern void prettyprint_graph_daVinci(FILE */*out_f*/, list /*l_of_vers*/);
196 extern list make_filtered_dg_or_dvdg(statement /*mod_stat*/, graph /*mod_graph*/);
197 extern bool print_filtered_dg_or_dvdg(string /*mod_name*/, bool /*is_dv*/);
198 extern bool print_loopnest_dependence_cone(const char */*module_name*/);
199 /* impact_check.c */
200 extern bool find_covering_reference_path(set /*arcs_processed_set*/, statement /*s_src*/, action /*act_src*/, entity /*ent_src*/, statement /*s_dest*/, action /*act_dest*/, entity /*ent_dest*/);
201 extern bool check_way_between_two_statements(statement /*s1*/, statement /*s2*/, graph /*g*/);
202 extern list union_list(list /*l1*/, list /*l2*/);
203 extern bool impact_check(char */*module_name*/);
204 #endif /* ricedg_header_included */
int Value
int Nbrdo
loop.c
Definition: loop.c:54
bool print_loopnest_dependence_cone(const char *)
Definition: trace.c:274
int NbrAllEquals
Definition: ricedg.h:133
entity LiVars[9]
Definition: testdep_util.c:54
bool print_loop_carried_dependence_graph(const string)
Definition: prettyprint.c:70
entity MakeDsiVar(int)
This function creates dsi variables.
Definition: testdep_util.c:146
int FMComp[18]
Definition: ricedg.h:154
graph compute_dg_on_statement_from_chains(statement, graph)
Definition: ricedg.c:2363
void print_dependence_cone(FILE *, Ptsg, Pbase)
Definition: util.c:974
int NbrTestProjFMDi
Definition: ricedg.h:148
vertex get_vertex_in_list(list, string)
trace.c
Definition: trace.c:35
int vertex_ordering(vertex)
Definition: util.c:51
bool print_dot_dependence_graph(string)
This pipmake pass output the DG in a file usable by graphviz tool dot.
Definition: prettyprint.c:210
Psysteme sc_invers(Psysteme)
Psysteme sc_invers(Psysteme ps): calcul un systeme des contraintes qui est l'invers du systeme initia...
Pbase MakeDibaseinorder(int)
Pbase MakeDibaseinorder(int n) make a base of D#1 ...
Definition: testdep_util.c:296
int vertex_sort_callback(const vertex *, const vertex *)
This is a callback for qsort function, it compares two vertex.
Definition: util.c:105
list TestCoupleOfReferences(list, Psysteme, statement, effect, reference, list, Psysteme, statement, effect, reference, list, Ptsg *, list *, Ptsg *)
int NbrArrayDepInit
he variables for the statistics of test of dependence and parallelization
Definition: ricedg.h:131
int sc_proj_optim_on_di_ofl(int, Psysteme *)
int sc_proj_optim_on_di_ofl(cl, sc)
Definition: testdep_util.c:415
Psysteme sc_projection_optim_along_vecteur_ofl(Psysteme, Pvecteur)
Psysteme sc_projection_optim_along_vecteur_ofl(Psysteme sc, Pvecteur pv)
Definition: testdep_util.c:648
bool statement_context_undefined_p(statement)
hash_table compute_ordering_to_dg_mapping(graph)
Define a mapping from the statement ordering to the dependence graph vertices:
Definition: util.c:70
int NbrTestExact
Definition: ricedg.c:68
bool rice_full_dependence_graph(char *)
Definition: ricedg.c:144
void set_context_map(statement_mapping)
int NbrFMSystNonAug
Definition: ricedg.h:153
entity DiVars[9]
testdep_util.c
Definition: testdep_util.c:53
graph compute_dg_on_statement_from_chains_in_place(statement, graph)
Definition: ricedg.c:2342
int NbrScalDep
Definition: ricedg.h:139
int NbrIndepFind
Definition: ricedg.h:132
int compare_vertex(const void *, const void *)
compare two vertices based on their ordering
Definition: util.c:58
int constdep[5][3]
Definition: ricedg.h:52
bool check_way_between_two_statements(statement, statement, graph)
Check to see if there is a directed way between 2 statements in the graph specified.
Definition: impact_check.c:290
int NbrTestDiCnst
by sc_normalize()
Definition: ricedg.h:146
int NbrProjFMTotal
Definition: ricedg.h:152
bool Finds2s1
Definition: ricedg.h:160
int NbrTestGcd
Definition: ricedg.h:144
bool is_dep_cnst
Definition: ricedg.h:158
bool is_test_inexact_eq
Definition: ricedg.h:156
hash_table statements_to_successors(list, graph)
creates a hash_table containing statements from statements as keys and their respective succesors acc...
Definition: util.c:1018
void delete_statement_context(statement)
bool print_whole_dependence_graph(const string)
prettyprint.c
Definition: prettyprint.c:34
bool is_test_inexact_fm
Definition: ricedg.h:157
bool sc_faisabilite_optim(Psysteme)
bool sc_faisabilite_optim (Psysteme sc) :
Definition: testdep_util.c:484
bool print_dependence_graph(string)
Definition: prettyprint.c:126
void sc_add_di(int, entity, Psysteme, int)
Definition: testdep_util.c:209
void prettyprint_dependence_graph(FILE *, statement, graph)
Print all edges and arcs.
Definition: util.c:177
bool print_filtered_dg_or_dvdg(string, bool)
Definition: trace.c:202
void ResetLoopCounter(void)
Definition: testdep_util.c:329
int NbrTestProjEq
Definition: ricedg.h:149
bool rice_fast_dependence_graph(char *)
Definition: ricedg.c:139
bool print_dot_chains_graph(string)
This pipmake pass output the chains in a file usable by the graphviz tool dot.
Definition: prettyprint.c:200
bool print_filtered_dependence_graph(const string)
Definition: prettyprint.c:45
int NbrDepInexactEFM
Definition: ricedg.h:138
entity GetDiVar(int)
This functions looks up a di variable of nesting level l in table DiVars.
Definition: testdep_util.c:79
int sc_proj_on_di(int, Psysteme)
Definition: testdep_util.c:267
void prettyprint_graph_text(FILE *, list)
print a graph to text format
Definition: trace.c:46
int NbrTestCnst
Definition: ricedg.h:143
statement_mapping contexts_mapping_of_nest(statement)
contexts.c
Definition: contexts.c:162
int NbrTestSimple
Definition: ricedg.h:145
int dep_type(action, action)
int dep_type(action ac1,action ac2) This function test the type of the dependence.
Definition: testdep_util.c:378
void prettyprint_dependence_graph_view(FILE *, statement, graph)
Do not print vertices and arcs ignored by the parallelization algorithms.
Definition: util.c:833
int DiVarLevel(entity)
this function returns the nesting level of a given di variable e.
Definition: testdep_util.c:185
bool sc_minmax_of_variable_optim(Psysteme volatile, Variable, Value *, Value *)
void sc_minmax_of_variable_optim(Psysteme ps, Variable var, Value *pmin, *pmax): examine un systeme p...
Definition: testdep_util.c:975
bool impact_check(char *)
int NbrIndexDep
Definition: ricedg.h:140
void prettyprint_dot_dependence_graph(FILE *, statement, graph)
Output dependence graph in a file in graphviz dot format.
Definition: util.c:583
void sc_add_dsi(int, entity, Psysteme)
Definition: testdep_util.c:238
void writeresult(char *)
Definition: ricedg.c:2268
entity DsiVars[1024]
Definition: testdep_util.c:55
int successor_sort_callback(const successor *, const successor *)
This is a callback for qsort function, it compares two successor.
Definition: util.c:116
entity GetDsiVar(int)
Definition: testdep_util.c:164
list make_filtered_dg_or_dvdg(statement, graph)
Definition: trace.c:101
void update_statement_context(statement, Psysteme)
entity MakeLiVar(int)
This function creates li variables(thee ith loop index variable).
Definition: testdep_util.c:103
void store_statement_context(statement, Psysteme)
bool is_test_exact
or counting the number of F-M complexity less than 16.
Definition: ricedg.h:155
void prettyprint_graph_daVinci(FILE *, list)
print a graph to daVinci format, each label of successor is represented by a circular node,...
Definition: trace.c:63
int NbrDepExact
void print_vect_in_vertice_val(FILE *, Pvecteur, Pbase)
Definition: util.c:959
Psysteme load_statement_context(statement)
bool context_map_undefined_p(void)
void vect_chg_var_sign(Pvecteur *, Variable)
void vect_chg_var_sign(Pvecteur *ppv, Variable var) changement de signe de la coordonnee var du vecte...
int conflicts_sort_callback(conflict *, conflict *)
This is a callback for qsort function, it compares two conflicts.
Definition: util.c:126
void reset_context_map(void)
void free_context_map(void)
int deptype[5][3]
Definition: ricedg.h:141
int FindMaximumCommonLevel(cons *, cons *)
Definition: testdep_util.c:307
int NbrDepCnst
Definition: ricedg.h:134
list union_list(list, list)
Union is not typed...
Definition: impact_check.c:376
statement_mapping get_context_map(void)
int NbrTestDiVar
Definition: ricedg.h:151
entity GetLiVar(int)
Definition: testdep_util.c:121
int NbrDepInexactEq
Definition: ricedg.h:136
int NbrTestProjEqDi
Definition: ricedg.h:147
entity MakeLoopCounter(void)
Create a new loop counter variable.
Definition: testdep_util.c:334
bool print_effective_dependence_graph(const string)
Definition: prettyprint.c:59
bool print_chains_graph(string)
Definition: prettyprint.c:131
int NbrDepInexactFM
Definition: ricedg.h:137
statement vertex_to_statement(vertex)
cproto-generated files
Definition: util.c:45
bool find_covering_reference_path(set, statement, action, entity, statement, action, entity)
impact_check.c
Definition: impact_check.c:238
entity MakeDiVar(int)
This function creates di variables.
Definition: testdep_util.c:63
bool rice_semantics_dependence_graph(char *)
Definition: ricedg.c:149
bool rice_regions_dependence_graph(char *)
Definition: ricedg.c:154
int NbrTestProjFM
Definition: ricedg.h:150
void make_context_map(void)
bool print_filtered_dependence_daVinci_graph(const string)
Definition: prettyprint.c:52
void quick_privatize_graph(graph)
quick_privatize.c
bool is_test_Di
Definition: ricedg.h:159
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
FI: I do not understand why the type is duplicated at the set level.
Definition: set.c:59
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
Representation d'un systeme generateur par trois ensembles de sommets de rayons et de droites.
Definition: sg-local.h:66
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