PIPS
movements.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/movements/movements-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef movements_header_included
7 #define movements_header_included
8 /* movements-local.h */
9 /*
10 
11  $Id: movements-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 /* Package movements */
33 
34 #include "matrice.h"
35 
36 #define COLUMN_MAJOR true
37 
38 #define SUFFIX_FOR_TEMP_VAR1_IN_INNER_LOOP "_1"
39 #define SUFFIX_FOR_TEMP_VAR2_IN_INNER_LOOP "_2"
40 
41 
42 /* cproto-generated files */
43 /* movement_computation.c */
44 extern Pbase build_image_base(bool /*bank_code*/, Pbase /*proc_id*/, Pbase /*bank_indices*/, Pbase /*tile_indices*/);
45 extern void print_fullname_base(Pbase /*sb*/);
46 extern void update_basis(Pbase /*scbase*/, Pbase */*index_base*/, Pbase */*const_base*/, Pbase */*image_base*/, Pbase /*bank_indices*/, Pbase /*tile_indices*/, Pbase */*lindex*/, Pbase */*lvar_coeff_nunit*/, Pbase */*lvar_coeff_unit*/, Pbase */*loop_body_offsets*/, Pbase */*loop_body_indices*/, bool /*bank_code*/, Pbase /*ppid*/);
47 extern void sort_tile_indices(Pbase /*tile_indices*/, Pbase */*new_tile_indices*/, matrice /*Q*/, int /*m*/);
48 extern Psysteme elim_redund_sc_with_sc(Psysteme /*sc1*/, Psysteme /*sc2*/, Pbase /*index_base*/, int /*dim*/);
49 extern Pbase variables_in_declaration_list(entity /*module*/, code /*ce*/);
50 extern statement movement_computation(entity /*module*/, bool /*used_def*/, bool /*bank_code*/, bool /*receive_code*/, entity /*private_entity*/, Psysteme /*sc_image*/, Pbase /*const_base*/, Pbase /*bank_indices*/, Pbase /*tile_indices*/, Pbase /*ppid*/, Pbase /*loop_body_indices*/, int /*n*/, int /*dim_h*/);
51 extern Psysteme sc_image_computation(entity /*module*/, entity /*entity_var*/, Psysteme /*sc_domain*/, Psysteme /*sc_array_function*/, Pbase /*index_base*/, Pbase */*const_base*/, entity /*proc_id*/, Pbase /*bank_indices*/, Pbase /*tile_indices*/, Pbase */*new_tile_indices*/, int /*pn*/, int /*bn*/, int /*ls*/, int */*n*/, int */*dim_h*/);
52 /* bound_generation.c */
53 extern expression lower_bound_generation(Psysteme /*sc_neg*/, Pbase /*index_base*/, int /*number_of_lower_bounds*/, int /*loop_rank*/);
54 extern expression upper_bound_generation(Psysteme /*sc_pos*/, Pbase /*index_base*/, int /*number_of_upper_bounds*/, int /*loop_rank*/);
55 extern expression test_bound_generation(Psysteme /*sc_test*/, Pbase /*index_base*/);
56 extern statement bound_generation(entity /*module*/, bool /*bank_code*/, bool /*receive_code*/, entity /*ent*/, Pbase /*loop_body_indices*/, Pbase /*var_id*/, Psysteme */*lsystem*/, Pbase /*index_base*/, int /*n*/, int /*sc_info*/[][4]);
57 /* operation.c */
58 extern expression make_div_expression(expression /*ex1*/, cons */*ex2*/);
59 extern expression make_op_expression(entity /*op*/, cons */*ex2*/);
60 /* complex_bound_generation.c */
61 extern expression complex_bound_generation(Value /*coeff1*/, Value /*coeff2*/, Value /*coeff3*/, Pvecteur /*exp1*/, Variable /*var1*/, Pvecteur /*exp2*/, Variable /*var2*/);
62 extern expression complex_bound_computation(Psysteme /*sc*/, Pbase /*index_base*/, Pcontrainte /*ineq1*/, Pcontrainte /*ineq2*/, int /*rank*/);
63 /* constraint_distribution.c */
64 extern void bound_distribution(Psysteme */*pps*/, Pbase /*index_base*/, int /*sc_info*/[][4], int /*nb_loop*/, Psysteme */*sc_neg*/, Psysteme */*sc_pos*/, Psysteme /*sc_test*/);
65 extern void constraint_distribution(Psysteme /*sc*/, Psysteme */*bound_systems*/, Pbase /*index_base*/, int /*sc_info*/[][4]);
66 extern void egalite_distribution(Psysteme /*sc*/, Psysteme */*bound_systems*/, Pbase /*index_base*/);
67 /* make_loop_body.c */
68 extern void wp65_debug_print_text(entity /*m*/, statement /*s*/);
69 extern void wp65_debug_print_module(entity /*m*/, statement /*s*/);
70 extern bool variable_in_declaration_module_p(entity /*m*/, entity /*v*/);
71 extern entity find_operator(entity /*module*/, string /*oper*/, string /*str*/);
72 extern statement make_statement_operator(entity /*oper*/, cons */*args*/);
73 extern statement make_movements_loop_body_wp65(entity /*module*/, bool /*receive_code*/, entity /*ent*/, Pbase /*local_indices*/, Pbase /*var_id*/, Psysteme /*sc_neg*/, Psysteme /*sc_pos*/, Pbase /*index_base*/, int /*rank*/, int /*number_of_lower_bounds*/, int /*number_of_upper_bounds*/);
74 extern statement make_datum_movement(entity /*module*/, bool /*receive_code*/, entity /*ent*/, Pbase /*local_indices*/, Pbase /*var_id*/);
75 extern statement make_movement_scalar_wp65(entity /*module*/, bool /*receive_code*/, reference /*r*/, entity /*var_id*/);
76 /* build_sc_machine.c */
77 extern Psysteme build_sc_machine(int /*pn*/, int /*bn*/, int /*ls*/, Psysteme /*sc_array_function*/, entity /*proc_id*/, Pbase /*bank_indices*/, entity /*entity_var*/);
78 /* build_sc_tile.c */
79 extern Pvecteur make_loop_indice_equation(Pbase /*loop_indices*/, tiling /*tile*/, Pvecteur /*tile_delay*/, Pvecteur /*tile_indices*/, Pvecteur /*tile_local_indices*/, int /*rank*/);
80 extern Psysteme loop_bounds_to_tile_bounds(Psysteme /*loop_bounds*/, Pbase /*loop_indices*/, tiling /*t*/, Pvecteur /*tile_delay*/, Pvecteur /*tile_indices*/, Pvecteur /*tile_local_indices*/);
81 /* sc_add_variable.c */
82 extern Variable sc_add_new_variable_name(entity /*module*/, Psysteme /*ps*/);
83 #endif /* movements_header_included */
int Value
Value * matrice
package matrice
Definition: matrice-local.h:71
void update_basis(Pbase, Pbase *, Pbase *, Pbase *, Pbase, Pbase, Pbase *, Pbase *, Pbase *, Pbase *, Pbase *, bool, Pbase)
Update all the basis needed for data movement generation.
bool variable_in_declaration_module_p(entity, entity)
expression complex_bound_generation(Value, Value, Value, Pvecteur, Variable, Pvecteur, Variable)
complex_bound_generation.c
statement make_statement_operator(entity, cons *)
expression make_div_expression(expression, cons *)
operation.c
Definition: operation.c:42
expression complex_bound_computation(Psysteme, Pbase, Pcontrainte, Pcontrainte, int)
Psysteme loop_bounds_to_tile_bounds(Psysteme, Pbase, tiling, Pvecteur, Pvecteur, Pvecteur)
this function returns the system of constraints
Definition: build_sc_tile.c:97
void sort_tile_indices(Pbase, Pbase *, matrice, int)
Sort the tile indices base, such that the indices correspond to the tile indices of the array element...
void bound_distribution(Psysteme *, Pbase, int[][4], int, Psysteme *, Psysteme *, Psysteme)
constraint_distribution.c
expression make_op_expression(entity, cons *)
Definition: operation.c:55
void wp65_debug_print_module(entity, statement)
Psysteme sc_image_computation(entity, entity, Psysteme, Psysteme, Pbase, Pbase *, entity, Pbase, Pbase, Pbase *, int, int, int, int *, int *)
This function computes the system of constraints characterizing the image by the array function of th...
statement movement_computation(entity, bool, bool, bool, entity, Psysteme, Pbase, Pbase, Pbase, Pbase, Pbase, int, int)
Calcul des nouvelles bornes des boucles et de la nouvelle fonction d'acces a une reference d'un table...
Variable sc_add_new_variable_name(entity, Psysteme)
sc_add_variable.c
void print_fullname_base(Pbase)
void egalite_distribution(Psysteme, Psysteme *, Pbase)
Psysteme elim_redund_sc_with_sc(Psysteme, Psysteme, Pbase, int)
Build the system of inequations of sc1 no-redundant with system sc2.
expression test_bound_generation(Psysteme, Pbase)
This function generates the expressions of the guard if it exists.
statement make_datum_movement(entity, bool, entity, Pbase, Pbase)
statement make_datum_movement(module,receive_code,ent, local_indices,var_id)
statement make_movement_scalar_wp65(entity, bool, reference, entity)
statement make_movement_scalar_wp65(receive_code,r)
expression lower_bound_generation(Psysteme, Pbase, int, int)
bound_generation.c
Psysteme build_sc_machine(int, int, int, Psysteme, entity, Pbase, entity)
build_sc_machine.c
void wp65_debug_print_text(entity, statement)
make_loop_body.c
Pbase variables_in_declaration_list(entity, code)
void constraint_distribution(Psysteme, Psysteme *, Pbase, int[][4])
Distribution of the constraints of the system sc into several systems.
Pvecteur make_loop_indice_equation(Pbase, tiling, Pvecteur, Pvecteur, Pvecteur, int)
build_sc_tile.c
Definition: build_sc_tile.c:51
statement bound_generation(entity, bool, bool, entity, Pbase, Pbase, Psysteme *, Pbase, int, int[][4])
Generation of the new loop nest characterizing the new domain.
statement make_movements_loop_body_wp65(entity, bool, entity, Pbase, Pbase, Psysteme, Psysteme, Pbase, int, int, int)
statement make_movements_loop_body_wp65(module,receive_code, ent,local_indices,var_id,...
entity find_operator(entity, string, string)
Pbase build_image_base(bool, Pbase, Pbase, Pbase)
cproto-generated files
expression upper_bound_generation(Psysteme, Pbase, int, int)
This fonction generates the upper bounds of the "loop_rank"-th loop.
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
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