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)

Reply via email to