From 92d236802c2627840591e08c522c3abe6e63ff70 Mon Sep 17 00:00:00 2001 From: Sebastian Pop Date: Tue, 25 Jan 2011 06:45:04 +0000 Subject: [PATCH] Test the profitability of interchange on the perfect nest. 2011-01-25 Sebastian Pop * 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 --- gcc/ChangeLog | 7 +++++++ gcc/ChangeLog.graphite | 7 +++++++ gcc/graphite-interchange.c | 16 +++++++--------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 233f1b6d3c6..8d13d2ce072 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-01-25 Sebastian Pop + + * 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. + 2011-01-25 Sebastian Pop * graphite-dependences.c (print_pddr): Call diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 2dd40cc0649..2363df68697 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,3 +1,10 @@ +2011-01-15 Sebastian Pop + + * 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. + 2011-01-15 Sebastian Pop * graphite-dependences.c (print_pddr): Call diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c index b90c4e77c22..934839aace0 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 -- 2.30.2