diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2021-07-05 21:05:10 +0200 |
---|---|---|
committer | Uros Bizjak <ubizjak@gmail.com> | 2021-07-05 21:05:10 +0200 |
commit | be8749f939a933bca6de19d9cf1a510d5954c2fa (patch) | |
tree | 18ebc0b345a465057784661a80cbd102b3ec34d4 /gcc/fold-const.c | |
parent | 8e0b3827bbab6bf92d88d00909ecf8fb43365f39 (diff) | |
download | gcc-be8749f939a933bca6de19d9cf1a510d5954c2fa.zip gcc-be8749f939a933bca6de19d9cf1a510d5954c2fa.tar.gz gcc-be8749f939a933bca6de19d9cf1a510d5954c2fa.tar.bz2 |
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.
Diffstat (limited to 'gcc/fold-const.c')
0 files changed, 0 insertions, 0 deletions