aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/dmd
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2021-02-13 10:32:16 +0100
committerJakub Jelinek <jakub@redhat.com>2021-02-13 10:32:16 +0100
commit0f3a743b688f4845e1798eed9b2e2284e891da11 (patch)
treed0ae1048cc10ce9b7db5822a0bebd4ae8921cb88 /gcc/d/dmd
parentfab095dad5e1970ceae598ec9c98b07cce3eb599 (diff)
downloadgcc-0f3a743b688f4845e1798eed9b2e2284e891da11.zip
gcc-0f3a743b688f4845e1798eed9b2e2284e891da11.tar.gz
gcc-0f3a743b688f4845e1798eed9b2e2284e891da11.tar.bz2
i386: Add combiner splitter to optimize V2SImode memory rotation [PR96166]
Since the x86 backend enabled V2SImode vectorization (with TARGET_MMX_WITH_SSE), slp vectorization can kick in and emit movq (%rdi), %xmm1 pshufd $225, %xmm1, %xmm0 movq %xmm0, (%rdi) instead of rolq $32, (%rdi) we used to emit (or emit when slp vectorization is disabled). I think the rotate is both smaller and faster, so this patch adds a combiner splitter to optimize that back. 2021-02-13 Jakub Jelinek <jakub@redhat.com> PR target/96166 * config/i386/mmx.md (*mmx_pshufd_1): Add a combine splitter for swap of V2SImode elements in memory into DImode memory rotate by 32. * gcc.target/i386/pr96166.c: New test.
Diffstat (limited to 'gcc/d/dmd')
0 files changed, 0 insertions, 0 deletions