https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63594
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Author: jakub Date: Wed Oct 22 06:58:57 2014 New Revision: 216541 URL: https://gcc.gnu.org/viewcvs?rev=216541&root=gcc&view=rev Log: PR target/63594 * config/i386/i386.c (ix86_expand_vector_init_duplicate): For V{8HI,16QI,16HI,32QI}mode call ix86_vector_duplicate_value even for just TARGET_AVX2, not only for TARGET_AVX512VL && TARGET_AVX512BW. For V{32HI,64QI}mode, call ix86_vector_duplicate_value only if TARGET_AVX512BW, otherwise build it using concatenation of 256-bit broadcast. * config/i386/sse.md (AVX_VEC_DUP_MODE): Moved after avx512 broadcast patterns. (vec_dup<mode>): Likewise. For avx2 use v<sseintprefix>broadcast<bcstscalarsuff> instead of vbroadcast<ssescalarmodesuffix>. (AVX2_VEC_DUP_MODE): New mode iterator. (*vec_dup<mode>): New TARGET_AVX2 define_insn with AVX2_VEC_DUP_MODE iterator, add a splitter for that. * gcc.dg/pr63594-1.c: New test. * gcc.dg/pr63594-2.c: New test. * gcc.target/i386/sse2-pr63594-1.c: New test. * gcc.target/i386/sse2-pr63594-2.c: New test. * gcc.target/i386/avx-pr63594-1.c: New test. * gcc.target/i386/avx-pr63594-2.c: New test. * gcc.target/i386/avx2-pr63594-1.c: New test. * gcc.target/i386/avx2-pr63594-2.c: New test. * gcc.target/i386/avx512f-pr63594-1.c: New test. * gcc.target/i386/avx512f-pr63594-2.c: New test. * gcc.target/i386/avx512f-vec-init.c: Adjust expected insn counts. Added: trunk/gcc/testsuite/gcc.dg/pr63594-1.c trunk/gcc/testsuite/gcc.dg/pr63594-2.c trunk/gcc/testsuite/gcc.target/i386/avx-pr63594-1.c trunk/gcc/testsuite/gcc.target/i386/avx-pr63594-2.c trunk/gcc/testsuite/gcc.target/i386/avx2-pr63594-1.c trunk/gcc/testsuite/gcc.target/i386/avx2-pr63594-2.c trunk/gcc/testsuite/gcc.target/i386/avx512f-pr63594-1.c trunk/gcc/testsuite/gcc.target/i386/avx512f-pr63594-2.c trunk/gcc/testsuite/gcc.target/i386/sse2-pr63594-1.c trunk/gcc/testsuite/gcc.target/i386/sse2-pr63594-2.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/i386.c trunk/gcc/config/i386/sse.md trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.target/i386/avx512f-vec-init.c