Re: Auto-vectorization of if-conversion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




Fahimeh Yazdanpanah <fahim_yazdan@xxxxxxxxx> wrote on 07/12/2009 13:11:20:

> Fahimeh Yazdanpanah <fahim_yazdan@xxxxxxxxx>
> 07/12/2009 13:11
>
> To
>
> Ira Rosen/Haifa/IBM@IBMIL
>
> cc
>
> gcc-help@xxxxxxxxxxx
>
> Subject
>
> Re: Auto-vectorization of if-conversion
>
> Hello Ira,
>
> Thank you for your attention.
>
> But in the loop you modified, there was an other problem to prevent
> vectorization : unhandeled data refrences for bb and cc. (The
> compiler can not access to bb and cc for several items at the same
times).
>
> Would you please guide me to solve this?

It gets vectorized for me with current mainline (and also 4.3) on
x86_64-suse-linux with -O2 -ftree-vectorize.

Ira

>
> Thanks in advance,
> Best regards,
> Fahimeh
>
> --- On Sun, 12/6/09, Ira Rosen <IRAR@xxxxxxxxxx> wrote:
>
>
> From: Ira Rosen <IRAR@xxxxxxxxxx>
> Subject: Re: Auto-vectorization of if-conversion
> To: "Fahimeh Yazdanpanah" <fahim_yazdan@xxxxxxxxx>
> Cc: gcc-help@xxxxxxxxxxx
> Date: Sunday, December 6, 2009, 7:38 AM
>
>
>
>
> gcc-help-owner@xxxxxxxxxxx wrote on 03/12/2009 17:16:42:
>
> > Fahimeh Yazdanpanah <fahim_yazdan@xxxxxxxxx>
> > Sent by: gcc-help-owner@xxxxxxxxxxx
> >
> > 03/12/2009 17:16
> >
> > To
> >
> > gcc-help@xxxxxxxxxxx
> >
> > cc
> >
> > Subject
> >
> > Auto-vectorization of if-conversion
> >
> > Hello,
> >
> > I am trying to vectorize this loop with gcc-4.4.2 under 64-bit
> linuxubuntu :
> >
> >  for (i = 0; i < 1024; i++)
> >          d[i] = (a[i] > 0 ? b[i] : c[i]);
> >
> > but it is not vectorized. For compiling that, I use these flags:
> > gcc -O3  -fprefetch-loop-arrays  -lstdc++  -ftree-vectorize -ftree-
> > vectorizer-verbose=2 -ffast-math -mfpmath=sse -march=core2
> >
> > according to http://gcc.gnu.org/projects/tree-ssa/vectorization.html
> > , it must be vectorized. Would you please tell me what I do wrong?
>
> The if-conversion pass fails here because of speculative loads of b and
c.
> Taking the loads outside of condition allows if-conversion and makes the
> loop vectorizable:
>
>   for (i = 0; i < 1024; i++)
>     {
>       bb = b[i];
>       cc = c[i];
>       d[i] = (a[i] > 0 ? bb : cc);
>     }
>
> Ira
>
> >
> > Thanks in advance,
> > Best regards,
> > Fahimeh
> >
> >
> >
> >
>
>
>
>
>



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux