On Tue, Jun 1, 2021 at 1:29 PM Andrew Pinski <pins...@gmail.com> wrote:
>
> On Mon, May 31, 2021 at 10:21 PM Hongtao Liu via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
> >
> > Hi:
> >   This patch is about to simplify (view_convert:type ~a) < 0 to
> > (view_convert:type a) >= 0 when type is signed integer. Similar for
> > (view_convert:type ~a) >= 0.
> >   Bootstrapped and regtested on x86_64-linux-gnu{-m32,}.
> >   Ok for the trunk?
>
> Why not just do instead:
>
> /* ((view_convert)~a) is just ~(view_convert)a .  */
> (simplify
>   (view_convert (bit_not @0))
>   (if ((VECTOR_TYPE_P (type) && INTEGRAL_TYPE_P (TREE_TYPE (type)))
>         || INTEGRAL_TYPE_P (type))
>    (bit_not (view_convert @0))))
>
> And then the other patterns for converting ~a < 0 to a >= 0 should
> happen (if they don't add a few) (for wrapping types).
>
It fails c11-atomic-exec-3.c where @0 is _Bool and type is unsigned char.
> Thanks,
> Andrew Pinski
>
> >
> > gcc/ChangeLog:
> >
> >         PR middle-end/100738
> >         * match.pd ((view_convert ~a) < 0 --> (view_convert a) >= 0,
> >         (view_convert ~a) >= 0 --> (view_convert a) < 0): New GIMPLE
> >         simplification.
> >
> > gcc/testsuite/ChangeLog:
> >
> >         PR middle-end/100738
> >         * g++.target/i386/avx2-pr100738-1.C: New test.
> >         * g++.target/i386/sse4_1-pr100738-1.C: New test.
> >
> > --
> > BR,
> > Hongtao



-- 
BR,
Hongtao

Reply via email to