Hi: Basically i "copy" this optimization from clang i386 backend, Refer to pr95524 for details. Bootstrap is ok, regression test on i386/x86-64 backend is ok.
gcc/ChangeLog: PR target/95524 * gcc/config/i386/i386-expand.c (ix86_expand_vec_shift_qihi_constant): New function. * gcc/config/i386/i386-protos.h: Declare. * gcc/config/i386/sse.md: Optimize shift V*QImode by constant. gcc/testsuite/ChangeLog: * gcc.target/i386/avx2-shiftqihi-constant-1.c: New test. * gcc.target/i386/avx2-shiftqihi-constant-2.c: Ditto. * gcc.target/i386/avx512bw-shiftqihi-constant-1.c: Ditto. * gcc.target/i386/avx512bw-shiftqihi-constant-2.c: Ditto. * gcc.target/i386/sse2-shiftqihi-constant-1.c: Ditto. * gcc.target/i386/sse2-shiftqihi-constant-2.c: Ditto. -- BR, Hongtao
0001-Optimize-V16QI-V32QI-V64QI-shift-by-constant.patch
Description: Binary data