diff mbox

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

Message ID 20151015144739.GB2191@msticlxl57.ims.intel.com
State New
Headers show

Commit Message

Kirill Yukhin Oct. 15, 2015, 2:47 p.m. UTC
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.

Comments

Kirill Yukhin Oct. 22, 2015, 11:51 a.m. UTC | #1
Hello,
On 15 Oct 17:47, Kirill Yukhin wrote:
> 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.
Ping?

--
Thanks, K
Joseph Myers Oct. 22, 2015, 12:48 p.m. UTC | #2
On Thu, 22 Oct 2015, Kirill Yukhin wrote:

> Ping?

You need to update this patch to take account of Marek's fix for bug 67964 
(it was because I was suspicious of the "continue;" in this patch 
accepting invalid syntax that I found that bug), retest and resubmit.
diff mbox

Patch

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