aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-ch.cc
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2023-07-12 12:14:08 +0200
committerJan Beulich <jbeulich@suse.com>2023-07-12 12:14:08 +0200
commit28cdba24a9b8405d9f4ec2591c53d23a8bb74051 (patch)
treec90e5f5e9a9d2bcaea4877097399bca216a6e708 /gcc/tree-ssa-loop-ch.cc
parent96d32c111e63b7cde38410f4e316512771c8ecff (diff)
downloadgcc-28cdba24a9b8405d9f4ec2591c53d23a8bb74051.zip
gcc-28cdba24a9b8405d9f4ec2591c53d23a8bb74051.tar.gz
gcc-28cdba24a9b8405d9f4ec2591c53d23a8bb74051.tar.bz2
x86: make better use of VBROADCASTSS / VPBROADCASTD
... in vec_dupv4sf / *vec_dupv4si. The respective broadcast insns are never longer (yet sometimes shorter) than the corresponding VSHUFPS / VPSHUFD, due to the immediate operand of the shuffle insns balancing the (uniform) need for VEX3 in the broadcast ones. When EVEX encoding is respective the broadcast insns are always shorter. Add new alternatives to cover the AVX2 and AVX512 cases as appropriate. While touching this anyway, switch to consistently using "sseshuf1" in the "type" attributes for all shuffle forms. gcc/ * config/i386/sse.md (vec_dupv4sf): Make first alternative use vbroadcastss for AVX2. New AVX512F alternative. (*vec_dupv4si): New AVX2 and AVX512F alternatives using vpbroadcastd. Replace sselog1 by sseshuf1 in "type" attribute. gcc/testsuite/ * gcc.target/i386/avx2-dupv4sf.c: New test. * gcc.target/i386/avx2-dupv4si.c: Likewise. * gcc.target/i386/avx512f-dupv4sf.c: Likewise. * gcc.target/i386/avx512f-dupv4si.c: Likewise.
Diffstat (limited to 'gcc/tree-ssa-loop-ch.cc')
0 files changed, 0 insertions, 0 deletions