]> gcc.gnu.org Git - gcc.git/commit
i386: Implement 4-byte vector (V4QI/V2HI) constant permutations
authorUros Bizjak <ubizjak@gmail.com>
Mon, 5 Jul 2021 19:05:10 +0000 (21:05 +0200)
committerUros Bizjak <ubizjak@gmail.com>
Mon, 5 Jul 2021 19:05:10 +0000 (21:05 +0200)
commitbe8749f939a933bca6de19d9cf1a510d5954c2fa
tree18ebc0b345a465057784661a80cbd102b3ec34d4
parent8e0b3827bbab6bf92d88d00909ecf8fb43365f39
i386: Implement 4-byte vector (V4QI/V2HI) constant permutations

2021-07-05  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
* config/i386/i386-expand.c (ix86_split_mmx_punpck):
Handle V4QI and V2HI modes.
(expand_vec_perm_blend): Allow 4-byte vector modes with TARGET_SSE4_1.
Handle V4QI mode. Emit mmx_pblendvb32 for 4-byte modes.
(expand_vec_perm_pshufb): Rewrite to use switch statemets.
Handle 4-byte dual operands with TARGET_XOP and single operands
with TARGET_SSSE3.  Emit mmx_ppermv32 for TARGET_XOP and
mmx_pshufbv4qi3 for TARGET_SSSE3.
(expand_vec_perm_pblendv): Allow 4-byte vector modes with TARGET_SSE4_1.
(expand_vec_perm_interleave2): Allow 4-byte vector modes.
(expand_vec_perm_pshufb2): Allow 4-byte vector modes with TARGET_SSSE3.
(expand_vec_perm_even_odd_1): Handle V4QI mode.
(expand_vec_perm_broadcast_1): Handle V4QI mode.
(ix86_vectorize_vec_perm_const): Handle V4QI mode.
* config/i386/mmx.md (mmx_ppermv32): New insn pattern.
(mmx_pshufbv4qi3): Ditto.
(*mmx_pblendw32): Ditto.
(*mmx_pblendw64): Rename from *mmx_pblendw.
(mmx_punpckhbw_low): New insn_and_split pattern.
(mmx_punpcklbw_low): Ditto.
gcc/config/i386/i386-expand.c
gcc/config/i386/mmx.md
This page took 0.070152 seconds and 6 git commands to generate.