On Fri, Aug 27, 2021 at 10:21:35AM -0500, Bill Schmidt via Gcc-patches wrote: > On 8/23/21 2:03 PM, Paul A. Clarke wrote: > > Function signatures and decorations match gcc/config/i386/smmintrin.h.
> > gcc > > * config/rs6000/nmmintrin.h: Copy from i386, tweak to suit. > > --- > > v3: > > - Add nmmintrin.h. _mm_cmpgt_epi64 is part of SSE4.2, which is > > ostensibly defined in nmmintrin.h. Following the i386 implementation, > > however, nmmintrin.h only includes smmintrin.h, and the actual > > implementations appear there. > > v2: > > - Added "extern" to functions to maintain compatible decorations with > > like implementations in gcc/config/i386. > > diff --git a/gcc/config/rs6000/nmmintrin.h b/gcc/config/rs6000/nmmintrin.h > > new file mode 100644 > > index 000000000000..20a70bee3776 > > --- /dev/null > > +++ b/gcc/config/rs6000/nmmintrin.h > > @@ -0,0 +1,40 @@ > > +/* Copyright (C) 2021 Free Software Foundation, Inc. > > + > > + This file is part of GCC. > > + > > + GCC is free software; you can redistribute it and/or modify > > + it under the terms of the GNU General Public License as published by > > + the Free Software Foundation; either version 3, or (at your option) > > + any later version. > > + > > + GCC is distributed in the hope that it will be useful, > > + but WITHOUT ANY WARRANTY; without even the implied warranty of > > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > + GNU General Public License for more details. > > + > > + Under Section 7 of GPL version 3, you are granted additional > > + permissions described in the GCC Runtime Library Exception, version > > + 3.1, as published by the Free Software Foundation. > > + > > + You should have received a copy of the GNU General Public License and > > + a copy of the GCC Runtime Library Exception along with this program; > > + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see > > + <http://www.gnu.org/licenses/>. */ > > + > > +#ifndef NO_WARN_X86_INTRINSICS > > +/* This header is distributed to simplify porting x86_64 code that > > + makes explicit use of Intel intrinsics to powerpc64le. > > + It is the user's responsibility to determine if the results are > > + acceptable and make additional changes as necessary. > > + Note that much code that uses Intel intrinsics can be rewritten in > > + standard C or GNU C extensions, which are more portable and better > > + optimized across multiple targets. */ > > +#endif > > + > > +#ifndef _NMMINTRIN_H_INCLUDED > > +#define _NMMINTRIN_H_INCLUDED > > + > > +/* We just include SSE4.1 header file. */ > > +#include <smmintrin.h> > > + > > +#endif /* _NMMINTRIN_H_INCLUDED */ > > Should there be something in here indicating that nmmintrin.h is for SSE > 4.2? Otherwise it's a bit of a head-scratcher to a new person wondering why > this file exists. No big deal either way. For good or bad, I have been trying to minimize differences with the analogous i386 files. With the exception of the copyright and our annoying litte warning, the only difference was this comment: -- /* Implemented from the specification included in the Intel C++ Compiler User Guide and Reference, version 10.0. */ -- I didn't find that (1) accurate, since there are no implementations therein, or (2) particularly informative, as I imagine that document has a much bigger scope than SSE4.2. And keeping it would be a bit misleading, I think. So, I intentionally removed the comment. > This looks fine to me with or without that. Recommend approval. Thanks for the review! PC