On Fri, Jun 26, 2026 at 8:16 PM Dipesh Sharma <[email protected]> wrote: > > --- > 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? I'll let haochen help review the patches, he also implemented ACE V1 for GCC from intel side.
> > > 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 > -- BR, Hongtao
