https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122446

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Hu <[email protected]>:

https://gcc.gnu.org/g:87f9ff6798d4004cde6a56665dbd424e6f28ff6e

commit r16-5145-g87f9ff6798d4004cde6a56665dbd424e6f28ff6e
Author: Hu, Lin1 <[email protected]>
Date:   Tue Oct 28 16:11:47 2025 +0800

    i386: Support C++ template parameters in AMX intrinsics [PR122446]

    The AMX intrinsics previously used string concatenation with the '#'
    operator to construct register names, which prevented their use with
    C++ template non-type parameters. This patch converts all AMX intrinsics
    to use inline assembly constraints with the %c format specifier.

    And Intel style registers also have % prefix, update Intel syntax to use
plain
    register names without % preifx.

    gcc/ChangeLog:

            PR target/122446
            * config/i386/amxavx512intrin.h (_tile_cvtrowps2bf16hi_internal):
            Input register name by inline asm %c[...], and remove %% before tmm
            from intel side.
            (_tile_cvtrowps2bf16li_internal): Ditto.
            * config/i386/amxbf16intrin.h (_tile_dpbf16ps_internal): Ditto
            * config/i386/amxcomplexintrin.h (_tile_cmmimfp16ps_internal):
Ditto
            (_tile_cmmrlfp16ps_internal): Ditto
            (_tile_cmmimfp16ps): Ditto
            (_tile_cmmrlfp16ps): Ditto
            * config/i386/amxfp16intrin.h (_tile_dpfp16ps_internal): Ditto
            (_tile_dpfp16ps): Ditto
            * config/i386/amxfp8intrin.h (_tile_dpbf8ps_internal): Ditto
            (_tile_dpbhf8ps_internal): Ditto
            (_tile_dphbf8ps_internal): Ditto
            (_tile_dphf8ps_internal): Ditto
            (_tile_dpbf8ps): Ditto
            (_tile_dpbhf8ps): Ditto
            (_tile_dphbf8ps): Ditto
            (_tile_dphf8ps): Ditto
            * config/i386/amxint8intrin.h (_tile_int8_dp_internal): Ditto
            * config/i386/amxmovrsintrin.h (_tile_loaddrs_internal): Ditto
            (_tile_loaddrst1_internal): Ditto
            (_tile_loaddrs): Ditto
            (_tile_loaddrst1): Ditto
            * config/i386/amxtf32intrin.h (_tile_mmultf32ps_internal): Ditto
            * config/i386/amxtileintrin.h (_tile_loadd): Ditto
            (_tile_loadd_internal): Ditto
            (_tile_stream_loadd): Ditto
            (_tile_stream_loadd_internal): Ditto
            (_tile_stored): Ditto
            (_tile_stored_internal): Ditto
            (_tile_zero): Ditto
            (_tile_zero_internal): Ditto

    gcc/testsuite/ChangeLog:

            PR target/122446
            * gcc.target/i386/amxbf16-asmintel-1.c: Modify dg-final to check
intel
            form.
            * gcc.target/i386/amxcomplex-asmintel-1.c: Ditto.
            * gcc.target/i386/amxfp16-asmintel-1.c: Ditto.
            * gcc.target/i386/amxfp8-asmintel-1.c: Ditto.
            * gcc.target/i386/amxint8-asmintel-1.c: Ditto.
            * gcc.target/i386/amxmovrs-asmintel-1.c: Ditto.
            * gcc.target/i386/amxtf32-asmintel-1.c: Ditto.
            * gcc.target/i386/amxtile-asmintel-1.c: Ditto.
            * g++.target/i386/pr122446-1.C: New test.
            * g++.target/i386/pr122446-amxavx512.C: Ditto.
            * g++.target/i386/pr122446-amxbf16.C: Ditto.
            * g++.target/i386/pr122446-amxcomplex.C: Ditto.
            * g++.target/i386/pr122446-amxfp16.C: Ditto.
            * g++.target/i386/pr122446-amxfp8.C: Ditto.
            * g++.target/i386/pr122446-amxint8.C: Ditto.
            * g++.target/i386/pr122446-amxmovrs.C: Ditto.
            * g++.target/i386/pr122446-amxtf32.C: Ditto.
            * g++.target/i386/pr122446-amxtile.C: Ditto.

Reply via email to