Hi, 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? 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)