Re: [4.7 PATCH] Fix ix86_vectorize_vec_perm_const_ok (PR target/57896)

2014-02-20 Thread Jakub Jelinek
On Fri, Feb 21, 2014 at 08:30:39AM +0100, Uros Bizjak wrote: > Attached is the complete backport of the patch to 4.7 branch. Jakub, > there is a slight churn in expand_vec_parm_interleave2 (there is no > dfinal.one_operand_p), can you please check if everything is OK there? Yeah, one_operand_p has

[4.7 PATCH] Fix ix86_vectorize_vec_perm_const_ok (PR target/57896)

2014-02-20 Thread Uros Bizjak
On Thu, Feb 20, 2014 at 7:39 PM, Jakub Jelinek wrote: > As discussed in the PR, gen_reg_rtx from when init_emit has not been > initialized is highly undesirable. The following patch makes sure that > for d->testing_p we never call gen_reg_rtx (i.e. from within > ix86_vectorize_vec_perm_const_ok)

Re: [PATCH] Fix ix86_vectorize_vec_perm_const_ok (PR target/57896)

2014-02-20 Thread Richard Henderson
On 02/20/2014 02:59 PM, Jakub Jelinek wrote: > ... so all we care about is that > target/op0/op1 have the right modes and that target is a different register > from op0 and op0 either the same as op1 or yet another register. That's my point: yet another register. Thus the creation of a brand new

Re: [PATCH] Fix ix86_vectorize_vec_perm_const_ok (PR target/57896)

2014-02-20 Thread Jakub Jelinek
On Thu, Feb 20, 2014 at 02:41:06PM -0600, Richard Henderson wrote: > On 02/20/2014 12:39 PM, Jakub Jelinek wrote: > > + if (!d->testing_p) > > +{ > > + dremap.target = gen_reg_rtx (dremap.vmode); > > + dfinal.op0 = gen_lowpart (dfinal.vmode, dremap.target); > > +} > ... > > +

Re: [PATCH] Fix ix86_vectorize_vec_perm_const_ok (PR target/57896)

2014-02-20 Thread Richard Henderson
On 02/20/2014 12:39 PM, Jakub Jelinek wrote: > + if (!d->testing_p) > +{ > + dremap.target = gen_reg_rtx (dremap.vmode); > + dfinal.op0 = gen_lowpart (dfinal.vmode, dremap.target); > +} ... > + if (d->testing_p) > + d_copy.target = gen_lowpart (V4DFmode, d->target);

Re: [PATCH] Fix ix86_vectorize_vec_perm_const_ok (PR target/57896)

2014-02-20 Thread Uros Bizjak
On Thu, Feb 20, 2014 at 9:08 PM, Jakub Jelinek wrote: >> active) with RTL checking, further tested with >> GCC_TEST_RUN_EXPENSIVE=1 make -j16 -k check >> RUNTESTFLAGS='--target_board=unix\{-msse2,-msse3,-mssse3,-msse4,-mavx,-mavx2,-mavx512f\} >> dg-torture.exp=*vshuf*' >> (on AVX HW, so -mavx2

Re: [PATCH] Fix ix86_vectorize_vec_perm_const_ok (PR target/57896)

2014-02-20 Thread Jakub Jelinek
On Thu, Feb 20, 2014 at 07:39:33PM +0100, Jakub Jelinek wrote: > active) with RTL checking, further tested with > GCC_TEST_RUN_EXPENSIVE=1 make -j16 -k check > RUNTESTFLAGS='--target_board=unix\{-msse2,-msse3,-mssse3,-msse4,-mavx,-mavx2,-mavx512f\} > dg-torture.exp=*vshuf*' > (on AVX HW, so -mavx

[PATCH] Fix ix86_vectorize_vec_perm_const_ok (PR target/57896)

2014-02-20 Thread Jakub Jelinek
Hi! As discussed in the PR, gen_reg_rtx from when init_emit has not been initialized is highly undesirable. The following patch makes sure that for d->testing_p we never call gen_reg_rtx (i.e. from within ix86_vectorize_vec_perm_const_ok) and never try to emit insns. Bootstrapped/regtested on x8