25 #include "pips_config.h"
67 list lip = li, lkp = lk, lvp = lv, lr =
NIL, ldom =
NIL;
73 for ( ; i<=len ; i++, lip=
CDR(lip), lkp=
CDR(lkp), lvp=
CDR(lvp))
83 pips_debug(9,
"array %s, dimension %d, access considered is %d\n",
130 debug(10,
"generate_one_message",
131 "n = %d, just to avoid a gcc warning:-)\n", n);
327 for (lr=Ro, lp=lRo ; lr!=
NIL ; lr=
CDR(lr), lp=
CDR(lp))
372 fprintf(stderr,
"[atomize_one_message] ");
376 for (cnt=content, dom=
domain ; cnt!=
NIL ; cnt=
CDR(cnt), dom=
CDR(dom), i++)
384 debug(9,
"atomize_one_message",
"dimension %d\n", i);
489 for ( ; lr!=
NIL ; i++, lr=
CDR(lr), ld=
CDR(ld))
513 newdlo = dlo+(rlo-localdlo)+((localdlo>rup)?(n):(0));
514 newdup = dup+(rup-localdup)-((localdup<rlo)?(n):(0));
676 sprintf(
buf,
") %s %s(", bsend ?
"send" :
"receive",
681 sprintf(
buf,
") %s (%s%d)\n", bsend ?
"to" :
"from",
682 neighbour>0 ?
"+" :
"-",
abs(neighbour));
772 debug(6,
"messages_handling",
782 debug(6,
"messages_handling",
800 debug(6,
"messages_handling",
811 debug(6,
"messages_handling",
"lm3p length is %d\n",
gen_length(lm3p));
830 hpfc_warning(
"messages coalescing and aggregation not implemented\n");
842 fprintf(stderr,
"[message handling] lmr and lms\n");
message make_message(entity a1, list a2, Pvecteur a3, list a4)
range make_range(expression a1, expression a2, expression a3)
struct _newgen_struct_entity_ * entity
bool hpfc_integer_constant_expression_p(expression e, int *pi)
#define int_to_value(i)
end LINEAR_VALUE_IS_INT
#define VALUE_TO_INT(val)
#define value_uminus(val)
unary operators on values
range loop_index_to_range(entity index)
#define newgen_Pvecteur(p)
void fprint_message(FILE *file, message m)
void fprint_lmessage(FILE *file, list l)
statement make_block_statement(list)
Make a block statement from a list of statement.
#define NIL
The empty list (nil in Lisp)
size_t gen_length(const list l)
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
#define CAR(pcons)
Get the value of the first element of a list.
void gen_free_list(list l)
free the spine of the list
#define CDR(pcons)
Get the list less its first element.
#define MAPL(_map_list_cp, _code, _l)
Apply some code on the addresses of all the elements of a list.
#define MAP(_map_CASTER, _map_item, _map_code, _map_list)
Apply/map an instruction block on all the elements of a list (old fashioned)
void insert_comments_to_statement(statement, const char *)
Insert a comment string (if non empty) at the beginning of the comments of a statement.
int template_cell_local_mapping(entity array, int dim, int tc)
int template_cell_local_mapping(array, dim, tc)
int DistributionParameterOfArrayDim(entity array, int dim, int *pprocdim)
void get_entity_dimensions(entity e, int dim, int *plow, int *pup)
int HpfcExpressionToInt(expression e)
HpfcExpressionToInt(e)
bool ith_dim_distributed_p(entity array, int i, int *pprocdim)
whether a dimension is distributed or not.
int global_array_cell_to_local_array_cell(entity array, int dim, int acell)
int global_array_cell_to_local_array_cell(array, dim, acell)
#define array_to_template(array)
#define array_to_processors(array)
#define template_to_processors(template)
#define hpfc_warning
WARNING.
#define st_receive_from_neighbour()
RCV.
#define st_send_to_neighbour()
list add_elem_to_list_of_Pvecteur(list, int, int)
caution, is initial list is destroyed.
entity load_new_node(entity)
list dup_list_of_ranges_list(list)
??? the complexity of this function could be greatly improved
Pvecteur the_index_of_vect(Pvecteur)
message-utils.c
statement generate_guarded_statement(statement, entity, list)
list template_ranges_to_processors_ranges(entity, list)
list compute_receive_domain(list, Pvecteur)
bool empty_section_p(list)
bool larger_message_in_list(message, list)
list array_ranges_to_template_ranges(entity, list)
list generate_message_from_3_lists(entity, list, list, list)
list generate_message_from_3_lists(array, lcontent, lneighbour, ldomain)
statement st_compute_neighbour(int)
call to the runtime support function HPFC_CMPNEIGHBOUR(d)
range complementary_range(entity, int, range)
range complementary_range(array, dim, r)
list add_to_list_of_ranges_list(list, range)
list compute_receive_content(entity, list, Pvecteur)
list dup_list_of_Pvecteur(list)
??? the complexity of this function could be improved greatly...
char * sprint_lrange(string, list)
statement st_generate_packing(entity, list, bool)
statement st_generate_packing_and_passing(array, content, bsend)
#define message_neighbour_(x)
#define MESSAGE(x)
newgen_message_domain_defined
#define message_neighbour(x)
#define message_content(x)
static expression safe_static_domain_bound(entity array, int dim, expression e, int shift, bool lower)
Messages handling.
static list keep_non_empty_messages_with_destination(list l)
static list messages_guards_and_neighbour(list l)
static list atomize_one_message(message m)
static message shape_one_message(message m)
message shape_one_message(m)
static list keep_non_empty_domain_messages(list l)
static list messages_generation(list Ro, list lRo)
list messages_generation(Ro, lRo)
static message one_message_guards_and_neighbour(message m)
static statement st_one_message(message m, bool bsend)
statement st_one_message(m, bsend)
static list generate_the_messages(list lm, bool bsend)
static list receive_messages_generation(list lms)
list receive_messages_generation(lms)
static message generate_one_message(entity array, list li, list lk, list lv)
message generate_one_message(array, li, lk, lv)
static message one_receive_message(message send)
static list remove_stammering_messages(list lm)
list remove_stammering_messages(lm)
static list messages_shaping(list l)
static list messages_atomization(list lm1)
statement messages_handling(list Ro, list lRo)
every required conditions are supposed to be verified in this function.
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_internal_error
void debug(const int the_expected_debug_level, const char *calling_function_name, const char *a_message_format,...)
ARARGS0.
const char * entity_local_name(entity e)
entity_local_name modified so that it does not core when used in vect_fprint, since someone thought t...
expression int_to_expression(_int i)
transform an int into an expression and generate the corresponding entity if necessary; it is not cle...
expression Value_to_expression(Value v)
added interface for linear stuff.
dimension FindIthDimension(entity, int)
int SizeOfIthDimension(entity, int)
this function returns the size of the ith dimension of a variable e.
int NumberOfDimension(entity)
#define syntax_reference(x)
#define reference_variable(x)
#define dimension_lower(x)
#define range_increment(x)
#define EXPRESSION(x)
EXPRESSION.
#define dimension_upper(x)
#define reference_indices(x)
#define STATEMENT(x)
STATEMENT.
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.
A DOMAIN union describes the structure of a user type.
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
struct Svecteur * Pvecteur
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Pvecteur vect_new(Variable var, Value coeff)
Pvecteur vect_new(Variable var,Value coeff): allocation d'un vecteur colineaire au vecteur de base va...
Pvecteur vect_add(Pvecteur v1, Pvecteur v2)
package vecteur - operations binaires
Value vect_coeff(Variable var, Pvecteur vect)
Variable vect_coeff(Variable var, Pvecteur vect): coefficient de coordonnee var du vecteur vect —> So...