+ maintainer. cc H.J On Thu, Jul 9, 2020 at 4:33 PM Hongtao Liu <crazy...@gmail.com> wrote: > > Hi: > For a constant vector having one duplicated value, there's no need > to put the whole vector in the constant pool, using embedded broadcast > instead. > > Bootstrap test is Ok, regression test for i386/x86-64 backend is ok. > > gcc/ChangeLog: > > PR target/87767 > * config/i386/i386-features.c > (replace_constant_pool_with_broadcast): New function. > (constant_pool_broadcast): Ditto. > (class pass_constant_pool_broadcast): New pass. > (make_pass_constant_pool_broadcast): Ditto. > * config/i386/i386-passes.def: Insert new pass after combine. > * config/i386/i386-protos.h > (make_pass_constant_pool_broadcast): Declare. > * config/i386/sse.md (*avx512dq_mul<mode>3<mask_name>_bcst, > *avx512f_mul<mode>3<mask_name>_bcst): New define_insn. > > gcc/testsuite/ChangeLog: > > PR target/87767 > * gcc.target/i386/avx2-broadcast-pr87767-1.c: New test. > * gcc.target/i386/avx512f-broadcast-pr87767-1.c: New test. > * gcc.target/i386/avx512f-broadcast-pr87767-2.c: New test. > * gcc.target/i386/avx512vl-broadcast-pr87767-1.c: New test. > * gcc.target/i386/pr92865-1.c: Adjust testcase. > > > > > -- > BR, > Hongtao
-- BR, Hongtao