[PATCH] AVX2 vector permutation fixes plus vec_pack_trunc_{v16hi,v8si,v4di} support

2011-10-12 Thread Jakub Jelinek
Hi! This patch started with noticing while working on PR50596 that #define N 1024 long long a[N]; char b[N]; void foo (void) { int i; for (i = 0; i N; i++) b[i] = a[i]; } is even with -O3 -mavx2 vectorized just with 16-byte vectors instead of 32-byte vectors and has various fixes I've

Re: [PATCH] AVX2 vector permutation fixes plus vec_pack_trunc_{v16hi,v8si,v4di} support

2011-10-12 Thread Richard Henderson
On 10/12/2011 09:09 AM, Jakub Jelinek wrote: /* Multiply the shuffle indicies by two. */ - emit_insn (gen_avx2_lshlv8si3 (t1, t1, const1_rtx)); + if (maskmode == V8SImode) + emit_insn (gen_avx2_lshlv8si3 (t1, t1, const1_rtx)); + else + emit_insn

[PATCH] AVX2 vector permutation fixes plus vec_pack_trunc_{v16hi,v8si,v4di} support (take 2)

2011-10-12 Thread Jakub Jelinek
On Wed, Oct 12, 2011 at 10:49:33AM -0700, Richard Henderson wrote: I believe I've commented on everything else in the previous messages. Here is an updated patch which should incorporate your comments from both mails (thanks for them). Bootstrapped/regtested on x86_64-linux and i686-linux, ok

Re: [PATCH] AVX2 vector permutation fixes plus vec_pack_trunc_{v16hi,v8si,v4di} support (take 2)

2011-10-12 Thread Richard Henderson
On 10/12/2011 02:23 PM, Jakub Jelinek wrote: 2011-10-12 Jakub Jelinek ja...@redhat.com * config/i386/i386.md (UNSPEC_VPERMDI): Remove. * config/i386/i386.c (ix86_expand_vec_perm): Handle V16QImode and V32QImode for TARGET_AVX2. (MAX_VECT_LEN): Increase to 32.