diff mbox series

i386: Also disable AVX512IFMA/AVX5124FMAPS/AVX5124VNNIW

Message ID 20181013215443.17078-1-hjl.tools@gmail.com
State New
Headers show
Series i386: Also disable AVX512IFMA/AVX5124FMAPS/AVX5124VNNIW | expand

Commit Message

H.J. Lu Oct. 13, 2018, 9:54 p.m. UTC
Also disable AVX512IFMA, AVX5124FMAPS and AVX5124VNNIW when disabling
AVX512F.

gcc/

	PR target/87572
	* common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET):
	Add OPTION_MASK_ISA_AVX512IFMA_UNSET,
	OPTION_MASK_ISA_AVX5124FMAPS_UNSET and
	OPTION_MASK_ISA_AVX5124VNNIW_UNSET.

gcc/testsuite/

	PR target/87572
	* gcc.target/i386/pr87572.c: New test.
---
 gcc/common/config/i386/i386-common.c    |  8 ++++++--
 gcc/testsuite/gcc.target/i386/pr87572.c | 10 ++++++++++
 2 files changed, 16 insertions(+), 2 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr87572.c

Comments

Uros Bizjak Oct. 14, 2018, 7:29 p.m. UTC | #1
On Sat, Oct 13, 2018 at 11:54 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> Also disable AVX512IFMA, AVX5124FMAPS and AVX5124VNNIW when disabling
> AVX512F.
>
> gcc/
>
>         PR target/87572
>         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET):
>         Add OPTION_MASK_ISA_AVX512IFMA_UNSET,
>         OPTION_MASK_ISA_AVX5124FMAPS_UNSET and
>         OPTION_MASK_ISA_AVX5124VNNIW_UNSET.
>
> gcc/testsuite/
>
>         PR target/87572
>         * gcc.target/i386/pr87572.c: New test.

LGTM.

Thanks,
Uros.

>  gcc/common/config/i386/i386-common.c    |  8 ++++++--
>  gcc/testsuite/gcc.target/i386/pr87572.c | 10 ++++++++++
>  2 files changed, 16 insertions(+), 2 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr87572.c
>
> diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c
> index 3b5312d7250..36ef999df83 100644
> --- a/gcc/common/config/i386/i386-common.c
> +++ b/gcc/common/config/i386/i386-common.c
> @@ -194,8 +194,12 @@ along with GCC; see the file COPYING3.  If not see
>    (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX512CD_UNSET \
>     | OPTION_MASK_ISA_AVX512PF_UNSET | OPTION_MASK_ISA_AVX512ER_UNSET \
>     | OPTION_MASK_ISA_AVX512DQ_UNSET | OPTION_MASK_ISA_AVX512BW_UNSET \
> -   | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512VBMI2_UNSET \
> -   | OPTION_MASK_ISA_AVX512VNNI_UNSET | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \
> +   | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512IFMA_UNSET \
> +   | OPTION_MASK_ISA_AVX5124FMAPS_UNSET \
> +   | OPTION_MASK_ISA_AVX5124VNNIW_UNSET \
> +   | OPTION_MASK_ISA_AVX512VBMI2_UNSET \
> +   | OPTION_MASK_ISA_AVX512VNNI_UNSET \
> +   | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \
>     | OPTION_MASK_ISA_AVX512BITALG_UNSET)
>  #define OPTION_MASK_ISA_AVX512CD_UNSET OPTION_MASK_ISA_AVX512CD
>  #define OPTION_MASK_ISA_AVX512PF_UNSET OPTION_MASK_ISA_AVX512PF
> diff --git a/gcc/testsuite/gcc.target/i386/pr87572.c b/gcc/testsuite/gcc.target/i386/pr87572.c
> new file mode 100644
> index 00000000000..ea1beb78f5c
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/pr87572.c
> @@ -0,0 +1,10 @@
> +/* PR target/82483 */
> +/* { dg-do compile } */
> +/* { dg-options "-O2 -mavx512ifma -mno-sse2 -w -Wno-psabi" } */
> +
> +typedef long long __m512i __attribute__((__vector_size__(64)));
> +__m512i
> +foo (__m512i c, __m512i d, __m512i e, int b)
> +{
> +  return __builtin_ia32_vpmadd52huq512_maskz (c, d, e, b); /* { dg-error "incompatible types" } */
> +}
> --
> 2.17.2
>
Richard Biener Oct. 15, 2018, 2:22 p.m. UTC | #2
On Sun, Oct 14, 2018 at 9:29 PM Uros Bizjak <ubizjak@gmail.com> wrote:
>
> On Sat, Oct 13, 2018 at 11:54 PM H.J. Lu <hjl.tools@gmail.com> wrote:
> >
> > Also disable AVX512IFMA, AVX5124FMAPS and AVX5124VNNIW when disabling
> > AVX512F.
> >
> > gcc/
> >
> >         PR target/87572
> >         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET):
> >         Add OPTION_MASK_ISA_AVX512IFMA_UNSET,
> >         OPTION_MASK_ISA_AVX5124FMAPS_UNSET and
> >         OPTION_MASK_ISA_AVX5124VNNIW_UNSET.
> >
> > gcc/testsuite/
> >
> >         PR target/87572
> >         * gcc.target/i386/pr87572.c: New test.
>
> LGTM.

This caused gazillion of testsuite FAILs like

FAIL: gcc.target/i386/isa-11.c (test for excess errors)
Excess errors:
/tmp/ccyurT91.s:8: Error: invalid instruction suffix for `push'
/tmp/ccyurT91.s:14: Error: invalid instruction suffix for `pop'

where we now emit pushl in 64bit mode.

Richard.


> Thanks,
> Uros.
>
> >  gcc/common/config/i386/i386-common.c    |  8 ++++++--
> >  gcc/testsuite/gcc.target/i386/pr87572.c | 10 ++++++++++
> >  2 files changed, 16 insertions(+), 2 deletions(-)
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr87572.c
> >
> > diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c
> > index 3b5312d7250..36ef999df83 100644
> > --- a/gcc/common/config/i386/i386-common.c
> > +++ b/gcc/common/config/i386/i386-common.c
> > @@ -194,8 +194,12 @@ along with GCC; see the file COPYING3.  If not see
> >    (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX512CD_UNSET \
> >     | OPTION_MASK_ISA_AVX512PF_UNSET | OPTION_MASK_ISA_AVX512ER_UNSET \
> >     | OPTION_MASK_ISA_AVX512DQ_UNSET | OPTION_MASK_ISA_AVX512BW_UNSET \
> > -   | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512VBMI2_UNSET \
> > -   | OPTION_MASK_ISA_AVX512VNNI_UNSET | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \
> > +   | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512IFMA_UNSET \
> > +   | OPTION_MASK_ISA_AVX5124FMAPS_UNSET \
> > +   | OPTION_MASK_ISA_AVX5124VNNIW_UNSET \
> > +   | OPTION_MASK_ISA_AVX512VBMI2_UNSET \
> > +   | OPTION_MASK_ISA_AVX512VNNI_UNSET \
> > +   | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \
> >     | OPTION_MASK_ISA_AVX512BITALG_UNSET)
> >  #define OPTION_MASK_ISA_AVX512CD_UNSET OPTION_MASK_ISA_AVX512CD
> >  #define OPTION_MASK_ISA_AVX512PF_UNSET OPTION_MASK_ISA_AVX512PF
> > diff --git a/gcc/testsuite/gcc.target/i386/pr87572.c b/gcc/testsuite/gcc.target/i386/pr87572.c
> > new file mode 100644
> > index 00000000000..ea1beb78f5c
> > --- /dev/null
> > +++ b/gcc/testsuite/gcc.target/i386/pr87572.c
> > @@ -0,0 +1,10 @@
> > +/* PR target/82483 */
> > +/* { dg-do compile } */
> > +/* { dg-options "-O2 -mavx512ifma -mno-sse2 -w -Wno-psabi" } */
> > +
> > +typedef long long __m512i __attribute__((__vector_size__(64)));
> > +__m512i
> > +foo (__m512i c, __m512i d, __m512i e, int b)
> > +{
> > +  return __builtin_ia32_vpmadd52huq512_maskz (c, d, e, b); /* { dg-error "incompatible types" } */
> > +}
> > --
> > 2.17.2
> >
diff mbox series

Patch

diff --git a/gcc/common/config/i386/i386-common.c b/gcc/common/config/i386/i386-common.c
index 3b5312d7250..36ef999df83 100644
--- a/gcc/common/config/i386/i386-common.c
+++ b/gcc/common/config/i386/i386-common.c
@@ -194,8 +194,12 @@  along with GCC; see the file COPYING3.  If not see
   (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX512CD_UNSET \
    | OPTION_MASK_ISA_AVX512PF_UNSET | OPTION_MASK_ISA_AVX512ER_UNSET \
    | OPTION_MASK_ISA_AVX512DQ_UNSET | OPTION_MASK_ISA_AVX512BW_UNSET \
-   | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512VBMI2_UNSET \
-   | OPTION_MASK_ISA_AVX512VNNI_UNSET | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \
+   | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512IFMA_UNSET \
+   | OPTION_MASK_ISA_AVX5124FMAPS_UNSET \
+   | OPTION_MASK_ISA_AVX5124VNNIW_UNSET \
+   | OPTION_MASK_ISA_AVX512VBMI2_UNSET \
+   | OPTION_MASK_ISA_AVX512VNNI_UNSET \
+   | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \
    | OPTION_MASK_ISA_AVX512BITALG_UNSET)
 #define OPTION_MASK_ISA_AVX512CD_UNSET OPTION_MASK_ISA_AVX512CD
 #define OPTION_MASK_ISA_AVX512PF_UNSET OPTION_MASK_ISA_AVX512PF
diff --git a/gcc/testsuite/gcc.target/i386/pr87572.c b/gcc/testsuite/gcc.target/i386/pr87572.c
new file mode 100644
index 00000000000..ea1beb78f5c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr87572.c
@@ -0,0 +1,10 @@ 
+/* PR target/82483 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx512ifma -mno-sse2 -w -Wno-psabi" } */
+
+typedef long long __m512i __attribute__((__vector_size__(64)));
+__m512i
+foo (__m512i c, __m512i d, __m512i e, int b)
+{
+  return __builtin_ia32_vpmadd52huq512_maskz (c, d, e, b); /* { dg-error "incompatible types" } */
+}