GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | poly_dr |
struct | poly_scattering |
struct | poly_bb |
struct | lst |
struct | scop |
Macros | |
#define | PDR_ID(PDR) (PDR->id) |
#define | PDR_NB_REFS(PDR) (PDR->nb_refs) |
#define | PDR_CDR(PDR) (PDR->compiler_dr) |
#define | PDR_PBB(PDR) (PDR->pbb) |
#define | PDR_TYPE(PDR) (PDR->type) |
#define | PDR_ACCESSES(PDR) (NULL) |
#define | PDR_BASE_OBJECT_SET(PDR) (PDR->dr_base_object_set) |
#define | PDR_NB_SUBSCRIPTS(PDR) (PDR->nb_subscripts) |
#define | PBB_BLACK_BOX(PBB) ((gimple_bb_p) PBB->black_box) |
#define | PBB_SCOP(PBB) (PBB->scop) |
#define | PBB_DOMAIN(PBB) (NULL) |
#define | PBB_DRS(PBB) (PBB->drs) |
#define | PBB_ORIGINAL(PBB) (PBB->_original) |
#define | PBB_ORIGINAL_SCATTERING(PBB) (NULL) |
#define | PBB_TRANSFORMED(PBB) (PBB->_transformed) |
#define | PBB_TRANSFORMED_SCATTERING(PBB) (NULL) |
#define | PBB_SAVED(PBB) (PBB->_saved) |
#define | PBB_NB_LOCAL_VARIABLES(PBB) (0) |
#define | PBB_NB_SCATTERING_TRANSFORM(PBB) (isl_map_n_out (PBB->transformed)) |
#define | PBB_IS_REDUCTION(PBB) (PBB->is_reduction) |
#define | LST_LOOP_P(LST) ((LST)->loop_p) |
#define | LST_LOOP_FATHER(LST) ((LST)->loop_father) |
#define | LST_PBB(LST) ((LST)->node.pbb) |
#define | LST_SEQ(LST) ((LST)->node.seq) |
#define | LST_LOOP_MEMORY_STRIDES(LST) ((LST)->memory_strides) |
#define | SCOP_BBS(S) (S->bbs) |
#define | SCOP_REGION(S) ((sese) S->region) |
#define | SCOP_CONTEXT(S) (NULL) |
#define | SCOP_ORIGINAL_SCHEDULE(S) (S->original_schedule) |
#define | SCOP_TRANSFORMED_SCHEDULE(S) (S->transformed_schedule) |
#define | SCOP_SAVED_SCHEDULE(S) (S->saved_schedule) |
#define | POLY_SCOP_P(S) (S->poly_scop_p) |
Typedefs | |
typedef struct poly_dr * | poly_dr_p |
typedef struct poly_bb * | poly_bb_p |
typedef struct scop * | scop_p |
typedef unsigned | graphite_dim_t |
typedef struct poly_scattering * | poly_scattering_p |
typedef struct lst * | lst_p |
Enumerations | |
enum | poly_dr_type { PDR_READ, PDR_WRITE, PDR_MAY_WRITE } |
#define LST_LOOP_FATHER | ( | LST | ) | ((LST)->loop_father) |
Referenced by copy_lst(), lst_depth(), lst_find_first_pbb(), lst_find_last_pbb(), lst_remove_from_sequence(), and pbb_update_scattering().
#define LST_LOOP_MEMORY_STRIDES | ( | LST | ) | ((LST)->memory_strides) |
#define LST_LOOP_P | ( | LST | ) | ((LST)->loop_p) |
Referenced by lst_dewey_number(), and lst_insert_in_sequence().
#define LST_PBB | ( | LST | ) | ((LST)->node.pbb) |
Referenced by lst_dewey_number(), and lst_replace().
#define LST_SEQ | ( | LST | ) | ((LST)->node.seq) |
Referenced by lst_depth(), lst_dewey_number(), lst_find_last_pbb(), lst_insert_in_sequence(), lst_replace(), and pbb_update_scattering().
#define PBB_BLACK_BOX | ( | PBB | ) | ((gimple_bb_p) PBB->black_box) |
Referenced by number_of_write_pdrs().
#define PBB_DOMAIN | ( | PBB | ) | (NULL) |
#define PBB_DRS | ( | PBB | ) | (PBB->drs) |
#define PBB_IS_REDUCTION | ( | PBB | ) | (PBB->is_reduction) |
#define PBB_NB_LOCAL_VARIABLES | ( | PBB | ) | (0) |
XXX isl if we ever need local vars in the scatter, we can't use the out dimension of transformed to count the scatterting transform dimension.
#define PBB_NB_SCATTERING_TRANSFORM | ( | PBB | ) | (isl_map_n_out (PBB->transformed)) |
Referenced by pbb_set_black_box().
#define PBB_ORIGINAL | ( | PBB | ) | (PBB->_original) |
#define PBB_ORIGINAL_SCATTERING | ( | PBB | ) | (NULL) |
#define PBB_SAVED | ( | PBB | ) | (PBB->_saved) |
#define PBB_SCOP | ( | PBB | ) | (PBB->scop) |
Referenced by pbb_index().
#define PBB_TRANSFORMED | ( | PBB | ) | (PBB->_transformed) |
#define PBB_TRANSFORMED_SCATTERING | ( | PBB | ) | (NULL) |
#define PDR_ACCESSES | ( | PDR | ) | (NULL) |
#define PDR_BASE_OBJECT_SET | ( | PDR | ) | (PDR->dr_base_object_set) |
Referenced by pdr_write_p().
#define PDR_CDR | ( | PDR | ) | (PDR->compiler_dr) |
#define PDR_ID | ( | PDR | ) | (PDR->id) |
#define PDR_NB_REFS | ( | PDR | ) | (PDR->nb_refs) |
#define PDR_NB_SUBSCRIPTS | ( | PDR | ) | (PDR->nb_subscripts) |
Referenced by pdr_write_p().
#define PDR_PBB | ( | PDR | ) | (PDR->pbb) |
Referenced by pdr_subscript_dim().
#define PDR_TYPE | ( | PDR | ) | (PDR->type) |
Referenced by pdr_iterator_dim(), pdr_parameter_dim(), and pdr_read_p().
typedef unsigned graphite_dim_t |
Graphite polyhedral representation. Copyright (C) 2009-2013 Free Software Foundation, Inc. Contributed by Sebastian Pop sebas and Tobias Grosser tian .pop@ amd. comgross. er@f im.un i-pa ssau. de
This file is part of GCC.
GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version.
GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see http://www.gnu.org/licenses/.
typedef struct poly_scattering* poly_scattering_p |
enum poly_dr_type |
void cloog_checksum | ( | scop_p | ) |
void compute_deps | ( | scop_p | scop, |
vec< poly_bb_p > | pbbs, | ||
isl_union_map ** | must_raw, | ||
isl_union_map ** | may_raw, | ||
isl_union_map ** | must_raw_no_source, | ||
isl_union_map ** | may_raw_no_source, | ||
isl_union_map ** | must_war, | ||
isl_union_map ** | may_war, | ||
isl_union_map ** | must_war_no_source, | ||
isl_union_map ** | may_war_no_source, | ||
isl_union_map ** | must_waw, | ||
isl_union_map ** | may_waw, | ||
isl_union_map ** | must_waw_no_source, | ||
isl_union_map ** | may_waw_no_source | ||
) |
|
inlinestatic |
Returns a copy of LST.
References gcc_assert, lst_depth(), lst_dewey_number(), lst_dewey_number_at_depth(), and LST_LOOP_FATHER.
void debug_cloog | ( | scop_p | , |
int | |||
) |
void debug_generated_program | ( | scop_p | ) |
void debug_gmp_value | ( | mpz_t | ) |
void debug_isl_aff | ( | isl_aff * | ) |
void debug_isl_constraint | ( | isl_constraint * | ) |
void debug_isl_map | ( | isl_map * | ) |
void debug_isl_set | ( | isl_set * | ) |
void debug_iteration_domain | ( | poly_bb_p | , |
int | |||
) |
void debug_iteration_domains | ( | scop_p | , |
int | |||
) |
void debug_loop_vec | ( | poly_bb_p | ) |
void debug_lst | ( | lst_p | ) |
void debug_pbb | ( | poly_bb_p | , |
int | |||
) |
void debug_pbb_domain | ( | poly_bb_p | , |
int | |||
) |
void debug_pdr | ( | poly_dr_p | , |
int | |||
) |
void debug_pdrs | ( | poly_bb_p | , |
int | |||
) |
void debug_scattering_function | ( | poly_bb_p | , |
int | |||
) |
void debug_scattering_functions | ( | scop_p | , |
int | |||
) |
void debug_scop | ( | scop_p | , |
int | |||
) |
void debug_scop_context | ( | scop_p | , |
int | |||
) |
void debug_scop_params | ( | scop_p | , |
int | |||
) |
void dot_lst | ( | lst_p | ) |
__isl_give isl_union_map* extend_schedule | ( | __isl_take isl_union_map * | ) |
|
inlinestatic |
Return the LST node corresponding to the loop around STMT at depth LOOP_DEPTH.
|
inlinestatic |
Frees the memory used by LST.
Referenced by lst_insert_in_sequence(), and lst_replace().
void free_poly_bb | ( | poly_bb_p | ) |
void free_poly_dr | ( | poly_dr_p | ) |
void free_scop | ( | scop_p | ) |
|
inlinestatic |
Returns a gimple_bb from BB.
|
inlinestatic |
Adds a new loop under the loop LST.
|
inlinestatic |
Returns true if LOOP contains LST, in other words, if LST is nested in LOOP.
|
inlinestatic |
Returns true if LOOP contains PBB, in other words, if PBB is nested in LOOP.
|
inlinestatic |
Creates a loop nest of depth NB_LOOPS containing LST.
Referenced by lst_find_first_pbb().
|
inlinestatic |
Returns the loop depth of LST.
The depth of the outermost "fake" loop is -1. This outermost loop does not have a loop father and it is just a container, as in the loop representation of GCC.
References lst_dewey_number(), LST_LOOP_FATHER, LST_SEQ, and NULL.
Referenced by copy_lst().
|
inlinestatic |
Returns the Dewey number for LST.
References lst_find_pbb(), LST_LOOP_P, LST_PBB, LST_SEQ, and NULL.
Referenced by copy_lst(), lst_depth(), lst_find_last_pbb(), lst_remove_from_sequence(), and pbb_update_scattering().
|
inlinestatic |
Returns the Dewey number of LST at depth DEPTH.
Referenced by copy_lst().
|
inlinestatic |
Moves LST before LOOP if BEFORE is true, and after the LOOP if BEFORE is false.
|
inlinestatic |
Returns true when LST is a loop that does not contain statements.
Referenced by pbb_update_scattering().
|
inlinestatic |
Return the first LST representing a PBB statement in LST.
References lst_create_nest(), LST_LOOP_FATHER, and new_lst_loop().
|
inlinestatic |
Return the last LST representing a PBB statement in LST.
References FOR_EACH_VEC_ELT, gcc_assert, lst_dewey_number(), LST_LOOP_FATHER, LST_SEQ, and NULL.
Referenced by lst_find_pbb().
|
inlinestatic |
Return the LST node corresponding to PBB.
References last, and lst_find_last_pbb().
Referenced by lst_dewey_number().
|
inlinestatic |
Inserts LST1 before LST2 if BEFORE is true; inserts LST1 after LST2 if BEFORE is false.
Do not insert empty loops.
References free_lst(), LST_LOOP_P, lst_remove_all_before_including_pbb(), and LST_SEQ.
|
inlinestatic |
Sets NITER to the upper bound approximation of the number of iterations of loop LST.
|
inlinestatic |
Returns the predecessor of LST in the sequence of its loop father. Returns NULL if LST is the first statement in the sequence.
|
inlinestatic |
Removes from LOOP all the statements before/after and excluding PBB if BEFORE is true/false; Returns the negation of BEFORE when the statement PBB has been found.
|
inlinestatic |
Removes from LOOP all the statements before/after and including PBB if BEFORE is true/false. Returns the negation of BEFORE when the statement PBB has been found.
Referenced by lst_insert_in_sequence().
|
inlinestatic |
Removes LST from the sequence of statements of its loop father.
References lst_dewey_number(), and LST_LOOP_FATHER.
|
inlinestatic |
Removes the loop LST and inline its body in the father loop.
|
inlinestatic |
Replaces LST1 with LST2.
References free_lst(), LST_PBB, and LST_SEQ.
|
inlinestatic |
Returns a copy of ROOT where LST has been replaced by a copy of the LSTs A B C in this sequence.
|
inlinestatic |
Returns the successor of LST in the sequence of its loop father. Returns NULL if there is none.
|
inlinestatic |
Updates the all the scattering levels of all the PBBs under LST.
|
inlinestatic |
Updates the scattering of all the PBBs under LST to be at the DEWEY number in the loop at depth LEVEL.
|
inlinestatic |
Creates a new LST loop with SEQ.
Referenced by lst_find_first_pbb().
|
inlinestatic |
Creates a new LST statement with PBB.
void new_poly_dr | ( | poly_bb_p | , |
int | , | ||
enum | poly_dr_type, | ||
void * | , | ||
graphite_dim_t | , | ||
isl_map * | , | ||
isl_set * | |||
) |
scop_p new_scop | ( | void * | ) |
|
inlinestatic |
Return the number of write data references in PBB.
References GBB_BB, and PBB_BLACK_BOX.
|
inlinestatic |
The basic block of the PBB.
References poly_bb::domain.
|
inlinestatic |
|
inlinestatic |
The number of loops around PBB: the dimension of the iteration domain.
|
inlinestatic |
The index of the PBB.
References PBB_SCOP, and scop_nb_params().
|
inlinestatic |
The dimension in the domain of PBB containing the iterator ITER.
References gcc_assert, pbb_dim_iter_domain(), and pbb_nb_scattering_orig().
|
inlinestatic |
The loop of the PBB.
|
inlinestatic |
The number of dynamic scattering dimensions in PBB.
This function requires the 2d + 1 scattering format to be invariant during all transformations.
References gcc_assert, and pbb_nb_scattering_transform().
|
inlinestatic |
Returns the number of local variables used in the transformed scattering polyhedron of PBB.
For now we do not have any local variables, as we do not do strip mining for example.
References gcc_assert, and pbb_nb_scattering_transform().
Referenced by pbb_parameter_dim(), and psct_scattering_dim().
|
inlinestatic |
Referenced by psco_scattering_dim(), and psct_scattering_dim().
|
inlinestatic |
The number of params defined in PBB.
|
inlinestatic |
The number of scattering dimensions in the SCATTERING polyhedron of a PBB for a given SCOP.
References pbb_dim_iter_domain().
Referenced by pbb_iterator_dim(), pbb_nb_scattering_transform(), and psco_scattering_dim().
|
inlinestatic |
The number of scattering dimensions in PBB.
References gcc_assert, and pbb_nb_scattering_orig().
Referenced by pbb_nb_dynamic_scattering_transform(), pbb_nb_local_vars(), pbb_parameter_dim(), psco_iterator_dim(), psct_local_var_dim(), and psct_scattering_dim().
void pbb_number_of_iterations_at_time | ( | poly_bb_p | , |
graphite_dim_t | , | ||
mpz_t | |||
) |
|
inlinestatic |
The dimension in the domain of PBB containing the iterator ITER.
References gcc_assert, pbb_dim_iter_domain(), pbb_nb_local_vars(), and pbb_nb_scattering_transform().
|
inlinestatic |
Set black box of PBB to BLACKBOX.
References gcc_assert, and PBB_NB_SCATTERING_TRANSFORM.
|
inlinestatic |
Updates the scattering of PBB to be at the DEWEY number in the loop at depth LEVEL.
References lst_dewey_number(), lst_empty_p(), LST_LOOP_FATHER, and LST_SEQ.
|
inlinestatic |
The dimension of the alias set in PDR.
|
inlinestatic |
The dimension of the iteration domain of the scop of PDR.
|
inlinestatic |
|
inlinestatic |
Returns true when PDR is a "may write".
|
inlinestatic |
The number of parameters of the scop of PDR.
|
inlinestatic |
|
inlinestatic |
Returns true when PDR is a "read".
References PDR_MAY_WRITE, and PDR_TYPE.
|
inlinestatic |
The scop that contains the PDR.
|
inlinestatic |
The dimension in PDR containing subscript S.
References pbb_dim_iter_domain(), and PDR_PBB.
|
inlinestatic |
Returns true when PDR is a "write".
References PDR_BASE_OBJECT_SET, and PDR_NB_SUBSCRIPTS.
|
inlinestatic |
Copies S and return a new scattering.
|
inlinestatic |
Free a poly_scattering structure.
|
inlinestatic |
Allocates a new empty poly_scattering structure.
void print_cloog | ( | FILE * | , |
scop_p | , | ||
int | |||
) |
void print_generated_program | ( | FILE * | , |
scop_p | |||
) |
void print_isl_aff | ( | FILE * | , |
isl_aff * | |||
) |
void print_isl_constraint | ( | FILE * | , |
isl_constraint * | |||
) |
void print_isl_map | ( | FILE * | , |
isl_map * | |||
) |
void print_isl_set | ( | FILE * | , |
isl_set * | |||
) |
void print_iteration_domain | ( | FILE * | , |
poly_bb_p | , | ||
int | |||
) |
void print_iteration_domains | ( | FILE * | , |
scop_p | , | ||
int | |||
) |
void print_lst | ( | FILE * | , |
lst_p | , | ||
int | |||
) |
void print_pbb | ( | FILE * | , |
poly_bb_p | , | ||
int | |||
) |
void print_pbb_domain | ( | FILE * | , |
poly_bb_p | , | ||
int | |||
) |
void print_pdr | ( | FILE * | , |
poly_dr_p | , | ||
int | |||
) |
void print_pdrs | ( | FILE * | , |
poly_bb_p | , | ||
int | |||
) |
void print_scattering_function | ( | FILE * | , |
poly_bb_p | , | ||
int | |||
) |
void print_scattering_functions | ( | FILE * | , |
scop_p | , | ||
int | |||
) |
void print_scop | ( | FILE * | , |
scop_p | , | ||
int | |||
) |
void print_scop_context | ( | FILE * | , |
scop_p | , | ||
int | |||
) |
void print_scop_params | ( | FILE * | , |
scop_p | , | ||
int | |||
) |
|
inlinestatic |
The dimension in the original scattering polyhedron of PBB containing the loop iterator ITER.
References gcc_assert, and pbb_nb_scattering_transform().
|
inlinestatic |
The dimension in the original scattering polyhedron of PBB containing parameter PARAM.
References lst::loop_father, lst::loop_p, and lst::memory_strides.
|
inlinestatic |
The dimension in the original scattering polyhedron of PBB containing the scattering iterator SCATTER.
References gcc_assert, pbb_dim_iter_domain(), pbb_nb_params(), and pbb_nb_scattering_orig().
|
inlinestatic |
Adds to the transformed scattering polyhedron of PBB a new local variable and returns its index.
|
inlinestatic |
The scattering dimension of PBB corresponding to the dynamic level LEVEL.
|
inlinestatic |
The dimension in the transformed scattering polyhedron of PBB containing the loop iterator ITER.
|
inlinestatic |
The dimension in the transformed scattering polyhedron of PBB of the local variable LV.
References gcc_assert, and pbb_nb_scattering_transform().
|
inlinestatic |
|
inlinestatic |
The dimension in the transformed scattering polyhedron of PBB containing the scattering iterator SCATTER.
References gcc_assert, pbb_dim_iter_domain(), pbb_nb_local_vars(), pbb_nb_params(), and pbb_nb_scattering_transform().
|
inlinestatic |
The scattering dimension of PBB corresponding to the static sequence of the loop level LEVEL.
|
inlinestatic |
Restores the SCOP_TRANSFORMED_SCHEDULE from SCOP_SAVED_SCHEDULE.
|
inlinestatic |
Restores the scattering for all the pbbs in the SCOP.
|
inlinestatic |
Restores the scattering of PBB.
isl_map* reverse_loop_at_level | ( | poly_bb_p | , |
int | |||
) |
|
inlinestatic |
Return true when PDR1 and PDR2 are similar data accesses: they have the same base array, and the same access functions.
References poly_bb::black_box, and poly_bb::scop.
void schedule_to_scattering | ( | poly_bb_p | , |
int | |||
) |
int scop_do_interchange | ( | scop_p | ) |
int scop_do_strip_mine | ( | scop_p | , |
int | |||
) |
int scop_max_loop_depth | ( | scop_p | ) |
|
inlinestatic |
Referenced by pbb_index().
|
inlinestatic |
Returns the number of parameters for SCOP.
|
inlinestatic |
Set the number of params of SCOP to NB_PARAMS.
|
inlinestatic |
Set the region of SCOP to REGION.
void scop_to_lst | ( | scop_p | ) |
|
inlinestatic |
Stores the SCOP_TRANSFORMED_SCHEDULE to SCOP_SAVED_SCHEDULE.
|
inlinestatic |
Saves the scattering for all the pbbs in the SCOP.
|
inlinestatic |
Saves the transformed scattering of PBB.
int unify_scattering_dimensions | ( | scop_p | ) |