On Tue, Oct 25, 2011 at 2:17 AM, Richard Henderson <r...@redhat.com> wrote: > The Idea with this patch set is to re-arrange vector permutation > so that it can be used to implement other patterns automatically. > > In particular, Altivec, SPU currently have (and Sparc VIS would need) > a large amount of boilerplate code that transforms several higher > level tree codes into vector permutation inside the backend. This > seems a bit unnecessary. > > It's arguable that we could simply make VEC_PERM_EXPR the only code > that gets generated at the vectorizer level, and drop some of these > other patterns entirely. I'm not 100% sure we should go that far, > but even if we did, I still think this is a good cleanup.
I think we should go that far. That would, of course, require that backends always provide at least vec_perm_const patterns that handle these cases, and not having that pattern would mean no support for interleaved operations. > Bootstrapped and tested on x86_64-linux only. I've only cross-tested > the ppc/spu patches. > > Ok? Looks good to me. Thanks, Richard. > > r~ > > > Richard Henderson (6): > Fix typos in the names of vec_extract & vec_interleave tree codes. > Change vec_perm checking and expansion level. > Implement interleave via permutation. > spu: Remove vec_extract_even/odd and vec_interleave expanders. > rs6000: Remove some vec_extract_even/odd expanders. > i386: Delete the vec_extract_even/odd patterns. > > gcc/config/i386/i386.c | 18 +-- > gcc/config/i386/sse.md | 29 --- > gcc/config/rs6000/altivec.md | 134 +------------- > gcc/config/spu/spu.md | 433 > ------------------------------------------ > gcc/doc/tm.texi | 2 +- > gcc/expr.c | 28 +-- > gcc/optabs.c | 331 ++++++++++++++++++++++---------- > gcc/optabs.h | 7 +- > gcc/target.def | 7 +- > gcc/tree-vect-data-refs.c | 80 +++----- > gcc/tree-vect-generic.c | 23 ++- > gcc/tree-vect-slp.c | 36 ++-- > gcc/tree-vect-stmts.c | 22 ++- > gcc/tree.def | 8 +- > 14 files changed, 343 insertions(+), 815 deletions(-) > > -- > 1.7.6.4 > >