[PATCH] Enable GCC support for AVX512_VP2INTERSECT.

Hongtao Liu crazylht@gmail.com
Thu Jun 27 02:31:00 GMT 2019


On Wed, Jun 26, 2019 at 6:14 PM Rainer Orth <ro@cebitec.uni-bielefeld.de> wrote:
>
> Hi Hongtao,
>
> > Index: testsuite/lib/target-supports.exp
> > ===================================================================
> > --- testsuite/lib/target-supports.exp (revision 272667)
> > +++ testsuite/lib/target-supports.exp (working copy)
> > @@ -7963,6 +7963,20 @@
> >      } "-mavx512bw" ]
> >  }
> >
> > +# Return 1 if avx512vp2intersect instructions can be compiled.
> > +proc check_effective_target_avx512vp2intersect { } {
> > +    return [check_no_compiler_messages avx512vp2intersect object {
> > + typedef int __v16si __attribute__ ((__vector_size__ (64)));
> > + typedef short __mmask16;
> > + void
> > + _mm512_2intersect_epi32 (__v16si __A, __v16si __B, __mmask16 *__U,
> > + __mmask16 *__M)
> > + {
> > +     __builtin_ia32_2intersectd512 (__U, __M, (__v16si) __A, (__v16si) __B);
> > + }
> > +    } "-mavx512vp2intersect" ]
> > +}
> > +
> >  # Return 1 if avx512ifma instructions can be compiled.
> >  proc check_effective_target_avx512ifma { } {
> >      return [check_no_compiler_messages avx512ifma object {
>
> as usual, the new effective-target keyword needs documenting in
> sourcebuild.texi.
Like this?

Index: ChangeLog
===================================================================
--- ChangeLog (revision 272668)
+++ ChangeLog (working copy)
@@ -1,3 +1,8 @@
+2019-06-27  Hongtao Liu  <hongtao.liu@intel.com>
+
+ * doc/sourcebuild.texi: Document new effective target keyword
+ avx512vp2intersect.
+
 2019-06-25  Hongtao Liu  <hongtao.liu@intel.com>
      H.J. Lu  <hongjiu.lu@intel.com>
      Olga Makhotina  <olga.makhotina@intel.com>
Index: doc/sourcebuild.texi
===================================================================
--- doc/sourcebuild.texi (revision 272667)
+++ doc/sourcebuild.texi (working copy)
@@ -2046,6 +2046,9 @@
 @item avx512f_runtime
 Target supports the execution of @code{avx512f} instructions.

+@item avx512vp2intersect
+Target supports the execution of @code{avx512vp2intersect} instructions.
+
 @item cell_hw
 Test system can execute AltiVec and Cell PPU instructions.

Index: testsuite/ChangeLog
===================================================================
--- testsuite/ChangeLog (revision 272668)
+++ testsuite/ChangeLog (working copy)
@@ -1,3 +1,11 @@
+2019-06-27  Hongtao Liu  <hongtao.liu@intel.com>
+
+ * lib/target-supports.exp: Add
+ check_effective_target_avx512vp2intersect.
+ * gcc.target/i386/avx512vp2intersect-2intersect-1b.c: Add
+ dg-require-effective-target avx512vp2intersect.
+ * gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c: Ditto.
+
 2019-06-06  Hongtao Liu  <hongtao.liu@intel.com>
      Olga Makhotina  <olga.makhotina@intel.com>

Index: testsuite/gcc.target/i386/avx512vp2intersect-2intersect-1b.c
===================================================================
--- testsuite/gcc.target/i386/avx512vp2intersect-2intersect-1b.c
(revision 272668)
+++ testsuite/gcc.target/i386/avx512vp2intersect-2intersect-1b.c (working copy)
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -mavx512vp2intersect" } */
+/* { dg-require-effective-target "avx512vp2intersect" } */

 #define AVX512F
 #include <x86intrin.h>
Index: testsuite/gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c
===================================================================
--- testsuite/gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c
(revision 272668)
+++ testsuite/gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c
(working copy)
@@ -1,5 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O2 -mavx512vp2intersect -mavx512vl" } */
+/* { dg-require-effective-target "avx512vp2intersect" } */

 #define AVX512F
 #include <x86intrin.h>
Index: testsuite/lib/target-supports.exp
===================================================================
--- testsuite/lib/target-supports.exp (revision 272667)
+++ testsuite/lib/target-supports.exp (working copy)
@@ -7963,6 +7963,20 @@
     } "-mavx512bw" ]
 }

+# Return 1 if avx512vp2intersect instructions can be compiled.
+proc check_effective_target_avx512vp2intersect { } {
+    return [check_no_compiler_messages avx512vp2intersect object {
+ typedef int __v16si __attribute__ ((__vector_size__ (64)));
+ typedef short __mmask16;
+ void
+ _mm512_2intersect_epi32 (__v16si __A, __v16si __B, __mmask16 *__U,
+ __mmask16 *__M)
+ {
+     __builtin_ia32_2intersectd512 (__U, __M, (__v16si) __A, (__v16si) __B);
+ }
+    } "-mavx512vp2intersect" ]
+}
+
 # Return 1 if avx512ifma instructions can be compiled.
 proc check_effective_target_avx512ifma { } {
     return [check_no_compiler_messages avx512ifma object {
>
>         Rainer
>
> --
> -----------------------------------------------------------------------------
> Rainer Orth, Center for Biotechnology, Bielefeld University

-- 
BR,
Hongtao



More information about the Gcc-patches mailing list