[PATCH V3 0/6] Initial support for AVX512FP16

liuhongt hongtao.liu@intel.com
Mon Aug 2 06:31:10 GMT 2021


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



More information about the Gcc-patches mailing list