]> git.ipfire.org Git - thirdparty/gcc.git/commit
Optimize vshuf{i,f}{32x4,64x2} ymm and vperm{i,f}128 ymm
authorHu, Lin1 <lin1.hu@intel.com>
Mon, 16 Jan 2023 03:23:09 +0000 (11:23 +0800)
committerHaochen Jiang <haochen.jiang@intel.com>
Thu, 20 Apr 2023 01:30:40 +0000 (09:30 +0800)
commitc2dac2e5fbbcdda013aa7b0609d579abec8120ec
treebc4bfe6629d8ffe9c511394108c8062d032c5e60
parentcf0d9dbc091af3ea28432dd7fff08a6e6c6659d8
Optimize vshuf{i,f}{32x4,64x2} ymm and vperm{i,f}128 ymm

vshuf{i,f}{32x4,64x2} ymm and vperm{i,f}128 ymm are 3 clk.
We can optimze them to vblend, vmovaps when there's no cross-lane.

gcc/ChangeLog:

* config/i386/sse.md: Modify insn vperm{i,f}
and vshuf{i,f}.

gcc/testsuite/ChangeLog:

* gcc.target/i386/avx512vl-vshuff32x4-1.c: Modify test.
* gcc.target/i386/avx512vl-vshuff64x2-1.c: Ditto.
* gcc.target/i386/avx512vl-vshufi32x4-1.c: Ditto.
* gcc.target/i386/avx512vl-vshufi64x2-1.c: Ditto.
* gcc.target/i386/opt-vperm-vshuf-1.c: New test.
* gcc.target/i386/opt-vperm-vshuf-2.c: Ditto.
* gcc.target/i386/opt-vperm-vshuf-3.c: Ditto.
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/avx512vl-vshuff32x4-1.c
gcc/testsuite/gcc.target/i386/avx512vl-vshuff64x2-1.c
gcc/testsuite/gcc.target/i386/avx512vl-vshufi32x4-1.c
gcc/testsuite/gcc.target/i386/avx512vl-vshufi64x2-1.c
gcc/testsuite/gcc.target/i386/opt-vperm-vshuf-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/opt-vperm-vshuf-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/opt-vperm-vshuf-3.c [new file with mode: 0644]