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 |
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 } |
typedef unsigned graphite_dim_t |
typedef struct poly_scattering* poly_scattering_p |
enum poly_dr_type |
bool apply_poly_transforms | ( | scop_p | ) |
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 | ||
) |
Compute the original data dependences in SCOP for all the reads and writes in PBBS.
References scop_get_may_writes(), scop_get_must_writes(), scop_get_original_schedule(), scop_get_reads(), and subtract_commutative_associative_deps().
Referenced by loop_level_carries_dependences(), scop_get_dependences(), and transform_is_safe().
|
inlinestatic |
Returns a copy of LST.
References new_lst_loop(), and new_lst_stmt().
Referenced by lst_perfect_nestify(), lst_substitute_3(), restore_lst_schedule(), scop_to_lst(), and store_lst_schedule().
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.
References lst_depth().
bool flatten_all_loops | ( | scop_p | ) |
|
inlinestatic |
Frees the memory used by LST.
References free().
Referenced by free_scop(), lst_perfect_nestify(), lst_remove_all_before_excluding_pbb(), lst_remove_all_before_including_pbb(), lst_try_interchange_loops(), restore_lst_schedule(), and store_lst_schedule().
void free_poly_bb | ( | poly_bb_p | ) |
void free_poly_dr | ( | poly_dr_p | ) |
void free_scop | ( | scop_p | ) |
Referenced by graphite_transform_loops(), and limit_scops().
|
inlinestatic |
Returns a gimple_bb from BB.
References basic_block_def::aux.
Referenced by analyze_drs_in_stmts(), build_sese_conditions_before(), insert_out_of_ssa_copy_on_edge(), pbb_from_bb(), and split_reduction_stmt().
bool graphite_legal_transform | ( | scop_p | ) |
|
inlinestatic |
|
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.
References lst_find_pbb().
|
inlinestatic |
Creates a loop nest of depth NB_LOOPS containing LST.
References new_lst_loop().
Referenced by lst_distribute_lst().
|
inlinestatic |
Returns the loop depth of LST.
Referenced by dot_lst_1(), find_lst_loop(), lst_dewey_number_at_depth(), lst_distribute_lst(), lst_do_strip_mine(), lst_niter_for_loop(), lst_try_interchange_loops(), and lst_update_scattering().
|
inlinestatic |
Returns the Dewey number for LST.
Referenced by dot_lst_1(), lst_dewey_number_at_depth(), lst_insert_in_sequence(), lst_pred(), lst_remove_from_sequence(), lst_remove_loop_and_inline_stmts_in_loop_father(), lst_replace(), lst_succ(), lst_update_scattering(), and print_lst().
|
inlinestatic |
Returns the Dewey number of LST at depth DEPTH.
References lst_depth(), and lst_dewey_number().
|
inlinestatic |
Moves LST before LOOP if BEFORE is true, and after the LOOP if BEFORE is false.
References loop_depth(), lst_create_nest(), lst_depth(), lst_insert_in_sequence(), and lst_remove_from_sequence().
|
inlinestatic |
Returns true when LST is a loop that does not contain statements.
References lst_find_first_pbb().
Referenced by lst_insert_in_sequence(), lst_perfect_nestify(), lst_replace(), and lst_substitute_3().
|
inlinestatic |
Return the first LST representing a PBB statement in LST.
Referenced by lst_empty_p(), lst_niter_for_loop(), and lst_perfect_nestify().
|
inlinestatic |
Return the last LST representing a PBB statement in LST.
References last.
Referenced by lst_perfect_nestify().
|
inlinestatic |
Return the LST node corresponding to PBB.
Referenced by lst_contains_pbb().
|
inlinestatic |
Inserts LST1 before LST2 if BEFORE is true; inserts LST1 after LST2 if BEFORE is false.
References lst_dewey_number(), and lst_empty_p().
Referenced by lst_distribute_lst(), and lst_try_interchange_loops().
|
inlinestatic |
Sets NITER to the upper bound approximation of the number of iterations of loop LST.
References lst_depth(), lst_find_first_pbb(), pbb_number_of_iterations_at_time(), and psct_dynamic_dim().
Referenced by lst_strip_mine_profitable_p().
|
inlinestatic |
Returns the predecessor of LST in the sequence of its loop father. Returns NULL if LST is the first statement in the sequence.
References lst_dewey_number().
|
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.
References free_lst().
Referenced by lst_perfect_nestify().
|
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.
References free_lst().
Referenced by lst_perfect_nestify().
|
inlinestatic |
Removes LST from the sequence of statements of its loop father.
References lst_dewey_number().
Referenced by lst_distribute_lst().
|
inlinestatic |
Removes the loop LST and inline its body in the father loop.
References lst_dewey_number().
|
inlinestatic |
Replaces LST1 with LST2.
References lst_dewey_number(), and lst_empty_p().
Referenced by lst_try_interchange_loops().
|
inlinestatic |
Returns a copy of ROOT where LST has been replaced by a copy of the LSTs A B C in this sequence.
References copy_lst(), lst_empty_p(), new_lst_loop(), and new_lst_stmt().
Referenced by lst_try_interchange_loops().
|
inlinestatic |
Returns the successor of LST in the sequence of its loop father. Returns NULL if there is none.
References lst_dewey_number().
|
inlinestatic |
Updates the all the scattering levels of all the PBBs under LST.
References lst_depth(), lst_dewey_number(), and lst_update_scattering_under().
Referenced by lst_try_interchange_loops(), and scop_do_interchange().
|
inlinestatic |
Updates the scattering of all the PBBs under LST to be at the DEWEY number in the loop at depth LEVEL.
References pbb_update_scattering().
Referenced by lst_update_scattering().
|
inlinestatic |
Creates a new LST loop with SEQ.
Referenced by copy_lst(), loop_to_lst(), lst_add_loop_under_loop(), lst_create_nest(), lst_substitute_3(), and scop_to_lst().
|
inlinestatic |
Creates a new LST statement with PBB.
Referenced by copy_lst(), loop_to_lst(), lst_substitute_3(), and scop_to_lst().
void new_poly_dr | ( | poly_bb_p | pbb, |
int | dr_base_object_set, | ||
enum poly_dr_type | type, | ||
void * | cdr, | ||
graphite_dim_t | nb_subscripts, | ||
isl_map * | acc, | ||
isl_set * | extent | ||
) |
Create a new polyhedral data reference and add it to PBB. It is defined by its ACCESSES, its TYPE, and the number of subscripts NB_SUBSCRIPTS.
References poly_dr::accesses, poly_dr::extent, and type().
Referenced by build_poly_dr().
scop_p new_scop | ( | void * | ) |
|
inlinestatic |
Return the number of write data references in PBB.
References PDR_WRITE.
bool optimize_isl | ( | scop_p | ) |
|
inlinestatic |
The basic block of the PBB.
Referenced by pbb_index(), and print_pbb_body().
|
inlinestatic |
Referenced by build_pbb_scattering_polyhedrons(), build_scop_scattering(), openscop_print_pbb_domain(), pbb_nb_scattering_orig(), pbb_parameter_dim(), pdr_alias_set_dim(), pdr_dim_iter_domain(), pdr_parameter_dim(), pdr_subscript_dim(), print_pdr_access_layout(), print_scattering_function_1(), psco_iterator_dim(), psco_parameter_dim(), psct_iterator_dim(), psct_parameter_dim(), and scop_max_loop_depth().
|
inlinestatic |
The number of loops around PBB: the dimension of the iteration domain.
References poly_bb::domain.
|
inlinestatic |
The poly_bb of the BB.
References gbb_from_bb().
Referenced by insert_out_of_ssa_copy_on_edge(), split_reduction_stmt(), and translate_scalar_reduction_to_array().
|
inlinestatic |
The index of the PBB.
References basic_block_def::index, and pbb_bb().
Referenced by dot_lst_1(), isl_id_for_pbb(), pdr_stride_in_loop(), print_cloog(), print_lst(), print_pbb(), and print_scattering_function_1().
|
inlinestatic |
The dimension in the domain of PBB containing the iterator ITER.
|
inlinestatic |
The loop of the PBB.
References gbb_loop().
Referenced by build_scop_iteration_domain(), and create_pw_aff_from_tree().
|
inlinestatic |
The number of dynamic scattering dimensions in PBB.
|
inlinestatic |
Returns the number of local variables used in the transformed scattering polyhedron of PBB.
Referenced by pdr_stride_in_loop(), print_scattering_function_1(), psct_iterator_dim(), psct_local_var_dim(), and psct_parameter_dim().
|
inlinestatic |
|
inlinestatic |
The number of params defined in PBB.
References scop_nb_params().
|
inlinestatic |
The number of scattering dimensions in the SCATTERING polyhedron of a PBB for a given SCOP.
References pbb_dim_iter_domain().
Referenced by psco_iterator_dim(), psco_parameter_dim(), and psco_scattering_dim().
|
inlinestatic |
The number of scattering dimensions in PBB.
Referenced by pdr_stride_in_loop(), print_scattering_function_1(), psct_dynamic_dim(), psct_iterator_dim(), psct_local_var_dim(), psct_parameter_dim(), psct_scattering_dim(), and psct_static_dim().
void pbb_number_of_iterations_at_time | ( | poly_bb_p | pbb, |
graphite_dim_t | time_depth, | ||
mpz_t | res | ||
) |
Returns the number of iterations RES of the loop around PBB at time(scattering) dimension TIME_DEPTH.
References poly_bb::domain, and poly_bb::transformed.
Referenced by lst_niter_for_loop().
|
inlinestatic |
The dimension in the domain of PBB containing the iterator ITER.
References pbb_dim_iter_domain().
|
inlinestatic |
|
inlinestatic |
Updates the scattering of PBB to be at the DEWEY number in the loop at depth LEVEL.
References d1, d2, psct_static_dim(), and poly_bb::transformed.
Referenced by lst_update_scattering_under().
|
inlinestatic |
The dimension of the alias set in PDR.
References pbb_dim_iter_domain(), and pbb_nb_params().
|
inlinestatic |
The dimension of the iteration domain of the scop of PDR.
References pbb_dim_iter_domain().
|
inlinestatic |
The dimension in PDR containing the loop iterator ITER.
|
inlinestatic |
Returns true when PDR is a "may write".
References PDR_MAY_WRITE.
Referenced by scop_get_may_writes(), and subtract_commutative_associative_deps().
|
inlinestatic |
The number of parameters of the scop of PDR.
References pdr_scop(), and scop_nb_params().
|
inlinestatic |
The dimension in PDR containing parameter PARAM.
References pbb_dim_iter_domain().
|
inlinestatic |
Returns true when PDR is a "read".
References PDR_READ.
Referenced by scop_get_reads(), and subtract_commutative_associative_deps().
Referenced by pdr_nb_params().
|
inlinestatic |
The scop that contains the PDR.
|
inlinestatic |
The dimension in PDR containing subscript S.
References pbb_dim_iter_domain(), and pbb_nb_params().
|
inlinestatic |
Returns true when PDR is a "write".
References PDR_WRITE.
Referenced by scop_get_must_writes(), and subtract_commutative_associative_deps().
|
inlinestatic |
Copies S and return a new scattering.
References poly_scattering::nb_local_variables, poly_scattering::nb_scattering, and poly_scattering_new().
|
inlinestatic |
Free a poly_scattering structure.
References free().
|
inlinestatic |
Allocates a new empty poly_scattering structure.
References poly_scattering::nb_local_variables, and poly_scattering::nb_scattering.
Referenced by poly_scattering_copy().
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 pbb_dim_iter_domain(), and pbb_nb_scattering_orig().
|
inlinestatic |
The dimension in the original scattering polyhedron of PBB containing parameter PARAM.
References pbb_dim_iter_domain(), pbb_nb_params(), and pbb_nb_scattering_orig().
|
inlinestatic |
The dimension in the original scattering polyhedron of PBB containing the scattering iterator SCATTER.
References 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.
References pbb_nb_scattering_transform().
Referenced by lst_do_strip_mine_loop(), lst_niter_for_loop(), pbb_interchange_loop_depths(), pdr_stride_in_loop(), and reverse_loop_at_level().
|
inlinestatic |
The dimension in the transformed scattering polyhedron of PBB containing the loop iterator ITER.
References pbb_dim_iter_domain(), pbb_nb_local_vars(), and pbb_nb_scattering_transform().
|
inlinestatic |
The dimension in the transformed scattering polyhedron of PBB of the local variable LV.
References pbb_nb_local_vars(), and pbb_nb_scattering_transform().
|
inlinestatic |
The dimension in the transformed scattering polyhedron of PBB containing parameter PARAM.
References pbb_dim_iter_domain(), pbb_nb_local_vars(), pbb_nb_params(), and pbb_nb_scattering_transform().
|
inlinestatic |
The dimension in the transformed scattering polyhedron of PBB containing the scattering iterator SCATTER.
References pbb_nb_scattering_transform().
|
inlinestatic |
The scattering dimension of PBB corresponding to the static sequence of the loop level LEVEL.
References pbb_nb_scattering_transform().
Referenced by pbb_update_scattering().
|
inlinestatic |
Restores the SCOP_TRANSFORMED_SCHEDULE from SCOP_SAVED_SCHEDULE.
References copy_lst(), and free_lst().
Referenced by restore_scattering().
|
inlinestatic |
Restores the scattering for all the pbbs in the SCOP.
References restore_lst_schedule(), and restore_scattering_pbb().
Referenced by scop_do_block().
|
inlinestatic |
Restores the scattering of PBB.
References poly_bb::saved, and poly_bb::transformed.
Referenced by restore_scattering().
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.
void schedule_to_scattering | ( | poly_bb_p | , |
int | |||
) |
bool scop_do_block | ( | scop_p | ) |
int scop_do_interchange | ( | scop_p | ) |
int scop_do_strip_mine | ( | scop_p | , |
int | |||
) |
int scop_max_loop_depth | ( | scop_p | ) |
|
inlinestatic |
|
inlinestatic |
Returns the number of parameters for SCOP.
References scop::nb_params.
|
inlinestatic |
Set the number of params of SCOP to NB_PARAMS.
References scop::nb_params.
Referenced by find_scop_parameters().
|
inlinestatic |
void scop_to_lst | ( | scop_p | ) |
|
inlinestatic |
Stores the SCOP_TRANSFORMED_SCHEDULE to SCOP_SAVED_SCHEDULE.
References copy_lst(), and free_lst().
Referenced by store_scattering().
|
inlinestatic |
Saves the scattering for all the pbbs in the SCOP.
References store_lst_schedule(), and store_scattering_pbb().
Referenced by scop_do_block().
|
inlinestatic |
Saves the transformed scattering of PBB.
References poly_bb::saved, and poly_bb::transformed.
Referenced by store_scattering().
int unify_scattering_dimensions | ( | scop_p | ) |