This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Variable Expansion Optimization
- From: Ayal Zaks <ZAKS at il dot ibm dot com>
- To: Michael Matz <matz at suse dot de>
- Cc: gcc at gcc dot gnu dot org, Mircea Namolaru <NAMOLARU at il dot ibm dot com>, Revital Eres <ERES at il dot ibm dot com>, Steven Bosscher <stevenb at suse dot de>
- Date: Mon, 16 Aug 2004 16:19:31 +0300
- Subject: Re: Variable Expansion Optimization
Michael Matz <matz@suse.de> wrote on 16/08/2004 14:14:13:
> Hi,
>
> On Mon, 16 Aug 2004, Steven Bosscher wrote:
>
> > > On Sun, 15 Aug 2004, Steven Bosscher wrote:
> > > > Hmm, I guess you're going to have carefully analyze what the
> > > > effects of such a transformation are on register pressure.
> > >
> > > Yes. But note that this transformation mainly helps an
autovectorizer.
> >
> > Not in this case, it doesn't. The current proposal is to do this
> > transformation on RTL.
>
> Indeed. I misread the intention. So it really is just useful for
> breaking dependencies over multiple iterations. That would need even
more
> careful heuristics to not pessimize code, especially on ooo processors
> where a little better scheduling can be more than offset by register
> pressure and spills.
Note that even if/when/where the autovectorizer breaks one accumulator into
a vector of accumulators, subsequent loop unrolling can parallelize the
accumulation further into several accumulator-vectors. The execution of
some loops is constrained (only) by such true-dependence cycles, which ooo
cannot remedy. All this should be done (not over-done), of-course, without
causing register spills.
Ayal.