On Tue, Dec 9, 2014 at 12:33 AM, Evgeny Stupachenko <evstu...@gmail.com> wrote:
> The patch fix pblendv expand. > The bug was uncovered when permutation operands are constants. > In this case we init target register for expand_vec_perm_1 with > constant and then rewrite the target with constant for > expand_vec_perm_pblend. > > The patch fixes 403.gcc execution, compiled with -Ofast -funroll-loops > -flto -march=corei7. > > Bootstrap and make check passed. > > Is it ok? Please add a testcase. Uros. > > Evgeny > > 2014-12-09 Evgeny Stupachenko <evstu...@gmail.com> > > gcc/ > * config/i386/i386.c (expand_vec_perm_pblendv): Gen new rtx for > expand_vec_perm_1 target. > > diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c > index eafc15a..5a914ad 100644 > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -47546,6 +47546,7 @@ expand_vec_perm_pblendv (struct expand_vec_perm_d *d) > dcopy.op0 = dcopy.op1 = d->op1; > else > dcopy.op0 = dcopy.op1 = d->op0; > + dcopy.target = gen_reg_rtx (vmode); > dcopy.one_operand_p = true; > > for (i = 0; i < nelt; ++i)