[Bug rtl-optimization/107057] [11/12 Regression] ICE in extract_constrain_insn, at recog.cc:2692

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jun 23 08:44:54 GMT 2026


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

--- Comment #14 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Venkataramanan Kumar
<vekumar@gcc.gnu.org>:

https://gcc.gnu.org/g:dbc6b5266eb17638ca1d5b22ab35364e0b2e0d48

commit r17-1768-gdbc6b5266eb17638ca1d5b22ab35364e0b2e0d48
Author: Sarvesh Chandra <Sarvesh.Chandra@amd.com>
Date:   Tue Jun 23 12:20:01 2026 +0530

    i386: Emit vunpcklpd for register V4DF/V8DF movddup [PR107057]

    The avx512f_movddup512 and avx_movddup256 patterns only accepted a
    memory source operand, so an even-lane duplicate of a value already in
    a register forced that register to be spilled to the stack and
    reloaded with vmovddup.

    Add a register source alternative that emits vunpcklpd, which performs
    the same even-lane interleave directly on a register operand.  A
    genuine memory source still selects vmovddup.

    The register alternative duplicates a single source operand
    (vunpcklpd %1, %1, %0), so it is typed sselog1, the single-source SSE
    logical type, while the memory alternative keeps ssemov.

    gcc/ChangeLog:

            PR target/107057
            * config/i386/sse.md (avx512f_movddup512<mask_name>): Add a
            register source alternative that emits vunpcklpd.
            (avx_movddup256<mask_name>): Likewise.

    gcc/testsuite/ChangeLog:

            PR target/107057
            * gcc.target/i386/avx512-movedup.c: New test.

    Co-authored-by: Ashwin Godbole <Ashwin.Godbole@amd.com>
    Signed-off-by: Sarvesh Chandra <Sarvesh.Chandra@amd.com>


More information about the Gcc-bugs mailing list