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



Richard Biener <rguenth at gcc dot gnu.org> changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|UNCONFIRMED                 |NEW

   Last reconfirmed|                            |2012-10-19

     Ever Confirmed|0                           |1



--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2012-10-19 
08:45:27 UTC ---

Note that the Cilk+ people have something like this in mind (with an

'elemental' attribute).  The ABI (and thus the mangling) would be static,

thus C++ overloading would not work (but the vectorized function name

would be constructed similar to those of the intrinsics for -mveclibabi).

To adjust your example:



double fx (double) __attribute__((vector));



would tell GCC that a function named (for example) fx_v2df is available,

as well as a function named fx_v4df in case AVX is enabled (and a gazillion

more variants dependent on the target capabilities ...).



Another proposal was that GCC builds those variants itself as needed

(obviously only if it can see the function body).  This is what Cilk+

people designed:



double fx (double x) __attribute__((elemental))

{

  ...

}



would mean the function has to be necessarily 'const' (the return value

is only dependent on arguments, it does not read from memory or has

any side-effects) and the compiler can substitute all double types by

appropriate vector types.

Reply via email to