GCC Middle and Back End API Reference
graphite-poly.h File 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_drpoly_dr_p
typedef struct poly_bbpoly_bb_p
typedef struct scopscop_p
typedef unsigned graphite_dim_t
typedef struct poly_scatteringpoly_scattering_p
typedef struct lstlst_p

Enumerations

enum  poly_dr_type { PDR_READ, PDR_WRITE, PDR_MAY_WRITE }

Functions

static graphite_dim_t pbb_dim_iter_domain (const struct poly_bb *)
static graphite_dim_t pbb_nb_params (const struct poly_bb *)
static graphite_dim_t scop_nb_params (scop_p)
void new_poly_dr (poly_bb_p, int, enum poly_dr_type, void *, graphite_dim_t, isl_map *, isl_set *)
void free_poly_dr (poly_dr_p)
void debug_pdr (poly_dr_p, int)
void print_pdr (FILE *, poly_dr_p, int)
static scop_p pdr_scop (poly_dr_p pdr)
static graphite_dim_t pdr_dim_iter_domain ()
static graphite_dim_t pdr_nb_params ()
static graphite_dim_t pdr_alias_set_dim ()
static graphite_dim_t pdr_subscript_dim ()
static graphite_dim_t pdr_iterator_dim ()
static graphite_dim_t pdr_parameter_dim ()
static bool pdr_read_p ()
static bool pdr_write_p ()
static bool pdr_may_write_p ()
static bool same_pdr_p ()
poly_bb_p new_poly_bb (scop_p, void *)
void free_poly_bb (poly_bb_p)
void debug_loop_vec (poly_bb_p)
void schedule_to_scattering (poly_bb_p, int)
void print_pbb_domain (FILE *, poly_bb_p, int)
void print_pbb (FILE *, poly_bb_p, int)
void print_scop_context (FILE *, scop_p, int)
void print_scop (FILE *, scop_p, int)
void print_cloog (FILE *, scop_p, int)
void debug_pbb_domain (poly_bb_p, int)
void debug_pbb (poly_bb_p, int)
void print_pdrs (FILE *, poly_bb_p, int)
void debug_pdrs (poly_bb_p, int)
void debug_scop_context (scop_p, int)
void debug_scop (scop_p, int)
void debug_cloog (scop_p, int)
void print_scop_params (FILE *, scop_p, int)
void debug_scop_params (scop_p, int)
void print_iteration_domain (FILE *, poly_bb_p, int)
void print_iteration_domains (FILE *, scop_p, int)
void debug_iteration_domain (poly_bb_p, int)
void debug_iteration_domains (scop_p, int)
void print_isl_set (FILE *, isl_set *)
void print_isl_map (FILE *, isl_map *)
void print_isl_aff (FILE *, isl_aff *)
void print_isl_constraint (FILE *, isl_constraint *)
void debug_isl_set (isl_set *)
void debug_isl_map (isl_map *)
void debug_isl_aff (isl_aff *)
void debug_isl_constraint (isl_constraint *)
int scop_do_interchange (scop_p)
int scop_do_strip_mine (scop_p, int)
bool scop_do_block (scop_p)
bool flatten_all_loops (scop_p)
bool optimize_isl (scop_p)
void pbb_number_of_iterations_at_time (poly_bb_p, graphite_dim_t, mpz_t)
void debug_gmp_value (mpz_t)
static int number_of_write_pdrs ()
static gimple_bb_p gbb_from_bb ()
static poly_bb_p pbb_from_bb ()
static basic_block pbb_bb ()
static int pbb_index ()
static loop_p pbb_loop ()
static scop_p pdr_scop ()
static void pbb_set_black_box ()
static graphite_dim_t pbb_dim_iter_domain ()
static graphite_dim_t pbb_nb_params ()
static graphite_dim_t pbb_nb_scattering_orig ()
static graphite_dim_t pbb_nb_scattering_transform ()
static graphite_dim_t pbb_nb_dynamic_scattering_transform ()
static graphite_dim_t pbb_nb_local_vars ()
static graphite_dim_t pbb_iterator_dim ()
static graphite_dim_t pbb_parameter_dim ()
static graphite_dim_t psco_scattering_dim ()
static graphite_dim_t psct_scattering_dim ()
static graphite_dim_t psct_local_var_dim ()
static graphite_dim_t psco_iterator_dim ()
static graphite_dim_t psct_iterator_dim ()
static graphite_dim_t psco_parameter_dim ()
static graphite_dim_t psct_parameter_dim ()
static graphite_dim_t psct_dynamic_dim ()
static graphite_dim_t psct_static_dim ()
static graphite_dim_t psct_add_local_variable ()
void scop_to_lst (scop_p)
void print_lst (FILE *, lst_p, int)
void debug_lst (lst_p)
void dot_lst (lst_p)
static lst_p new_lst_loop ()
static lst_p new_lst_stmt ()
static void free_lst ()
static lst_p copy_lst ()
static void lst_add_loop_under_loop ()
static int lst_depth ()
static int lst_dewey_number ()
static int lst_dewey_number_at_depth ()
static lst_p lst_pred ()
static lst_p lst_succ ()
static lst_p lst_find_pbb ()
static lst_p find_lst_loop ()
static lst_p lst_find_first_pbb ()
static bool lst_empty_p ()
static lst_p lst_find_last_pbb ()
static bool lst_contains_p ()
static bool lst_contains_pbb ()
static lst_p lst_create_nest ()
static void lst_remove_from_sequence ()
static void lst_remove_loop_and_inline_stmts_in_loop_father ()
static void lst_niter_for_loop ()
static void pbb_update_scattering ()
static void lst_update_scattering_under ()
static void lst_update_scattering ()
static void lst_insert_in_sequence ()
static void lst_replace ()
static lst_p lst_substitute_3 ()
static void lst_distribute_lst ()
static bool lst_remove_all_before_including_pbb ()
static bool lst_remove_all_before_excluding_pbb ()
scop_p new_scop (void *)
void free_scop (scop_p)
void free_scops (vec< scop_p >)
void print_generated_program (FILE *, scop_p)
void debug_generated_program (scop_p)
void print_scattering_function (FILE *, poly_bb_p, int)
void print_scattering_functions (FILE *, scop_p, int)
void debug_scattering_function (poly_bb_p, int)
void debug_scattering_functions (scop_p, int)
int scop_max_loop_depth (scop_p)
int unify_scattering_dimensions (scop_p)
bool apply_poly_transforms (scop_p)
bool graphite_legal_transform (scop_p)
void cloog_checksum (scop_p)
static void scop_set_region ()
static graphite_dim_t scop_nb_params ()
static void scop_set_nb_params ()
static poly_scattering_p poly_scattering_new ()
static void poly_scattering_free ()
static poly_scattering_p poly_scattering_copy ()
static void store_scattering_pbb ()
static void store_lst_schedule ()
static void restore_lst_schedule ()
static void store_scattering ()
static void restore_scattering_pbb ()
static void restore_scattering ()
isl_map * reverse_loop_at_level (poly_bb_p, int)
isl_union_map * reverse_loop_for_pbbs (scop_p, vec< poly_bb_p >, int)
__isl_give isl_union_map * extend_schedule (__isl_take isl_union_map *)
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)

Macro Definition Documentation

#define LST_LOOP_FATHER (   LST)    ((LST)->loop_father)
#define LST_LOOP_MEMORY_STRIDES (   LST)    ((LST)->memory_strides)
#define LST_LOOP_P (   LST)    ((LST)->loop_p)
#define LST_PBB (   LST)    ((LST)->node.pbb)

Referenced by lst_dewey_number(), and lst_replace().

#define LST_SEQ (   LST)    ((LST)->node.seq)
#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)
#define POLY_SCOP_P (   S)    (S->poly_scop_p)
#define SCOP_BBS (   S)    (S->bbs)
#define SCOP_CONTEXT (   S)    (NULL)
#define SCOP_ORIGINAL_SCHEDULE (   S)    (S->original_schedule)
#define SCOP_REGION (   S)    ((sese) S->region)
#define SCOP_SAVED_SCHEDULE (   S)    (S->saved_schedule)
#define SCOP_TRANSFORMED_SCHEDULE (   S)    (S->transformed_schedule)

Typedef Documentation

typedef unsigned graphite_dim_t
typedef struct lst* lst_p
typedef struct poly_bb* poly_bb_p
typedef struct poly_dr* poly_dr_p

Graphite polyhedral representation. Copyright (C) 2009-2013 Free Software Foundation, Inc. Contributed by Sebastian Pop sebas.nosp@m.tian.nosp@m..pop@.nosp@m.amd..nosp@m.com and Tobias Grosser gross.nosp@m.er@f.nosp@m.im.un.nosp@m.i-pa.nosp@m.ssau..nosp@m.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 scop* scop_p

Enumeration Type Documentation

A data reference can write or read some memory or we just know it may write some memory.

Enumerator:
PDR_READ 
PDR_WRITE 

PDR_MAY_READs are represented using PDR_READS. This does not limit the expressiveness.

PDR_MAY_WRITE 

Function Documentation

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 
)
static lst_p copy_lst ( )
inlinestatic
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 *  )
static lst_p find_lst_loop ( )
inlinestatic

Return the LST node corresponding to the loop around STMT at depth LOOP_DEPTH.

bool flatten_all_loops ( scop_p  )
static void free_lst ( )
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  )
void free_scops ( vec< scop_p )
static gimple_bb_p gbb_from_bb ( )
inlinestatic

Returns a gimple_bb from BB.

bool graphite_legal_transform ( scop_p  )
static void lst_add_loop_under_loop ( )
inlinestatic

Adds a new loop under the loop LST.

static bool lst_contains_p ( )
inlinestatic

Returns true if LOOP contains LST, in other words, if LST is nested in LOOP.

static bool lst_contains_pbb ( )
inlinestatic

Returns true if LOOP contains PBB, in other words, if PBB is nested in LOOP.

static lst_p lst_create_nest ( )
inlinestatic

Creates a loop nest of depth NB_LOOPS containing LST.

Referenced by lst_find_first_pbb().

static int lst_depth ( )
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().

static int lst_dewey_number ( )
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().

static int lst_dewey_number_at_depth ( )
inlinestatic

Returns the Dewey number of LST at depth DEPTH.

Referenced by copy_lst().

static void lst_distribute_lst ( )
inlinestatic

Moves LST before LOOP if BEFORE is true, and after the LOOP if BEFORE is false.

static bool lst_empty_p ( )
inlinestatic

Returns true when LST is a loop that does not contain statements.

Referenced by pbb_update_scattering().

static lst_p lst_find_first_pbb ( )
inlinestatic

Return the first LST representing a PBB statement in LST.

References lst_create_nest(), LST_LOOP_FATHER, and new_lst_loop().

static lst_p lst_find_last_pbb ( )
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().

static lst_p lst_find_pbb ( )
inlinestatic

Return the LST node corresponding to PBB.

References last, and lst_find_last_pbb().

Referenced by lst_dewey_number().

static void lst_insert_in_sequence ( )
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.

static void lst_niter_for_loop ( )
inlinestatic

Sets NITER to the upper bound approximation of the number of iterations of loop LST.

static lst_p lst_pred ( )
inlinestatic

Returns the predecessor of LST in the sequence of its loop father. Returns NULL if LST is the first statement in the sequence.

static bool lst_remove_all_before_excluding_pbb ( )
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.

static bool lst_remove_all_before_including_pbb ( )
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().

static void lst_remove_from_sequence ( )
inlinestatic

Removes LST from the sequence of statements of its loop father.

References lst_dewey_number(), and LST_LOOP_FATHER.

static void lst_remove_loop_and_inline_stmts_in_loop_father ( )
inlinestatic

Removes the loop LST and inline its body in the father loop.

static void lst_replace ( )
inlinestatic

Replaces LST1 with LST2.

References free_lst(), LST_PBB, and LST_SEQ.

static lst_p lst_substitute_3 ( )
inlinestatic

Returns a copy of ROOT where LST has been replaced by a copy of the LSTs A B C in this sequence.

static lst_p lst_succ ( )
inlinestatic

Returns the successor of LST in the sequence of its loop father. Returns NULL if there is none.

static void lst_update_scattering ( )
inlinestatic

Updates the all the scattering levels of all the PBBs under LST.

static void lst_update_scattering_under ( )
inlinestatic

Updates the scattering of all the PBBs under LST to be at the DEWEY number in the loop at depth LEVEL.

static lst_p new_lst_loop ( )
inlinestatic

Creates a new LST loop with SEQ.

Referenced by lst_find_first_pbb().

static lst_p new_lst_stmt ( )
inlinestatic

Creates a new LST statement with PBB.

poly_bb_p new_poly_bb ( scop_p  ,
void *   
)
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 *  )
static int number_of_write_pdrs ( )
inlinestatic

Return the number of write data references in PBB.

References GBB_BB, and PBB_BLACK_BOX.

bool optimize_isl ( scop_p  )
static basic_block pbb_bb ( )
inlinestatic

The basic block of the PBB.

References poly_bb::domain.

static graphite_dim_t pbb_dim_iter_domain ( )
inlinestatic

The number of loops around PBB: the dimension of the iteration domain.

static poly_bb_p pbb_from_bb ( )
inlinestatic

The poly_bb of the BB.

static int pbb_index ( )
inlinestatic

The index of the PBB.

References PBB_SCOP, and scop_nb_params().

static graphite_dim_t pbb_iterator_dim ( )
inlinestatic

The dimension in the domain of PBB containing the iterator ITER.

References gcc_assert, pbb_dim_iter_domain(), and pbb_nb_scattering_orig().

static loop_p pbb_loop ( )
inlinestatic

The loop of the PBB.

static graphite_dim_t pbb_nb_dynamic_scattering_transform ( )
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().

static graphite_dim_t pbb_nb_local_vars ( )
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().

static graphite_dim_t pbb_nb_params ( const struct poly_bb )
inlinestatic
static graphite_dim_t pbb_nb_params ( )
inlinestatic

The number of params defined in PBB.

static graphite_dim_t pbb_nb_scattering_orig ( )
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().

static graphite_dim_t pbb_nb_scattering_transform ( )
inlinestatic
void pbb_number_of_iterations_at_time ( poly_bb_p  ,
graphite_dim_t  ,
mpz_t   
)
static graphite_dim_t pbb_parameter_dim ( )
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().

static void pbb_set_black_box ( )
inlinestatic

Set black box of PBB to BLACKBOX.

References gcc_assert, and PBB_NB_SCATTERING_TRANSFORM.

static void pbb_update_scattering ( )
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.

static graphite_dim_t pdr_alias_set_dim ( )
inlinestatic

The dimension of the alias set in PDR.

static graphite_dim_t pdr_dim_iter_domain ( )
inlinestatic

The dimension of the iteration domain of the scop of PDR.

static graphite_dim_t pdr_iterator_dim ( )
inlinestatic

The dimension in PDR containing the loop iterator ITER.

References PDR_READ, and PDR_TYPE.

static bool pdr_may_write_p ( )
inlinestatic

Returns true when PDR is a "may write".

static graphite_dim_t pdr_nb_params ( )
inlinestatic

The number of parameters of the scop of PDR.

static graphite_dim_t pdr_parameter_dim ( )
inlinestatic

The dimension in PDR containing parameter PARAM.

References PDR_TYPE, and PDR_WRITE.

static bool pdr_read_p ( )
inlinestatic

Returns true when PDR is a "read".

References PDR_MAY_WRITE, and PDR_TYPE.

static scop_p pdr_scop ( poly_dr_p  pdr)
inlinestatic
static scop_p pdr_scop ( )
inlinestatic

The scop that contains the PDR.

static graphite_dim_t pdr_subscript_dim ( )
inlinestatic

The dimension in PDR containing subscript S.

References pbb_dim_iter_domain(), and PDR_PBB.

static bool pdr_write_p ( )
inlinestatic

Returns true when PDR is a "write".

References PDR_BASE_OBJECT_SET, and PDR_NB_SUBSCRIPTS.

static poly_scattering_p poly_scattering_copy ( )
inlinestatic

Copies S and return a new scattering.

static void poly_scattering_free ( )
inlinestatic

Free a poly_scattering structure.

static poly_scattering_p poly_scattering_new ( )
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   
)
static graphite_dim_t psco_iterator_dim ( )
inlinestatic

The dimension in the original scattering polyhedron of PBB containing the loop iterator ITER.

References gcc_assert, and pbb_nb_scattering_transform().

static graphite_dim_t psco_parameter_dim ( )
inlinestatic

The dimension in the original scattering polyhedron of PBB containing parameter PARAM.

References lst::loop_father, lst::loop_p, and lst::memory_strides.

static graphite_dim_t psco_scattering_dim ( )
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().

static graphite_dim_t psct_add_local_variable ( )
inlinestatic

Adds to the transformed scattering polyhedron of PBB a new local variable and returns its index.

static graphite_dim_t psct_dynamic_dim ( )
inlinestatic

The scattering dimension of PBB corresponding to the dynamic level LEVEL.

static graphite_dim_t psct_iterator_dim ( )
inlinestatic

The dimension in the transformed scattering polyhedron of PBB containing the loop iterator ITER.

static graphite_dim_t psct_local_var_dim ( )
inlinestatic

The dimension in the transformed scattering polyhedron of PBB of the local variable LV.

References gcc_assert, and pbb_nb_scattering_transform().

static graphite_dim_t psct_parameter_dim ( )
inlinestatic

The dimension in the transformed scattering polyhedron of PBB containing parameter PARAM.

References lst::pbb, and lst::seq.

static graphite_dim_t psct_scattering_dim ( )
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().

static graphite_dim_t psct_static_dim ( )
inlinestatic

The scattering dimension of PBB corresponding to the static sequence of the loop level LEVEL.

static void restore_lst_schedule ( )
inlinestatic

Restores the SCOP_TRANSFORMED_SCHEDULE from SCOP_SAVED_SCHEDULE.

static void restore_scattering ( )
inlinestatic

Restores the scattering for all the pbbs in the SCOP.

static void restore_scattering_pbb ( )
inlinestatic

Restores the scattering of PBB.

isl_map* reverse_loop_at_level ( poly_bb_p  ,
int   
)
isl_union_map* reverse_loop_for_pbbs ( scop_p  ,
vec< poly_bb_p ,
int   
)
static bool same_pdr_p ( )
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   
)
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  )
static graphite_dim_t scop_nb_params ( scop_p  )
inlinestatic

Referenced by pbb_index().

static graphite_dim_t scop_nb_params ( )
inlinestatic

Returns the number of parameters for SCOP.

static void scop_set_nb_params ( )
inlinestatic

Set the number of params of SCOP to NB_PARAMS.

static void scop_set_region ( )
inlinestatic

Set the region of SCOP to REGION.

void scop_to_lst ( scop_p  )
static void store_lst_schedule ( )
inlinestatic

Stores the SCOP_TRANSFORMED_SCHEDULE to SCOP_SAVED_SCHEDULE.

static void store_scattering ( )
inlinestatic

Saves the scattering for all the pbbs in the SCOP.

static void store_scattering_pbb ( )
inlinestatic

Saves the transformed scattering of PBB.

int unify_scattering_dimensions ( scop_p  )