[PATCH][i386] Split not+broadcast+pand to broadcast+pandn.
Andrew Pinski
pinskia@gmail.com
Wed May 26 04:12:30 GMT 2021
On Tue, May 25, 2021 at 6:17 PM Hongtao Liu <crazylht@gmail.com> wrote:
>
> Update patch:
> The new patch simplify (vec_duplicate (not (nonimmedaite_operand)))
> to (not (vec_duplicate (nonimmedaite_operand))). This is not a
> straightforward simplification, just adding some tendency to pull not
> out of vec_duplicate.
>
> For i386, it will enable below opt
>
> from
> notl %edi
> vpbroadcastd %edi, %xmm0
> vpand %xmm1, %xmm0, %xmm0
> to
> vpbroadcastd %edi, %xmm0
> vpandn %xmm1, %xmm0, %xmm0
>
> Bootstrapped and regtested on x86_64-linux-gnu{-m32,}.
> Ok for trunk?
> gcc/ChangeLog:
>
> PR target/100711
> * simplify-rtx.c (simplify_unary_operation_1):
> Simplify (vec_duplicate (not (nonimmedaite_operand)))
> to (not (vec_duplicate (nonimmedaite_operand))).
>
> gcc/testsuite/ChangeLog:
>
> PR target/100711
> * gcc.target/i386/avx2-pr100711.c: New test.
> * gcc.target/i386/avx512bw-pr100711.c: New test.
This patch should not use nonimmedaite_operand at all in
simplify-rtx.c. Rather use !CONSTANT_P (XEXP (op, 0)) instead.
And even then (not CONST_INT) will never be there anyways as it will
always be simplified to a constant in the first place. So removing
that check is fine.
Thanks,
Andrew
More information about the Gcc-patches
mailing list