]> git.ipfire.org Git - thirdparty/gcc.git/commit
x86: Convert integer constant to mode of move
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 12 Aug 2025 12:19:24 +0000 (05:19 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 13 Aug 2025 01:01:47 +0000 (18:01 -0700)
commit9e30860f8c77309c9f74742fe8866d2ca0d0fe7a
tree8e3c56a7d0d67b594fbfbbc76b574e66e561d761
parent28c0d45201a0a4a0f7dd285b1992039cd6af015f
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.liu@intel.com>
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
gcc/config/i386/i386-features.cc
gcc/testsuite/gcc.target/i386/pr121497.c [new file with mode: 0644]