This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Enable GCC support for AVX512_VP2INTERSECT.


Hi Hongtao,

> On Thu, Jun 27, 2019 at 5:38 PM Rainer Orth <ro@cebitec.uni-bielefeld.de> wrote:
>>
>> Hi Hongtao,
>>
>> > On Thu, Jun 27, 2019 at 5:02 PM Rainer Orth
>> > <ro@cebitec.uni-bielefeld.de> wrote:
>> >>
>> >> Hi Hongtao,
>> >>
>> >> >> as usual, the new effective-target keyword needs documenting in
>> >> >> sourcebuild.texi.
>> >> > Like this?
>> >>
>> >> a couple of nits: first of all, your mailer seems to replace tabs by a
>> >> single space.  Please fix this or attach the patch instead.
>> >>
>> >> > 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.
>> >>
>> >> Please include the sections you're modifying, something like
>> >>
>> >>         * doc/sourcebuild.texi (Effective-Target Keywords, Other
>> >>         hardware attributes): Document avx512vp2intersect.
>> >>
>> >> And please don't include the ChangeLog in the patch, but include it in
>> >> the mail proper: it won't apply due to date and context changes anyway.
>> >> Best review https://gcc.gnu.org/contribute.html where this is documented
>> >> besides other points of patch submission.
>> >>
>> >> Besides, it's most likely useful to also review the GNU Coding
>> >> Standards, too, not only for ChangeLog formatting.
>> >>
>> >> > 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.
>> >>
>> >> Use
>> >>
>> >>         * lib/target-supports.exp
>> >>         (check_effective_target_avx512vp2intersect): New proc.
>> >>
>> >> > + * gcc.target/i386/avx512vp2intersect-2intersect-1b.c: Add
>> >> > + dg-require-effective-target avx512vp2intersect.
>> >>
>> >> Better:
>> >>
>> >>         * gcc.target/i386/avx512vp2intersect-2intersect-1b.c: Require
>> >>         avx512vp2intersect.
>> >>
>> >> but that's a matter of preference.
>> >>
>> >> > 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" } */
>> >>
>> >> No need to quote avx512vp2intersect here and in the next test.
>> >>
>> >> Ok with those nits fixed.
>> >>
>> > Yes, thanks a lot.
>> >> Thanks.
>> >>         Rainer
>> >>
>> >> --
>> >> -----------------------------------------------------------------------------
>> >> Rainer Orth, Center for Biotechnology, Bielefeld University
>> >
>> > Ok for trunk?
>>
>> ENOPATCH
> Sorry, Here is the patch.
>>
>> --
>> -----------------------------------------------------------------------------
>> Rainer Orth, Center for Biotechnology, Bielefeld University
>
>
> Changelog
>
> gcc/
> +2019-06-27  Hongtao Liu  <hongtao.liu@intel.com>
> +
> + * doc/sourcebuild.texi (Effective-Target Keywords, Other
> + hardware attributes): Document avx512vp2intersect.
> +
>
> gcc/testsuite/
> +2019-06-27  Hongtao Liu  <hongtao.liu@intel.com>
> +
> + * lib/target-supports.exp
> + (check_effective_target_avx512vp2intersect): New proc.
> + * gcc.target/i386/avx512vp2intersect-2intersect-1b.c: Add
> + dg-require-effective-target avx512vp2intersect.
> + * gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c: Ditto.
> +

unfortunately, the testcases are still not right.  While with gas 2.32
they now come up as UNSUPPORTED, I've now tried a mainline bootstrap on
i386-pc-solaris2.11 with gas from binutils master.  Doing so, I get

+FAIL: gcc.target/i386/avx512vp2intersect-2intersect-1b.c execution test
+FAIL: gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c execution test

for both 32 and 64-bit, and there are similar results on
gcc-testresults for x86_64-pc-linux-gnu.

Running one of the testcases under gdb shows

Thread 2 received signal SIGILL, Illegal instruction.
[Switching to Thread 1 (LWP 1)]
0x08050d89 in do_test ()
1: x/i $pc
=> 0x8050d89 <do_test+25>:	(bad)  

or with objdump 2.32:

 8050d89:       62 f2 ff 48 68          (bad)  

Using objdump from binutils master shows

 8050d89:       62 f2 ff 48 68 05 80    vp2intersectq 0x8050a80,%zmm0,%k0

Currently, the testcases only check for AVX512F (which the machine in
question supports: Xeon Gold 6132), while they need to check for
AVX512VP2INTERSECT to avoid this.

The following patch does this; tested on i386-pc-solaris2.11 with gas
2.32.51 both 32 and 64-bit where the tests PASS.

Ok for mainline?

	Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2019-08-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* gcc.target/i386/avx512vp2intersect-2intersect-1b.c (AVX512F):
	Remove.
	(AVX512VP2INTERSECT): Define.
	* gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c (AVX512F):
	Remove.
	(AVX512VP2INTERSECT): Define.

# HG changeset patch
# Parent  3987f613becd5fbb934c0c764f799f8967605899
Fix gcc.target/i386/avx512vp2intersect-2intersect-1b.c etc. execution tests

	gcc/testsuite:
	* gcc.target/i386/avx512vp2intersect-2intersect-1b.c (AVX512F):
	Remove.
	(AVX512VP2INTERSECT): Define.
	* gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c (AVX512F):
	Remove.
	(AVX512VP2INTERSECT): Define.

diff --git a/gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersect-1b.c b/gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersect-1b.c
--- a/gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersect-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersect-1b.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O2 -mavx512vp2intersect" } */
 /* { dg-require-effective-target avx512vp2intersect } */
 
-#define AVX512F
+#define AVX512VP2INTERSECT
 #include <x86intrin.h>
 #include "avx512f-helper.h"
 
diff --git a/gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c b/gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c
--- a/gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c
+++ b/gcc/testsuite/gcc.target/i386/avx512vp2intersect-2intersectvl-1b.c
@@ -2,7 +2,7 @@
 /* { dg-options "-O2 -mavx512vp2intersect -mavx512vl" } */
 /* { dg-require-effective-target avx512vp2intersect } */
 
-#define AVX512F
+#define AVX512VP2INTERSECT
 #include <x86intrin.h>
 #include "avx512f-helper.h"
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]