]> git.ipfire.org Git - thirdparty/gcc.git/commit
Eliminate redundant vpextrq/vpinsrq when move TI to V4SI.
authorliuhongt <hongtao.liu@intel.com>
Tue, 29 Jul 2025 07:01:37 +0000 (00:01 -0700)
committerliuhongt <hongtao.liu@intel.com>
Wed, 30 Jul 2025 07:35:00 +0000 (00:35 -0700)
commit6a466839340dce3b596b3ae5ce85bd05a067ae00
tree353749087ab4696621345707e3a4aef72a42fd26
parent7aa9565a62ea2ce04e2ddf61e1932bc123374988
Eliminate redundant vpextrq/vpinsrq when move TI to V4SI.

r14-1902-g96c3539f2a3813 split TImode move with 2 DImode move, it's
supposed to optimize TImode in parameter/return since accoring to
psABI it's stored into 2 general registers.

But when TImode is not in parameter/return, it could create redundancy
in the PR.

The patch add a splitter to handle that.

.i.e.
(insn 10 9 14 2 (set (subreg:V2DI (reg:V4SI 98 [ <retval> ]) 0)
     (vec_concat:V2DI (subreg:DI (reg:TI 101) 0)
 (subreg:DI (reg:TI 101) 8)))
 8442 {vec_concatv2di}
(expr_list:REG_DEAD (reg:TI 101)

gcc/ChangeLog:

PR target/121274
* config/i386/sse.md (*vec_concatv2di_0): Add a splitter
before it.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr121274.c: New test.
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/pr121274.c [new file with mode: 0644]