On Thu, Nov 20, 2014 at 5:25 PM, Evgeny Stupachenko wrote:
> Bootstrap / make check passed with updated patch.
>
> Is it still ok?
>
> It looks like we don't need "expand_vec_perm_vpshufb2_vpermq_even_odd"
> any more with the patch.
> However the clean up will be in the separate patch after approp
Bootstrap / make check passed with updated patch.
Is it still ok?
It looks like we don't need "expand_vec_perm_vpshufb2_vpermq_even_odd"
any more with the patch.
However the clean up will be in the separate patch after appropriate testing.
Modified ChangeLog:
2014-11-20 Evgeny Stupachenko
g
Good point! "gen_shift" also requires only SSE2.
That way we can optimize out interleave sequence for V16QI mode in
expand_vec_perm_even_odd_1.
Thanks!
Evgeny
Updated patch:
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 085eb54..054089b 100644
--- a/gcc/config/i386/i386.c
++
On 11/20/2014 12:36 PM, Evgeny Stupachenko wrote:
> + /* Required for "pack". */
> + if (!TARGET_SSE4_2 || d->one_operand_p)
> +return false;
Why the SSE4_2 check here when...
> +
> + /* Only V8HI, V16QI, V16HI and V32QI modes are more profitable than general
> + shuffles. */
> + if
Thank you.
Patch with proposed fixes:
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 085eb54..09c0057 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -48322,6 +48322,120 @@ expand_vec_perm_vpshufb2_vpermq_even_odd
(struct expand_vec_perm_d *d)
return true
On Thu, Nov 20, 2014 at 12:36 PM, Evgeny Stupachenko wrote:
> Hi,
>
> The patch expand even/odd permutation using:
> "and, and, pack" in odd case
> "shift, shift, pack" in even case
>
> instead of current "pshufb, pshufb, or" or big set of unpack insns.
>
> AVX2/CORE bootstrap and make check passe
On Thu, Nov 20, 2014 at 02:36:26PM +0300, Evgeny Stupachenko wrote:
> + /* Only V8HI, V16QI, V16HI and V32QI modes are more profitable than general
> + shuffles. */
I think switch (d->vmode) would be more readable.
> + op = gen_reg_rtx (d->vmode);
> + t = gen_reg_rtx (V4DImode);
>