]> 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>
Thu, 31 Jul 2025 01:23:08 +0000 (18:23 -0700)
commit82cc62b51dcbc74298424c2e9540dd479ca5f26f
treec1ac58ace2e02bbdaae6133e84f2130bc17de96d
parent6d0aa946d27feff108ac651becc578600b25cb4f
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.

(cherry picked from commit 6a466839340dce3b596b3ae5ce85bd05a067ae00)
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/pr121274.c [new file with mode: 0644]