]> git.ipfire.org Git - thirdparty/gcc.git/commit
i386: Don't optimize vshuf{i,f}{32x4,64x2} and vperm{i,f}128 to vblendps for %ymm16...
authorJakub Jelinek <jakub@redhat.com>
Tue, 14 Nov 2023 07:11:44 +0000 (08:11 +0100)
committerJakub Jelinek <jakub@redhat.com>
Tue, 14 Nov 2023 07:11:44 +0000 (08:11 +0100)
commit6043bfbd89b335dd10f093a653ee58c5b1e08ed3
tree83b44c00921f0f02e51d39c27ed0379485ed5257
parentbfcb6e518371bb943b77e0ef784e1de72a99aec6
i386: Don't optimize vshuf{i,f}{32x4,64x2} and vperm{i,f}128 to vblendps for %ymm16+ [PR112435]

The vblendps instruction is only VEX encoded, not EVEX, so can't be used if
there are %ymm16+ or EGPR registers involved.

2023-11-14  Jakub Jelinek  <jakub@redhat.com>
    Hu, Lin1  <lin1.hu@intel.com>

PR target/112435
* config/i386/sse.md (avx512vl_shuf_<shuffletype>32x4_1<mask_name>,
<mask_codefor>avx512dq_shuf_<shuffletype>64x2_1<mask_name>): Add
alternative with just x instead of v constraints and xjm instead of
vm and use vblendps as optimization only with that alternative.

* gcc.target/i386/avx512vl-pr112435-1.c: New test.
* gcc.target/i386/avx512vl-pr112435-2.c: New test.
* gcc.target/i386/avx512vl-pr112435-3.c: New test.
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/avx512vl-pr112435-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr112435-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr112435-3.c [new file with mode: 0644]