On Mon, Jan 2, 2012 at 2:29 PM, Jakub Jelinek <ja...@redhat.com> wrote:
> I've noticed that my gather vectorization patch unfortunately regressed code > quality of > gcc.target/i386/avx2-i64gatherd256-2.c > gcc.target/i386/avx2-i64gatherd256-3.c > gcc.target/i386/avx2-i64gatherd256-4.c > gcc.target/i386/avx2-i64gatherps256-3.c > gcc.target/i386/avx2-i64gatherps256-4.c > tests. The problem is that after the unification of the gather > auto-vectorization and gather intrinsics nothing optimizes well the > new vec_select of the first half of gather pattern's result, while the > vec_select is a nop, register allocation often chooses to allocate the > gather pattern result in a different vector register from the result of > the following extraction of first half of it. > This patch fixes the regression by adding two patterns for combiner. > On some of the above tests it saves 2 instructions, one others one. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? > > 2012-01-02 Jakub Jelinek <ja...@redhat.com> > > * config/i386/sse.md (*avx2_gatherdi<mode>_3, *avx2_gatherdi<mode>_4): > New patterns. OK. Thanks, Uros.