[PATCH, VECTOR ABI] Add __attribute__((__simd__)) to GCC.

Kirill Yukhin kirill.yukhin@gmail.com
Thu Oct 15 14:48:00 GMT 2015


Hi Jakub,
On 15 Oct 16:39, Jakub Jelinek wrote:
> On Thu, Oct 15, 2015 at 05:33:32PM +0300, Kirill Yukhin wrote:
> > --- a/gcc/doc/extend.texi
> > +++ b/gcc/doc/extend.texi
> > @@ -3066,6 +3066,20 @@ This function attribute make a stack protection of the function if
> >  flags @option{fstack-protector} or @option{fstack-protector-strong}
> >  or @option{fstack-protector-explicit} are set.
> >  
> > +@item simd
> > +@cindex @code{simd} function attribute.
> > +This attribute enables creation of one or more function versions that
> > +can process multiple arguments using SIMD instructions from a
> > +single invocation.  Specifying this attribute allows compiler to
> > +assume that such a versions are available at link time (provided
> > +in the same or another translation unit).  Generated versions are
> > +target dependent and described in corresponding Vector ABI document.  For
> > +x86_64 target this document can be found
> > +@w{@uref{https://sourceware.org/glibc/wiki/libmvec?action=AttachFile&do=view&target=VectorABI.txt,here}}.
> > +It is prohibited to use the attribute along with Cilk Plus's @code{vector}
> > +attribute. If the attribute is specified and @code{#pragma omp declare simd}
> > +presented on a declaration, then the attribute is ignored.
> 
> Is that what is implemented?  I mean, isn't the argument ignored only
> if #pragma omp declare simd is present and -fopenmp or -fopenmp-simd
> passed on the command line, because otherwise the pragma is ignored?
You're right. The attribute is ignored if `pragma omp declare simd' is
got in charge. Which happens only if -fopenmp or -fopenmp-simd is
are passed. 
Updated hunk for doc/extend.texi is in the bottom.

> 
> 	Jakub

--
Thanks, K

$ git show
commit ffda5e84f2b79a28f4104b1eda2df0f907821ec0
Author: Kirill Yukhin <kirill.yukhin@intel.com>
Date:   Thu Oct 15 17:10:53 2015 +0300

    [vector-attr] Add documentation.

diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 79440d3..d9463d8 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -3066,6 +3066,21 @@ This function attribute make a stack protection of the function if
 flags @option{fstack-protector} or @option{fstack-protector-strong}
 or @option{fstack-protector-explicit} are set.

+@item simd
+@cindex @code{simd} function attribute.
+This attribute enables creation of one or more function versions that
+can process multiple arguments using SIMD instructions from a
+single invocation.  Specifying this attribute allows compiler to
+assume that such a versions are available at link time (provided
+in the same or another translation unit).  Generated versions are
+target dependent and described in corresponding Vector ABI document.  For
+x86_64 target this document can be found
+@w{@uref{https://sourceware.org/glibc/wiki/libmvec?action=AttachFile&do=view&target=VectorABI.txt,here}}.
+It is prohibited to use the attribute along with Cilk Plus's @code{vector}
+attribute. If the attribute is specified and @code{#pragma omp declare simd}
+presented on a declaration and @code{-fopenmp} or @code{-fopenmp-simd}
+switch is specified, then the attribute is ignored.
+
 @item target (@var{options})
 @cindex @code{target} function attribute
 Multiple target back ends implement the @code{target} attribute



More information about the Gcc-patches mailing list