I'm going to check in the first 3 patches which are already approved.
Update hf soft-fp from glibc.
[i386] Enable _Float16 type for TARGET_SSE2 and above.
[i386] libgcc: Enable hfmode soft-sf/df/xf/tf extensions and
truncations.
On Mon, Aug 2, 2021 at 2:31 PM liuhongt <[email protected]> wrote:
>
> Update from v2:
>
> 1. Support -fexcess-precision=16 which will enable
> FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16 when backend supports _Float16.
> 2. Update ix86_get_excess_precision, so -fexcess-precision=standard
> should not do anything different from -fexcess-precision=fast
> regarding _Float16.
> 3. Avoiding macroization of HFmode patterns.
> 4. Allow (subreg:SI (reg:HF)).
> 5. Update documents corresponding exactly to the code changes in
> the same patch.
> 6. According to 32bit abi, pass vector _Float16 by sse registers
> for 32-bit mode, not stack.
>
> Guo, Xuepeng (1):
> AVX512FP16: Initial support for AVX512FP16 feature and scalar _Float16
> instructions.
>
> liuhongt (5):
> Update hf soft-fp from glibc.
> [i386] Enable _Float16 type for TARGET_SSE2 and above.
> [i386] libgcc: Enable hfmode soft-sf/df/xf/tf extensions and
> truncations.
> Support -fexcess-precision=16 which will enable
> FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16 when backend supports _Float16.
> AVX512FP16: Support vector init/broadcast/set/extract for FP16.
>
> gcc/ada/gcc-interface/misc.c | 3 +
> gcc/c-family/c-common.c | 6 +-
> gcc/c-family/c-cppbuiltin.c | 6 +-
> gcc/common.opt | 5 +-
> 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/aarch64/aarch64.c | 1 +
> gcc/config/arm/arm.c | 1 +
> gcc/config/i386/avx512fp16intrin.h | 225 ++++++++++
> gcc/config/i386/cpuid.h | 1 +
> gcc/config/i386/i386-builtin-types.def | 7 +-
> gcc/config/i386/i386-builtins.c | 23 +
> gcc/config/i386/i386-c.c | 2 +
> gcc/config/i386/i386-expand.c | 129 +++++-
> gcc/config/i386/i386-isa.def | 1 +
> gcc/config/i386/i386-modes.def | 13 +-
> gcc/config/i386/i386-options.c | 4 +-
> gcc/config/i386/i386.c | 243 +++++++++--
> gcc/config/i386/i386.h | 29 +-
> gcc/config/i386/i386.md | 291 ++++++++++++-
> gcc/config/i386/i386.opt | 4 +
> gcc/config/i386/immintrin.h | 4 +
> gcc/config/i386/sse.md | 397 +++++++++++++-----
> gcc/config/m68k/m68k.c | 2 +
> gcc/config/s390/s390.c | 2 +
> gcc/coretypes.h | 3 +-
> gcc/doc/extend.texi | 22 +
> gcc/doc/invoke.texi | 10 +-
> gcc/doc/tm.texi | 14 +-
> gcc/doc/tm.texi.in | 3 +
> gcc/emit-rtl.c | 5 +
> gcc/flag-types.h | 3 +-
> gcc/fortran/options.c | 3 +
> gcc/lto/lto-lang.c | 3 +
> gcc/target.def | 11 +-
> gcc/testsuite/g++.dg/other/i386-2.C | 2 +-
> gcc/testsuite/g++.dg/other/i386-3.C | 2 +-
> 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-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/float16-5.c | 12 +
> gcc/testsuite/gcc.target/i386/float16-6.c | 8 +
> 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.target/i386/sse2-float16-1.c | 8 +
> .../gcc.target/i386/sse2-float16-2.c | 16 +
> .../gcc.target/i386/sse2-float16-3.c | 12 +
> gcc/testsuite/lib/target-supports.exp | 13 +-
> gcc/tree.c | 3 +-
> libgcc/config.host | 5 +-
> libgcc/config/i386/32/sfp-machine.h | 1 +
> libgcc/config/i386/32/t-softfp | 1 +
> libgcc/config/i386/64/sfp-machine.h | 1 +
> libgcc/config/i386/64/t-softfp | 1 +
> libgcc/config/i386/sfp-machine.h | 1 +
> libgcc/config/i386/t-softfp | 5 +
> libgcc/soft-fp/eqhf2.c | 49 +++
> libgcc/soft-fp/extendhfdf2.c | 53 +++
> libgcc/soft-fp/extendhfsf2.c | 49 +++
> libgcc/soft-fp/half.h | 1 +
> libgcc/soft-fp/truncdfhf2.c | 52 +++
> libgcc/soft-fp/truncsfhf2.c | 48 +++
> 78 files changed, 1781 insertions(+), 223 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-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/float16-5.c
> create mode 100644 gcc/testsuite/gcc.target/i386/float16-6.c
> create mode 100644 gcc/testsuite/gcc.target/i386/pr54855-12.c
> create mode 100644 gcc/testsuite/gcc.target/i386/sse2-float16-1.c
> create mode 100644 gcc/testsuite/gcc.target/i386/sse2-float16-2.c
> create mode 100644 gcc/testsuite/gcc.target/i386/sse2-float16-3.c
> create mode 100644 libgcc/config/i386/64/t-softfp
> create mode 100644 libgcc/soft-fp/eqhf2.c
> create mode 100644 libgcc/soft-fp/extendhfdf2.c
> create mode 100644 libgcc/soft-fp/extendhfsf2.c
> create mode 100644 libgcc/soft-fp/truncdfhf2.c
> create mode 100644 libgcc/soft-fp/truncsfhf2.c
>
> --
> 2.27.0
>
--
BR,
Hongtao