On Thu, Jul 1, 2021 at 1:48 PM liuhongt <hongtao....@intel.com> wrote:
>
> Hi:
>   AVX512FP16 is disclosed, refer to [1].
>   There're 100+ instructions for AVX512FP16, 67 gcc patches, for the 
> convenience of review, we divide the 67 patches into 2 major parts.
>   The first part is 2 patches containing basic support for AVX512FP16 
> (options, cpuid, _Float16 type, libgcc, etc.), and the second part is 65 
> patches covering all instructions of AVX512FP16(including intrinsic support 
> and some optimizations).
>   There is a problem with the first part, _Float16 is not a C++ standard, so 
> the front-end does not support this type and its mangling, so we "make up" a 
> _Float16 type on the back-end and use _DF16 as its mangling. The purpose of 
> this is to align with llvm side, because llvm C++ FE already supports 
> _Float16[2].
>
> [1] 
> https://software.intel.com/content/www/us/en/develop/download/intel-avx512-fp16-architecture-specification.html
> [2] https://reviews.llvm.org/D33719
>
>   Bootstrapped and regtested on x86_64-linux-gnu{-m32,}.
>
> Guo, Xuepeng (1):
>   AVX512FP16: Initial support for _Float16 type and AVX512FP16 feature.
>
> liuhongt (1):
>   AVX512FP16: Add HFmode support in libgcc.
>
>  gcc/common/config/i386/cpuinfo.h              |   2 +
>  gcc/common/config/i386/i386-common.c          |  26 +-
>  gcc/common/config/i386/i386-cpuinfo.h         |   1 +
>  gcc/common/config/i386/i386-isas.h            |   1 +
>  gcc/config.gcc                                |   2 +-
>  gcc/config/i386/avx512fp16intrin.h            |  53 ++++
>  gcc/config/i386/cpuid.h                       |   1 +
>  gcc/config/i386/i386-builtin-types.def        |   7 +-
>  gcc/config/i386/i386-builtins.c               |   6 +
>  gcc/config/i386/i386-c.c                      |  20 ++
>  gcc/config/i386/i386-expand.c                 |   8 +
>  gcc/config/i386/i386-isa.def                  |   1 +
>  gcc/config/i386/i386-modes.def                |   1 +
>  gcc/config/i386/i386-options.c                |  10 +-
>  gcc/config/i386/i386.c                        | 158 ++++++++++--
>  gcc/config/i386/i386.h                        |  18 +-
>  gcc/config/i386/i386.md                       | 242 +++++++++++++++---
>  gcc/config/i386/i386.opt                      |   4 +
>  gcc/config/i386/immintrin.h                   |   2 +
>  gcc/config/i386/sse.md                        |  42 +--
>  gcc/doc/invoke.texi                           |  10 +-
>  gcc/optabs-query.c                            |   9 +-
>  gcc/testsuite/g++.target/i386/float16-1.C     |   8 +
>  gcc/testsuite/g++.target/i386/float16-2.C     |  14 +
>  gcc/testsuite/g++.target/i386/float16-3.C     |  10 +
>  gcc/testsuite/gcc.target/i386/avx-1.c         |   2 +-
>  gcc/testsuite/gcc.target/i386/avx-2.c         |   2 +-
>  gcc/testsuite/gcc.target/i386/avx512-check.h  |   3 +
>  .../gcc.target/i386/avx512fp16-12a.c          |  21 ++
>  .../gcc.target/i386/avx512fp16-12b.c          |  27 ++
>  gcc/testsuite/gcc.target/i386/float16-1.c     |   8 +
>  gcc/testsuite/gcc.target/i386/float16-2.c     |  14 +
>  gcc/testsuite/gcc.target/i386/float16-3a.c    |  10 +
>  gcc/testsuite/gcc.target/i386/float16-3b.c    |  10 +
>  gcc/testsuite/gcc.target/i386/float16-4a.c    |  10 +
>  gcc/testsuite/gcc.target/i386/float16-4b.c    |  10 +
>  gcc/testsuite/gcc.target/i386/funcspec-56.inc |   2 +
>  gcc/testsuite/gcc.target/i386/pr54855-12.c    |  14 +
>  gcc/testsuite/gcc.target/i386/sse-13.c        |   2 +-
>  gcc/testsuite/gcc.target/i386/sse-14.c        |   2 +-
>  gcc/testsuite/gcc.target/i386/sse-22.c        |   4 +-
>  gcc/testsuite/gcc.target/i386/sse-23.c        |   2 +-
>  gcc/testsuite/lib/target-supports.exp         |  13 +-
>  libgcc/Makefile.in                            |   4 +-
>  libgcc/config.host                            |   6 +-
>  libgcc/config/i386/32/sfp-machine.h           |   1 +
>  libgcc/config/i386/64/sfp-machine.h           |   1 +
>  libgcc/config/i386/64/t-softfp                |   9 +
>  libgcc/config/i386/_divhc3.c                  |   4 +
>  libgcc/config/i386/_mulhc3.c                  |   4 +
>  libgcc/config/i386/sfp-machine.h              |   1 +
>  libgcc/config/i386/t-softfp                   |  20 ++
>  libgcc/configure                              |  33 +++
>  libgcc/configure.ac                           |  13 +
>  libgcc/soft-fp/extendhfxf2.c                  |  53 ++++
>  libgcc/soft-fp/truncxfhf2.c                   |  52 ++++
>  56 files changed, 907 insertions(+), 106 deletions(-)
>  create mode 100644 gcc/config/i386/avx512fp16intrin.h
>  create mode 100644 gcc/testsuite/g++.target/i386/float16-1.C
>  create mode 100644 gcc/testsuite/g++.target/i386/float16-2.C
>  create mode 100644 gcc/testsuite/g++.target/i386/float16-3.C
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx512fp16-12a.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx512fp16-12b.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/float16-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/float16-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/float16-3a.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/float16-3b.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/float16-4a.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/float16-4b.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr54855-12.c
>  create mode 100644 libgcc/config/i386/64/t-softfp
>  create mode 100644 libgcc/config/i386/_divhc3.c
>  create mode 100644 libgcc/config/i386/_mulhc3.c
>  create mode 100644 libgcc/soft-fp/extendhfxf2.c
>  create mode 100644 libgcc/soft-fp/truncxfhf2.c
>
> --
> 2.18.1
>


-- 
BR,
Hongtao

Reply via email to