diff options
author | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-08-28 20:40:59 +0000 |
---|---|---|
committer | spop <spop@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-08-28 20:40:59 +0000 |
commit | 11b2102e59b93c1ed672c312d6f40ecc7382d3db (patch) | |
tree | f4bc77546493208666cd3b4afa7a90ecb6195f6a /gcc/graphite-interchange.c | |
parent | d0aaf3990d011abe5d7c65905f240a60d2fdccb6 (diff) | |
download | gcc-11b2102e59b93c1ed672c312d6f40ecc7382d3db.tar.gz |
2009-08-28 Sebastian Pop <sebastian.pop@amd.com>
* graphite-interchange.c (pbb_interchange_profitable_p): Adjust
the strides by multiplying by PDR_NB_REFS.
* graphite-poly.c (can_collapse_pdr): New.
(pdr_find_duplicate): New.
(new_poly_dr): Call pdr_find_duplicate. Collapse duplicate PDRs.
Initialize PDR_NB_REFS.
* graphite-poly.h (struct poly_dr): Add field nb_refs.
(PDR_NB_REFS): New.
(new_poly_dr): Number of subscripts is a graphite_dim_t.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151191 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/graphite-interchange.c')
-rw-r--r-- | gcc/graphite-interchange.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c index bf944c80f20..0a751d6336e 100644 --- a/gcc/graphite-interchange.c +++ b/gcc/graphite-interchange.c @@ -244,7 +244,7 @@ pbb_interchange_profitable_p (graphite_dim_t depth1, graphite_dim_t depth2, { int i; poly_dr_p pdr; - Value d1, d2, s; + Value d1, d2, s, n; bool res; gcc_assert (depth1 < depth2); @@ -254,13 +254,18 @@ pbb_interchange_profitable_p (graphite_dim_t depth1, graphite_dim_t depth2, value_init (d2); value_set_si (d2, 0); value_init (s); + value_init (n); for (i = 0; VEC_iterate (poly_dr_p, PBB_DRS (pbb), i, pdr); i++) { + value_set_si (n, PDR_NB_REFS (pdr)); + memory_stride_in_loop (s, depth1, pdr); + value_multiply (s, s, n); value_addto (d1, d1, s); memory_stride_in_loop (s, depth2, pdr); + value_multiply (s, s, n); value_addto (d2, d2, s); } @@ -269,6 +274,7 @@ pbb_interchange_profitable_p (graphite_dim_t depth1, graphite_dim_t depth2, value_clear (d1); value_clear (d2); value_clear (s); + value_clear (n); return res; } |