This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, x86] Fix pblendv expand.
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: Evgeny Stupachenko <evstupac at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Richard Henderson <rth at redhat dot com>
- Date: Tue, 9 Dec 2014 09:57:43 +0100
- Subject: Re: [PATCH, x86] Fix pblendv expand.
- Authentication-results: sourceware.org; auth=none
- References: <CAOvf_xxs3bOHcPCy_RyUQ7Tw=+KRodLZSidHgg7wPW=+WKi4qA at mail dot gmail dot com>
On Tue, Dec 9, 2014 at 12:33 AM, Evgeny Stupachenko <evstupac@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 <evstupac@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)