i386: Implement V2SF shuffles
authorUros Bizjak <ubizjak@gmail.com>
Wed, 27 May 2020 14:32:10 +0000 (16:32 +0200)
committerUros Bizjak <ubizjak@gmail.com>
Wed, 27 May 2020 14:32:10 +0000 (16:32 +0200)
commit240198fe0812402e6085033e43d34decdec3c0cf
treebd3a88260c85a26089921557c8ba1b12af5c45ac
parent6c66c692043d680a5efcd9616b94f9629c417038
i386: Implement V2SF shuffles

2020-05-27  Uroš Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog:
* config/i386/mmx.md (mmx_pswapdsf2): Add SSE alternatives.
Enable insn pattern for TARGET_MMX_WITH_SSE.
(*mmx_movshdup): New insn pattern.
(*mmx_movsldup): Ditto.
(*mmx_movss): Ditto.
* config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
Handle E_V2SFmode.
(expand_vec_perm_movs): Handle E_V2SFmode.
(expand_vec_perm_even_odd): Ditto.
(expand_vec_perm_broadcast_1): Assert that E_V2SFmode
is already handled by standard shuffle patterns.

gcc/testsuite/ChangeLog:
* gcc.target/i386/vperm-v2sf.c: New test.
gcc/config/i386/i386-expand.c
gcc/config/i386/mmx.md
gcc/testsuite/gcc.target/i386/vperm-v2sf.c [new file with mode: 0644]