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