Dorit Nuzman/Haifa/IBM wrote on 18/02/2008 09:40:37:

> Thanks a lot for tracking down / opening the relevant PRs.
>
> about:
>
> > > (6) loop distribution is required to break a dependence. This may
> > > already be handled by Sebastian's loop-distribution pass that will
> > > be incorporated in 4.4.
> > > Here is an example:
> > >  for (i__ = 2; i__ <= i__2; ++i__)
> > >         {
> > >           a[i__] += c__[i__] * d__[i__];
> > >           b[i__] = a[i__] + d__[i__] + b[i__ - 1];
> > >         }
> > > This happens in the loop in line 2136.
> > > Need to check if we need to open a missed optimization PR for this.
> >
> > I don't think that this is a loop distribution issue. The dependence
> > between the store to a[i] and the load from a[i] doesn't prevent
> > vectorization.
>
> right,
>
> > The problematic one is between the store to b[i] and
> > the load from b[i-1] in the second statement.
>
> ...which is exactly why loop distribution could make this loop
> (partially) vectorizable - separating the first and second
> statements into separate loops would allow vectorizing the first of
> the two resulting loops (which is probably what icc does - icc
> reports that this loop is partially vectrizable).

Yes, I see now.
I applied Sebastian's patch (
http://gcc.gnu.org/ml/gcc-patches/2007-12/msg00215.html) and got
"FIXME: Loop 1 not distributed: failed to build the RDG."

Ira

>
> dorit
>

Reply via email to