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.
0011-VPDPBUSD-instruction.patch
Description: 0011-VPDPBUSD-instruction.patch