---
Hi GCC Team,

This series of 10 patches aims to add support for cpuid detection,
builtins and intrinsics for AVX10_V2_AUX and ACE ISA for x86.

ACE is a new ISA for x86, which is designed to accelerate computation tasks,
initially focusing on matrix multiplication kernels and reduced precision
data formats important to ML workloads. For more details,
please refer to the ACE specification here: 
https://x86ecosystem.org/resource/ai-compute-extensions-ace-specification/

AVX10_V1_AUX instructions are already present and supported by GCC,
we need to check with intel to carve them out to a separate flag.

The series first adds AVX10_V2_AUX support, followed by ACE instructions.
AVX10_V2_AUX provides a set of converts that ACE builds upon,
while tile and outer product operations are supported by ACE instructions.

Patch details are as follows:
- Patch 01/10: Add support for cpuid detection for AVX10_V2_AUX and supported 
FP32 to FP8 single-source RTNE converts.
- Patch 02/10: Support FP32 to FP8 single-source RTO converts.
- Patch 03/10: Support FP32 to FP8 biased converts.
- Patch 04/10: Support FP8 to FP32 converts.
- Patch 05/10: Support FP8 to FP4 and vice-versa converts.
- Patch 06/10: Support FP8 to FP6 and vice-versa converts.
- Patch 07/10: Support sub-byte element extraction and symmetric signed 
saturation narrow support.
- Patch 08/10: Introduce TILE ISA and split tile config common to both ACE and 
AMX-TILE.
- Patch 09/10: Add ACE_V1 CPUID and option support..
- Patch 10/10: Implement ACE_V1 intrinsics.

Bootstrapped and regtested on x86_64-pc-linux-gnu. Ok for trunk?


 gcc/common/config/i386/cpuinfo.h              |   33 +
 gcc/common/config/i386/i386-common.cc         |   59 +-
 gcc/common/config/i386/i386-cpuinfo.h         |    3 +
 gcc/common/config/i386/i386-isas.h            |    4 +
 gcc/config.gcc                                |    2 +-
 gcc/config/i386/aceintrin.h                   |  151 ++
 gcc/config/i386/amxtileintrin.h               |   28 -
 gcc/config/i386/avx10_v2_auxintrin.h          | 1603 +++++++++++++++++
 gcc/config/i386/cpuid.h                       |    7 +
 gcc/config/i386/i386-builtin-types.def        |   20 +
 gcc/config/i386/i386-builtin.def              |   74 +-
 gcc/config/i386/i386-c.cc                     |    6 +
 gcc/config/i386/i386-expand.cc                |   18 +
 gcc/config/i386/i386-isa.def                  |    3 +
 gcc/config/i386/i386-options.cc               |    8 +-
 gcc/config/i386/i386.md                       |    4 +-
 gcc/config/i386/i386.opt                      |   12 +
 gcc/config/i386/immintrin.h                   |    6 +
 gcc/config/i386/sse.md                        |  431 +++++
 gcc/config/i386/tileintrin.h                  |   69 +
 gcc/doc/extend.texi                           |    5 +
 gcc/doc/invoke.texi                           |    9 +-
 gcc/doc/sourcebuild.texi                      |    3 +
 gcc/testsuite/g++.dg/other/i386-2.C           |    6 +-
 gcc/testsuite/g++.dg/other/i386-3.C           |    6 +-
 gcc/testsuite/gcc.target/i386/ace-asmatt-1.c  |   58 +
 .../gcc.target/i386/ace-asmintel-1.c          |   58 +
 gcc/testsuite/gcc.target/i386/ace-define-1.c  |   11 +
 gcc/testsuite/gcc.target/i386/ace-define-2.c  |    7 +
 .../gcc.target/i386/ace-funcspec-1.c          |   14 +
 .../i386/avx10_2-v2-aux-convert-1.c           |   88 +
 .../i386/avx10_2-v2-aux-convert-10.c          |   25 +
 .../i386/avx10_2-v2-aux-convert-2.c           |   46 +
 .../i386/avx10_2-v2-aux-convert-3.c           |   88 +
 .../i386/avx10_2-v2-aux-convert-4.c           |   46 +
 .../i386/avx10_2-v2-aux-convert-5.c           |   18 +
 .../i386/avx10_2-v2-aux-convert-6.c           |   25 +
 .../i386/avx10_2-v2-aux-convert-7.c           |   18 +
 .../i386/avx10_2-v2-aux-convert-8.c           |   46 +
 .../i386/avx10_2-v2-aux-convert-9.c           |   25 +
 gcc/testsuite/gcc.target/i386/funcspec-56.inc |    4 +
 gcc/testsuite/gcc.target/i386/tile-asmatt-1.c |   19 +
 .../gcc.target/i386/tile-asmintel-1.c         |   18 +
 gcc/testsuite/gcc.target/i386/tile-define-1.c |   13 +
 gcc/testsuite/gcc.target/i386/tile-define-2.c |   13 +
 gcc/testsuite/lib/target-supports.exp         |   26 +
 46 files changed, 3191 insertions(+), 45 deletions(-)
 create mode 100644 gcc/config/i386/aceintrin.h
 create mode 100644 gcc/config/i386/avx10_v2_auxintrin.h
 create mode 100644 gcc/config/i386/tileintrin.h
 create mode 100644 gcc/testsuite/gcc.target/i386/ace-asmatt-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/ace-asmintel-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/ace-define-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/ace-define-2.c
 create mode 100644 gcc/testsuite/gcc.target/i386/ace-funcspec-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-10.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-2.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-3.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-4.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-5.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-6.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-7.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-8.c
 create mode 100644 gcc/testsuite/gcc.target/i386/avx10_2-v2-aux-convert-9.c
 create mode 100644 gcc/testsuite/gcc.target/i386/tile-asmatt-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/tile-asmintel-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/tile-define-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/tile-define-2.c

-- 
2.34.1

Reply via email to