[PATCH] Merging Cilk Plus into Trunk (Patch 1 of approximately 22)

Jakub Jelinek jakub@redhat.com
Tue Sep 11 09:09:00 GMT 2012


On Tue, Sep 11, 2012 at 03:57:44AM -0500, Gabriel Dos Reis wrote:
> On Tue, Sep 11, 2012 at 3:42 AM, Richard Guenther
> <richard.guenther@gmail.com> wrote:
> 
> > Btw, this then happily fits into my suggestion that the "elementalness"
> > can be autodetected by the compiler simply by means of a proper IPA
> > pass and thus be fully LTO / whole-program aware.  No need for an
> > attribute (where you'd need to handle the case that the attribute was placed
> > there by error).
> 
> We are in violent agreement.

For locally defined functions sure, the question is if we want the attribute
to be something for external functions.  Something that would have ABI
implications (the external symbol would need to be provided in two forms (or
more?), one scalar with normal mangling, one vector with some other kind
of mangling/suffix/whatever), when compiling the definition of function with
such an attribute the compiler could verify its properties (i.e. autodetect
and if it is not autodetected elemental, complain?), and when using extern
function just rely on it being provided twice.  Even with LTO, the function
can be defined in some other shared library etc.

Nothing says the implementation of the vector version of the elemental
function necessary has to be vectorized, just that the arguments would need
to be passed in the expected vector registers, similarly for return value.
Say if the elemental function is compiled with -O0, then there could just be
a loop executing the scalar body several times and creating vectors.

	Jakub



More information about the Gcc-patches mailing list