PING [Patch] x86: Enable GCC support for Intel AVX-VNNI extension

Hongtao Liu crazylht@gmail.com
Tue Nov 3 11:48:20 GMT 2020


ping^2, i hope this patch could land on GCC11.

On Wed, Oct 28, 2020 at 5:23 PM Hongyu Wang <wwwhhhyyy333@gmail.com> wrote:
>
> Hongyu Wang <wwwhhhyyy333@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.liu@intel.com>
> >         Hongyu Wang  <hongyu.wang@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


More information about the Gcc-patches mailing list