PIPS
|
#include "genC.h"
#include "linear.h"
#include "ri.h"
#include "effects.h"
#include "resources.h"
#include "misc.h"
#include "ri-util.h"
#include "syntheses.h"
#include "prettyprint.h"
#include "effects-util.h"
#include "pipsdbm.h"
#include "effects-generic.h"
#include "accel-util.h"
#include "sac.h"
#include "effects-convex.h"
#include "preprocessor.h"
Go to the source code of this file.
Functions | |
static bool | simd_replace_parameters (hash_table array_to_vector) |
static void | simd_trace_call (statement s, hash_table array_to_vector) |
string | compilation_unit_of_module (const char *) |
The output is undefined if the module is referenced but not defined in the workspace, for instance because its code should be synthesized. More... | |
bool | simd_memory_packing (char *mod_name) |
pack load / store from char or short array into load / store from int array a new module is generated More... | |
string compilation_unit_of_module | ( | const char * | module_name | ) |
The output is undefined if the module is referenced but not defined in the workspace, for instance because its code should be synthesized.
Fabien Coelho suggests to build a default compilation unit where all synthesized module codes would be located.
Definition at line 350 of file module.c.
Referenced by simd_memory_packing().
bool simd_memory_packing | ( | char * | mod_name | ) |
pack load / store from char or short array into load / store from int array a new module is generated
mod_name | name of the module to convert |
get the resources
first step : create a vector <> array table
second step : look for any array `‘vectorized’' in the parameter and modify their type to fit the real array size
update/release resources
mod_name | od_name |
Definition at line 151 of file simd_memory_packing.c.
References add_new_module_from_text(), compilation_unit_of_module(), db_get_memory_resource(), fortran_module_p(), free_text(), gen_context_recurse, gen_true2(), get_current_module_entity(), get_current_module_name(), get_current_module_statement(), hash_pointer, hash_table_empty_p, hash_table_free(), hash_table_make(), module_name_to_entity(), pips_user_warning, reset_current_module_entity(), reset_current_module_statement(), set_current_module_entity(), set_current_module_statement(), simd_replace_parameters(), simd_trace_call(), statement_domain, and text_module().
|
static |
recover the parameter name
get associated entity
find associated vector if any
gather information concerning the vector
create a new basic : increased int size
substitute this basic to the old one
update dummy parameter
update declaration
Definition at line 50 of file simd_memory_packing.c.
References basic_int, basic_int_p, basic_pointer, basic_pointer_p, basic_undefined_p, code_declarations, copy_variable(), dummy_identifier, dummy_identifier_p, ENTITY, entity_initial, entity_local_name(), entity_type, entity_undefined_p, f(), FindOrCreateEntity(), FOREACH, free_variable(), functional_parameters, get_current_module_entity(), hash_get(), make_type_variable(), PARAMETER, parameter_dummy, parameter_type, pips_assert, same_entity_lname_p(), type_functional, type_variable, value_code, ValueNumberOfElements(), variable_basic, and variable_dimensions.
Referenced by simd_memory_packing().
|
static |
we only look for load - save statement
and only of the form SIMD_(...)(vect,array)
Definition at line 113 of file simd_memory_packing.c.
References call_arguments, call_function, CAR, CDR, ENDP, ENTITY_ADDRESS_OF_P, entity_type, EXPRESSION, expression_reference(), expression_syntax, gen_length(), hash_put(), pips_assert, reference_indices, reference_variable, simd_dma_stat_p(), statement_call(), syntax_call, syntax_call_p, syntax_reference, syntax_reference_p, type_variable, type_variable_p, and variable_dimensions.
Referenced by simd_memory_packing().