Hi,
This patch enables VPDPBUSD instruction, also it contains builtins and md 
patterns for other VNNI instructions. The doc for isaset and instruction: 
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

Ok for trunk?

Thanks,
Julia

gcc/
        * config.gcc: Add avx512vnniintrin.h and avx512vnnivlintrin.h.
        * config/i386/avx512vnniintrin.h (_mm512_dpbusd_epi32,
        _mm512_mask_dpbusd_epi32, _mm512_maskz_dpbusd_epi32): New intrinsics.
        * config/i386/avx512vnnivlintrin.h (_mm256_dpbusd_epi32,
        _mm256_mask_dpbusd_epi32, _mm256_maskz_dpbusd_epi32, _mm_dpbusd_epi32,
        _mm_mask_dpbusd_epi32, _mm_maskz_dpbusd_epi32): Ditto.
        * config/i386/i386-builtin.def (__builtin_ia32_vpdpbusd_v16si,
        __builtin_ia32_vpdpbusd_v16si_mask,
        __builtin_ia32_vpdpbusd_v16si_maskz, __builtin_ia32_vpdpbusd_v8si,
        __builtin_ia32_vpdpbusd_v8si_mask, __builtin_ia32_vpdpbusd_v8si_maskz,
        __builtin_ia32_vpdpbusd_v4si, __builtin_ia32_vpdpbusd_v4si_mask,
        __builtin_ia32_vpdpbusd_v4si_maskz, __builtin_ia32_vpdpbusds_v16si,
        __builtin_ia32_vpdpbusds_v16si_mask,
        __builtin_ia32_vpdpbusds_v16si_maskz, __builtin_ia32_vpdpbusds_v8si,
        __builtin_ia32_vpdpbusds_v8si_mask,
        __builtin_ia32_vpdpbusds_v8si_maskz, __builtin_ia32_vpdpbusds_v4si,
        __builtin_ia32_vpdpbusds_v4si_mask,
        __builtin_ia32_vpdpbusds_v4si_maskz, __builtin_ia32_vpdpwssd_v16si,
        __builtin_ia32_vpdpwssd_v16si_mask,
        __builtin_ia32_vpdpwssd_v16si_maskz, __builtin_ia32_vpdpwssd_v8si,
        __builtin_ia32_vpdpwssd_v8si_mask,
        __builtin_ia32_vpdpwssd_v8si_maskz, __builtin_ia32_vpdpwssd_v4si,
        __builtin_ia32_vpdpwssd_v4si_mask,
        __builtin_ia32_vpdpwssd_v4si_maskz, __builtin_ia32_vpdpwssds_v16si,
        __builtin_ia32_vpdpwssds_v16si_mask,
        __builtin_ia32_vpdpwssds_v16si_maskz, __builtin_ia32_vpdpwssds_v8si,
        __builtin_ia32_vpdpwssds_v8si_mask,
        __builtin_ia32_vpdpwssds_v8si_maskz, __builtin_ia32_vpdpwssds_v4si,
        __builtin_ia32_vpdpwssds_v4si_mask,
        __builtin_ia32_vpdpwssds_v4si_maskz): New builtins.
        * config/i386/immintrin.h: Include avx512vnniintrin.h and
        avx512vnnivlintrin.h.
        * config/i386/sse.md (vpdpbusd_<mode>, vpdpbusd_<mode>_mask,
        vpdpbusd_<mode>_maskz, vpdpbusd_<mode>_maskz_1, vpdpbusds_<mode>,
        vpdpbusds_<mode>_mask, vpdpbusds_<mode>_maskz,
        vpdpbusds_<mode>_maskz_1, vpdpwssd_<mode>, vpdpwssd_<mode>_mask,
        vpdpwssd_<mode>_maskz, vpdpwssd_<mode>_maskz_1, vpdpwssds_<mode>,
        vpdpwssds_<mode>_mask, vpdpwssds_<mode>_maskz,
        vpdpwssds_<mode>_maskz_1): New md patterns.

gcc/testsuite/
        * gcc.target/i386/avx512-check.h: Handle AVX512VNNI bit.
        * gcc.target/i386/avx512f-vnni-1.c: New test.
        * gcc.target/i386/avx512f-vpdpbusd-2.c: Ditto.
        * gcc.target/i386/avx512vl-vnni-1.c: Ditto.
        * gcc.target/i386/avx512vl-vpdpbusd-2.c: Ditto.
        * gcc.target/i386/i386.exp: Check avx512vnni effective target.


Attachment: 0011-VPDPBUSD-instruction.patch
Description: 0011-VPDPBUSD-instruction.patch

Reply via email to