ping^2, i hope this patch could land on GCC11. On Wed, Oct 28, 2020 at 5:23 PM Hongyu Wang <wwwhhhyyy...@gmail.com> wrote: > > Hongyu Wang <wwwhhhyyy...@gmail.com> 于2020年10月14日周三 上午11:27写道: > > > > Hi: > > > > This patch is about to support Intel AVX-VNNI instructions. > > > > AVX-VNNI is an equivalent to AVX512-VNNI with VEX encoding. The > > instructions are same, but with extra {vex} prefix to distinguish from > > AVX512-VNNI instructions in assembler. > > > > For more details, please refer to > > https://software.intel.com/content/dam/develop/external/us/en/documents/architecture-instruction-set-extensions-programming-reference.pdf > > > > Bootstrap ok, regression test on i386/x86 backend is ok. > > > > OK for master? > > > > 2020-10-13 Hongtao Liu <hongtao....@intel.com> > > Hongyu Wang <hongyu.w...@intel.com> > > > > gcc/ > > * common/config/i386/cpuinfo.h (get_available_features): > > Detect AVXVNNI. > > * common/config/i386/i386-common.c > > (OPTION_MASK_ISA2_AVXVNNI_SET, > > OPTION_MASK_ISA2_AVXVNNI_UNSET, OPTION_MASK_ISA2_AVX2_UNSET): > > New. > > (ix86_hanlde_option): Handle -mavxvnni, unset avxvnni when > > avx2 is disabled. > > * common/config/i386/i386-cpuinfo.h (enum processor_features): > > Add FEATURE_AVXVNNI. > > * common/config/i386/i386-isas.h: Add ISA_NAMES_TABLE_ENTRY > > for avxvnni. > > * config.gcc: Add avxvnniintrin.h. > > * config/i386/avx512vnniintrin.h: Remove 128/256 bit non-mask > > intrinsics. > > * config/i386/avxvnniintrin.h: New header file. > > * config/i386/cpuid.h (bit_AVXVNNI): New. > > * config/i386/i386-builtins.c (def_builtin): Handle AVXVNNI mask > > for unified builtin. > > * config/i386/i386-builtin.def (BDESC): Adjust AVX512VNNI > > builtins for AVXVNNI. > > * config/i386/i386-c.c (ix86_target_macros_internal): Define > > __AVXVNNI__. > > * config/i386/i386-expand.c (ix86_expand_builtin): Handle bisa > > for AVXVNNI to support unified intrinsic name, since there is no > > dependency between AVX512VNNI and AVXVNNI. > > * config/i386/i386-options.c (isa2_opts): Add -mavxvnni. > > (ix86_valid_target_attribute_inner_p): Handle avxnnni. > > (ix86_valid_target_attribute_inner_p): Ditto. > > * config/i386/i386.h (TARGET_AVXVNNI, TARGET_AVXVNNI_P, > > TARGET_AVXVNNI_P, PTA_AVXVNNI): New. > > (PTA_SAPPHIRERAPIDS): Add AVX_VNNI. > > (PTA_ALDERLAKE): Likewise. > > * config/i386/i386.md ("isa"): Add avxvnni, avx512vnnivl. > > ("enabled"): Adjust for avxvnni and avx512vnnivl. > > * config/i386/i386.opt: Add option -mavxvnni. > > * config/i386/immintrin.h: Include avxvnniintrin.h. > > * config/i386/sse.md (vpdpbusd_<mode>): Adjust for AVXVNNI. > > (vpdpbusds_<mode>): Likewise. > > (vpdpwssd_<mode>): Likewise. > > (vpdpwssds_<mode>): Likewise. > > (vpdpbusd_v16si): New. > > (vpdpbusds_v16si): Likewise. > > (vpdpwssd_v16si): Likewise. > > (vpdpwssds_v16si): Likewise. > > * doc/invoke.texi: Document -mavxvnni. > > * doc/extend.texi: Document avxvnni. > > * doc/sourcebuild.texi: Document target avxvnni. > > > > gcc/testsuite/ > > > > * gcc.target/i386/avx512vl-vnni-1.c: Rename.. > > * gcc.target/i386/avx512vl-vnni-1a.c: To This. > > * gcc.target/i386/avx512vl-vnni-1b.c: New test. > > * gcc.target/i386/avx512vl-vnni-2.c: Ditto. > > * gcc.target/i386/avx512vl-vnni-3.c: Ditto. > > * gcc.target/i386/avx-vnni-1.c: Ditto. > > * gcc.target/i386/avx-vnni-2.c: Ditto. > > * gcc.target/i386/avx-vnni-3.c: Ditto. > > * gcc.target/i386/avx-vnni-4.c: Ditto. > > * gcc.target/i386/avx-vnni-5.c: Ditto. > > * gcc.target/i386/avx-vnni-6.c: Ditto. > > * gcc.target/i386/avx-vpdpbusd-2.c: Ditto. > > * gcc.target/i386/avx-vpdpbusds-2.c: Ditto. > > * gcc.target/i386/avx-vpdpwssd-2.c: Ditto. > > * gcc.target/i386/avx-vpdpwssds-2.c: Ditto. > > * gcc.target/i386/vnni_inline_error.c: Ditto. > > * gcc.target/i386/avx512vnnivl-builtin.c: Ditto. > > * gcc.target/i386/avxvnni-builtin.c: Ditto. > > * gcc.target/i386/funcspec-56.inc: Add new target attribute. > > * gcc.target/i386/pr83488-3.c: Adjust. > > * gcc.target/i386/sse-12.c: Add -mavxvnni. > > * gcc.target/i386/sse-13.c: Ditto. > > * gcc.target/i386/sse-14.c: Ditto. > > * gcc.target/i386/sse-22.c: Ditto. > > * gcc.target/i386/sse-23.c: Ditto. > > * g++.dg/other/i386-2.C: Ditto. > > * g++.dg/other/i386-3.C: Ditto. > > * lib/target-supports.exp (check_effective_target_avxvnni): > > New proc. > > > > -- > > Regards, > > > > Hongyu, Wang > > Rebased on 2020-10-27 trunk and PING.
-- BR, Hongtao