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

--- Comment #2 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <h...@gcc.gnu.org>:

https://gcc.gnu.org/g:9e30860f8c77309c9f74742fe8866d2ca0d0fe7a

commit r16-3170-g9e30860f8c77309c9f74742fe8866d2ca0d0fe7a
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Tue Aug 12 05:19:24 2025 -0700

    x86: Convert integer constant to mode of move

    For

    (set (reg/v:DI 106 [ k ])
         (const_int 3000000000 [0xb2d05e00]))
    ...
    (set (reg:V4SI 115 [ _13 ])
         (vec_duplicate:V4SI (subreg:SI (reg/v:DI 106 [ k ]) 0)))
    ...
    (set (reg:V2SI 118 [ _9 ])
         (vec_duplicate:V2SI (subreg:SI (reg/v:DI 106 [ k ]) 0)))

    we should generate

    (set (reg:SI 125)
         (const_int -1294967296 [0xffffffffb2d05e00]))
    (set (reg:V4SI 124)
         (vec_duplicate:V4SI (reg:VSI 125))
    ...
    (set (reg:V4SI 115 [ _13 ])
         (reg:V4SI 124)
    ...
    (set (reg:V2SI 118 [ _9 ])
         (subreg:V2SI (reg:V4SI 124))

    by converting integer constant to mode of move.

    gcc/

            PR target/121497
            * config/i386/i386-features.cc (ix86_broadcast_inner): Convert
            integer constant to mode of move

    gcc/testsuite/

            PR target/121497
            * gcc.target/i386/pr121497.c: New test.

    Co-authored-by: Liu, Hongtao <hongtao....@intel.com>
    Signed-off-by: H.J. Lu <hjl.to...@gmail.com>

Reply via email to