This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] Loop distribution for single nested loops
- From: "Richard Guenther" <richard dot guenther at gmail dot com>
- To: "Sebastian Pop" <sebpop at gmail dot com>
- Cc: "Diego Novillo" <dnovillo at google dot com>, "Dorit Nuzman" <DORIT at il dot ibm dot com>, "GCC Patches" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 5 Dec 2007 21:53:22 +0100
- Subject: Re: [patch] Loop distribution for single nested loops
- References: <cb9d34b20709121139u576b817djbd49dad9dd79eabd@mail.gmail.com> <A9459F5F-CF54-451B-965F-E2657FBEC1E2@google.com> <cb9d34b20712051227yd854bddqb8262daff0a139f8@mail.gmail.com>
On Dec 5, 2007 9:27 PM, Sebastian Pop <sebpop@gmail.com> wrote:
> On Oct 3, 2007 6:49 AM, Diego Novillo <dnovillo@google.com> wrote:
> > I like this pass. Would it make sense to enable this pass by
> > default? Or enable it only with the vectorizer/parallelizer? I
> > think this is something we could at least enable at -O3.
> >
>
> I've also implemented a cost function for the loop distribution: it
> aggregates the components containing read or write accesses to
> similar memory, that otherwise would end in different loops. I don't
> know yet the performance impact of the loop distribution on real code,
> but I'll give a run on spec2006, and then send out the numbers.
> During the build of gcc there are 44 loops distributed. The usual
> pattern is the distribution of different arrays initialization.
>
> For counting the number of distributed loops, I've left in the attached
> patch a if (0 && ...) that allows you to print to stdout the distributed
> cases if you remove the 0. I will not include that part in a commit.
>
> > Before comitting the pass, I think it would be very useful to
> > enable it by default at -O2 and do a full bootstrap/test cycle,
> > that will help you shake the most obvious bugs.
> >
>
> I've bootstrap/test the attached patch with the loop distribution
> enabled by default at -O2 on {i686,amd64}-linux. There are a huge
> number of tests that fail in the vectorization part, as the loop
> distribution modifies the patterns that the vectorizer expects to see.
> Some nice examples include the vectorization of unaligned stores,
> something that we expected to see ;-). See below for the complete
> list of autovect fails.
>
> The attached patch passed bootstrap and test on both i686-linux and
> amd64-linux. Okay for trunk?
I don't think this is appropriate for mainline at this point. Absolutely not
if enabled by default.
Richard.