Hi All, This series of 7 patches aims to add support for cpuid detection, builtins and intrinsics for AVX10_V2_AUX instructions.
AVX10_V2_AUX is a new ISA for x86, supporting converts between FP32-FP8, FP8-FP4, FP8-FP6, and vice-versa. For more details, please refer to the specification here: https://x86ecosystem.org/resource/ai-compute-extensions-ace-specification/ As discussed previously, this series of patches address the comments from Haochen Jiang. Patch details are as follows: - Patch 01/07: Add support for cpuid detection for AVX10_V2_AUX and supported FP32 to FP8 single-source RTNE converts. - Patch 02/07: Add FP32 to FP8 single-source RTO converts. - Patch 03/07: Add FP32 to FP8 biased converts. - Patch 04/07: Add FP8 to FP32 converts. - Patch 05/07: Add FP8 to FP4 and vice-versa converts. - Patch 06/07: Add FP8 to FP6 and vice-versa converts. - Patch 07/07: Add sub-byte element extraction and symmetric signed saturation narrow support. gcc/common/config/i386/cpuinfo.h | 8 + gcc/common/config/i386/i386-common.cc | 22 +- gcc/common/config/i386/i386-cpuinfo.h | 1 + gcc/common/config/i386/i386-isas.h | 2 + gcc/config.gcc | 3 +- gcc/config/i386/avx10v2auxintrin.h | 1904 +++++++++++++++++ gcc/config/i386/cpuid.h | 4 + gcc/config/i386/i386-builtin-types.def | 21 + gcc/config/i386/i386-builtin.def | 77 + gcc/config/i386/i386-c.cc | 2 + gcc/config/i386/i386-expand.cc | 24 + gcc/config/i386/i386-isa.def | 1 + gcc/config/i386/i386-modes.def | 2 + gcc/config/i386/i386-options.cc | 4 +- gcc/config/i386/i386.opt | 4 + gcc/config/i386/i386.opt.urls | 3 + gcc/config/i386/immintrin.h | 2 + gcc/config/i386/predicates.md | 5 + gcc/config/i386/sse.md | 593 +++++ gcc/doc/extend.texi | 5 + gcc/doc/invoke.texi | 11 +- gcc/doc/sourcebuild.texi | 3 + .../gcc.target/i386/avx10v2aux-convert-1a.c | 88 + .../gcc.target/i386/avx10v2aux-convert-1b.c | 61 + .../gcc.target/i386/avx10v2aux-convert-1c.c | 114 + .../gcc.target/i386/avx10v2aux-convert-1d.c | 61 + .../gcc.target/i386/avx10v2aux-convert-1e.c | 52 + .../gcc.target/i386/avx10v2aux-convert-1f.c | 36 + .../gcc.target/i386/avx10v2aux-convert-1g.c | 18 + .../gcc.target/i386/avx10v2aux-convert-1h.c | 46 + .../gcc.target/i386/avx10v2aux-convert-1i.c | 36 + .../gcc.target/i386/avx10v2aux-convert-1j.c | 43 + .../gcc.target/i386/avx10v2aux-convert-1k.c | 29 + gcc/testsuite/lib/target-supports.exp | 14 + 34 files changed, 3292 insertions(+), 7 deletions(-) create mode 100644 gcc/config/i386/avx10v2auxintrin.h create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1a.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1b.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1c.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1d.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1e.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1f.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1g.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1h.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1i.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1j.c create mode 100644 gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1k.c -- 2.34.1
