diff options
author | Sebastian Pop <sebastian.pop@amd.com> | 2011-01-25 06:45:04 +0000 |
---|---|---|
committer | Sebastian Pop <spop@gcc.gnu.org> | 2011-01-25 06:45:04 +0000 |
commit | 92d236802c2627840591e08c522c3abe6e63ff70 (patch) | |
tree | 7fe78ae418b940d6266e911d1b01fdf12edfb407 /gcc/graphite-interchange.c | |
parent | 2f51defffd48a3d6411a4000e6f286d92eb5a711 (diff) | |
download | gcc-92d236802c2627840591e08c522c3abe6e63ff70.zip gcc-92d236802c2627840591e08c522c3abe6e63ff70.tar.gz gcc-92d236802c2627840591e08c522c3abe6e63ff70.tar.bz2 |
Test the profitability of interchange on the perfect nest.
2011-01-25 Sebastian Pop <sebastian.pop@amd.com>
* graphite-interchange.c (lst_interchange_profitable_p): Takes a loop
nest and two loop depths as parameters.
(lst_try_interchange_loops): Call lst_interchange_profitable_p after
lst_perfect_nestify.
From-SVN: r169201
Diffstat (limited to 'gcc/graphite-interchange.c')
-rw-r--r-- | gcc/graphite-interchange.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c index b90c4e7..934839a 100644 --- a/gcc/graphite-interchange.c +++ b/gcc/graphite-interchange.c @@ -446,20 +446,18 @@ memory_strides_in_loop (lst_p loop, graphite_dim_t depth, mpz_t strides) profitable to interchange the loops at DEPTH1 and DEPTH2. */ static bool -lst_interchange_profitable_p (lst_p loop1, lst_p loop2) +lst_interchange_profitable_p (lst_p nest, int depth1, int depth2) { mpz_t d1, d2; bool res; - gcc_assert (loop1 && loop2 - && LST_LOOP_P (loop1) && LST_LOOP_P (loop2) - && lst_depth (loop1) < lst_depth (loop2)); + gcc_assert (depth1 < depth2); mpz_init (d1); mpz_init (d2); - memory_strides_in_loop (loop1, lst_depth (loop1), d1); - memory_strides_in_loop (loop2, lst_depth (loop2), d2); + memory_strides_in_loop (nest, depth1, d1); + memory_strides_in_loop (nest, depth2, d2); res = mpz_cmp (d1, d2) < 0; @@ -592,12 +590,12 @@ lst_try_interchange_loops (scop_p scop, lst_p loop1, lst_p loop2) lst_p before = NULL, nest = NULL, after = NULL; - if (!lst_interchange_profitable_p (loop1, loop2)) - return false; - if (!lst_perfectly_nested_p (loop1, loop2)) lst_perfect_nestify (loop1, loop2, &before, &nest, &after); + if (!lst_interchange_profitable_p (loop2, depth1, depth2)) + return false; + lst_apply_interchange (loop2, depth1, depth2); /* Sync the transformed LST information and the PBB scatterings |