http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49363

--- Comment #18 from Sriraman Tallam <tmsriram at google dot com> 2012-05-10 
16:48:45 UTC ---
On Thu, May 10, 2012 at 3:16 AM, vincenzo.innocente at cern dot ch
<gcc-bugzi...@gcc.gnu.org> wrote:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49363
>
> --- Comment #17 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 
> 2012-05-10 10:16:13 UTC ---
> I tested this
>
> float x[1024], y[1024], z[1024], w[1024];
>
> void foo() {
>  for (int i=0; i!=1024; ++i)
>     x[i]=y[i]*z[i]+w[i];
> }
>
>
> void __attribute__ ((target("arch=corei7"))) foo() {
>  for (int i=0; i!=1024; ++i)
>     x[i]=y[i]*z[i]+w[i];
> }
>
> void __attribute__ ((target("avx"))) foo() {
>  for (int i=0; i!=1024; ++i)
>     x[i]=y[i]*z[i]+w[i];
> }
>
>
> and see the three versions generated  + the "resolver".
>
> As you notice the source code is identical as I'm exploiting compiler
> autovectorization here.
> In this case I was hoping that a single declaration such as  __attribute__
> ((target("arch=corei7,avx")))
> or  __attribute__ ((target("arch=corei7),target("avx"))) would generate the 
> two
> versions w/o hang to duplicate the source code.
> Is this possible to support?

Yes, this is on the list of things to add. The front-end should clone
the bodies and tag the attributes appropriately.

Thanks,
-Sri,


>
> --
> Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email
> ------- You are receiving this mail because: -------
> You are on the CC list for the bug.

Reply via email to