27 #ifdef BUILDER_LOOP_INTERCHANGE
31 #include "pips_config.h"
166 static statement old_interchange_inner_outermost_loops(
list lls,
173 Pbase base_oldindex = NULL;
174 Pbase base_newindex = NULL;
197 debug_on(
"LOOP_INTERCHANGE_DEBUG_LEVEL");
229 base_oldindex,base_newindex);
233 for (pb=base_newindex; pb!=NULL; pb=pb->
succ) {
248 s_lhyp = gener_DOSEQ(lls,pvg,base_oldindex,base_newindex,
sc_newbase);
287 Pbase base_oldindex = NULL;
288 Pbase base_newindex = NULL;
310 debug_on(
"LOOP_INTERCHANGE_DEBUG_LEVEL");
311 pips_debug(8,
"\n begin: n1=%d, n2=%d\n", n1, n2);
353 base_oldindex,base_newindex);
357 for (pb=base_newindex; pb!=NULL; pb=pb->
succ) {
372 s_lhyp = gener_DOSEQ(lls,pvg,base_oldindex,base_newindex,
sc_newbase);
405 pips_assert(
"The loop list retrieved has the expected lenght",
430 bool return_status =
false;
436 return return_status;
float a2sf[2] __attribute__((aligned(16)))
USER generates a user error (i.e., non fatal) by printing the given MSG according to the FMT.
execution make_execution(enum execution_utype tag, void *val)
loop make_loop(entity a1, range a2, statement a3, entity a4, execution a5, list a6)
bool statement_consistent_p(statement p)
statement make_statement(entity a1, intptr_t a2, intptr_t a3, string a4, instruction a5, list a6, string a7, extensions a8, synchronization a9)
instruction make_instruction(enum instruction_utype tag, void *val)
void free_execution(execution p)
synchronization make_synchronization_none(void)
execution copy_execution(execution p)
EXECUTION.
range make_range(expression a1, expression a2, expression a3)
Pbase base_reversal(Pbase b_in)
Pbase base_reversal(Pbase b_in): produces a basis b_out, having the same basis vectors as b_in,...
void change_of_base_index(Pbase base_oldindex, Pbase *base_newindex)
void change_of_base_index(Pbase base_oldindex, Pbase *base_newindex) change of variable index from ba...
Psysteme sc_change_baseindex(Psysteme sc, Pbase base_old, Pbase base_new)
Psysteme sc_change_baseindex(Psysteme sc, Pbase base_old, Pbase base_new) le changement de base d'ind...
expression expression_to_expression_newbase(expression e_old, pvg, Pbase base_oldindex)
expression expression_to_expression_newbase(expression e_old,Pvecteur pvg[], Pbase base_oldindex) com...
Pvecteur vect_change_base(Pvecteur pv_old, Pbase base_oldindex, pvg)
Pvecteur vect_change_base(Pvecteur pv_old, Pvecteur pvg[], Pbase base_oldindex, Pbase base_newindex) ...
void scanning_base_to_vect(matrice G, int n, Pbase base, pvg)
void scanning_base_to_vect(matrice G,int n,Pbase base,Pvecteur pvg[n]) compute G*base and put the res...
void statement_newbase(statement s, pvg, Pbase base_oldindex)
statement_newbase(statement s, Pvecteur pvg[], Pbase base_oldindex) compute the new statement by perf...
#define A(i, j)
comp_matrice.c
Psysteme loop_iteration_domaine_to_sc(list, Pbase *)
loop_iteration_domaine_to_sc.c
const char * module_name(const char *s)
Return the module part of an entity name.
entity get_current_module_entity(void)
Get the entity of the current module.
list statement_to_loop_statement_list(statement s)
If statement s is a perfectly loop nest, return the corresponding loop list.
list gen_nreverse(list cp)
reverse a list in place
#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)
#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
list gen_last(list l)
Return the last element of a list.
bool gen_in_list_p(const void *vo, const list lx)
tell whether vo belongs to lx
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a list.
#define CDR(pcons)
Get the list less its first element.
gen_chunk gen_nth(int n, const list l)
to be used as ENTITY(gen_nth(3, l))...
loop statement_loop(statement)
Get the loop of a statement.
statement makeloopbody(loop, statement, bool)
statement makeloopbody(l, s_old) make a statement for a loop body, using the fields of a previously e...
void insert_statement(statement, statement, bool)
This is the normal entry point.
statement make_continue_statement(entity)
Psysteme sc_newbase
include <sys/ddi.h>
#define matrice_new(n, m)
Allocation et desallocation d'une matrice.
Value * matrice
package matrice
void matrice_multiply(matrice a, matrice b, matrice c, int p, int q, int r)
void matrice_multiply(matrice a, matrice b, matrice c, int p, int q, int r): multiply rational matrix...
void matrice_swap_columns(matrice matrix, int n, int m, int c1, int c2)
void matrice_swap_columns(matrice matrix, int n, int m, int c1, int c2): exchange columns c1,...
void matrice_identite(matrice, int, int)
void matrice_identite(matrice ID, int n, int level) Construction d'une sous-matrice identite dans ID(...
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
void make_bound_expression(Variable index, Pbase base, Psysteme sc, expression *lower, expression *upper)
void make_bound_expression(variable index, Pbase base, Psysteme sc, expression *lower,...
bool entity_empty_label_p(entity e)
expression int_to_expression(_int i)
transform an int into an expression and generate the corresponding entity if necessary; it is not cle...
bool c_language_module_p(entity m)
#define loop_execution(x)
#define instruction_loop(x)
#define statement_ordering(x)
#define instruction_undefined
#define statement_label(x)
#define expression_undefined
#define statement_extensions(x)
#define statement_instruction(x)
#define statement_comments(x)
@ is_execution_sequential
#define statement_number(x)
#define statement_undefined
#define STATEMENT(x)
STATEMENT.
Psysteme sc_dup(Psysteme ps)
Psysteme sc_dup(Psysteme ps): should becomes a link.
Psysteme new_loop_bound(Psysteme scn, Pbase base_index)
Psysteme new_loop_bound(Psysteme scn, Pbase base_index) computation of the new iteration space (given...
#define G(j, a, b)
maybe most of them should be functions?
void sys_matrice_index(Psysteme, Pbase, matrice, int, int)
Warning! Do not modify this file that is automatically generated!
void matrice_index_sys(Psysteme, Pbase, matrice, int, int)
void matrice_index_sys(Psysteme sc, Pbase base_index, matrice AG, int n, int m) replace the coefficie...
struct Scontrainte * succ
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.
#define base_dimension(b)
#define BASE_NULLE
MACROS SUR LES BASES.
struct Svecteur Svecteur
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique