On Tue, Dec 18, 2018 at 9:53 PM Jakub Jelinek <ja...@redhat.com> wrote: > > Hi! > > As mentioned in the PR, there is a VEX encoded vpclmulqdq instruction > with ymm arguments that needs VPCLMULQDQ ISA, and then EVEX encoded > vpclmulqdq with zmm arguments that needs VPCLMULQDQ + AVX512F ISAs and > vpclmulqdq with xmm or ymm arguments that needs VPCLMULQDQ + AVX512VL ISAs. > > So, _mm256_clmulepi64_epi128 can be done just with AVX (so that VEX encoded > instructions are handled) + VPCLMULQDQ ISAs. > The corresponding builtin matches this: > BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX, > CODE_FOR_vpclmulqdq_v4di, "__builtin_ia32_vpclmulqdq_v4di", > IX86_BUILTIN_VPCLMULQDQ4, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT) > > Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux, ok for > trunk? > > 2018-12-18 Jakub Jelinek <ja...@redhat.com> > > PR target/88541 > * config/i386/vpclmulqdqintrin.h (_mm256_clmulepi64_epi128): Enable > for -mavx -mvpclmulqdq rather than just for -mavx512vl -mvpclmulqdq. > > * gcc.target/i386/avx-vpclmulqdq-1.c: New test.
OK. Thanks, Uros. > --- gcc/config/i386/vpclmulqdqintrin.h.jj 2018-06-13 10:05:54.775128332 > +0200 > +++ gcc/config/i386/vpclmulqdqintrin.h 2018-12-18 20:09:37.693666571 +0100 > @@ -53,9 +53,9 @@ _mm512_clmulepi64_epi128 (__m512i __A, _ > #pragma GCC pop_options > #endif /* __DISABLE_VPCLMULQDQF__ */ > > -#if !defined(__VPCLMULQDQ__) || !defined(__AVX512VL__) > +#if !defined(__VPCLMULQDQ__) || !defined(__AVX__) > #pragma GCC push_options > -#pragma GCC target("vpclmulqdq,avx512vl") > +#pragma GCC target("vpclmulqdq,avx") > #define __DISABLE_VPCLMULQDQ__ > #endif /* __VPCLMULQDQ__ */ > > @@ -78,6 +78,4 @@ _mm256_clmulepi64_epi128 (__m256i __A, _ > #pragma GCC pop_options > #endif /* __DISABLE_VPCLMULQDQ__ */ > > - > #endif /* _VPCLMULQDQINTRIN_H_INCLUDED */ > - > --- gcc/testsuite/gcc.target/i386/avx-vpclmulqdq-1.c.jj 2018-12-18 > 20:13:28.683960294 +0100 > +++ gcc/testsuite/gcc.target/i386/avx-vpclmulqdq-1.c 2018-12-18 > 20:12:41.140723131 +0100 > @@ -0,0 +1,10 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -mavx -mvpclmulqdq" } */ > + > +#include <x86intrin.h> > + > +__m256i > +foo (__m256i x, __m256i y) > +{ > + return _mm256_clmulepi64_epi128 (x, y, 0); > +} > > Jakub