On Tue, May 19, 2020 at 5:14 AM H.J. Lu <hjl.to...@gmail.com> wrote:
>
> On Tue, May 19, 2020 at 1:48 AM Uros Bizjak <ubiz...@gmail.com> wrote:
> >
> > On Sun, May 17, 2020 at 7:06 PM H.J. Lu <hjl.to...@gmail.com> wrote:
> > >
> > > Duplicate the cmpstrn pattern for cmpmem.  The only difference is that
> > > the length argument of cmpmem is guaranteed to be less than or equal to
> > > lengths of 2 memory areas.  Since "repz cmpsb" can be much slower than
> > > memcmp function implemented with vector instruction, see
> > >
> > > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
> > >
> > > expand cmpmem to "repz cmpsb" only with -mgeneral-regs-only.
> >
> > If there is no benefit compared to the library implementation, then
> > enable these patterns only when -minline-all-stringops is used.
>
> Fixed.
>
> > Eventually these should be reimplemented with SSE4 string instructions.
> >
> > Honza is the author of the block handling x86 system, I'll leave the
> > review to him.
>
> We used to expand memcmp to "repz cmpsb" via cmpstrnsi.  It was changed
> by
>
> commit 9b0f6f5e511ca512e4faeabc81d2fd3abad9b02f
> Author: Nick Clifton <ni...@redhat.com>
> Date:   Fri Aug 12 16:26:11 2011 +0000
>
>     builtins.c (expand_builtin_memcmp): Do not use cmpstrnsi pattern.
>
>             * builtins.c (expand_builtin_memcmp): Do not use cmpstrnsi
>             pattern.
>             * doc/md.texi (cmpstrn): Note that the comparison stops if both
>             fetched bytes are zero.
>             (cmpstr): Likewise.
>             (cmpmem): Note that the comparison does not stop if both of the
>             fetched bytes are zero.
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95151
>
> is a regression.
>
> Honza, can you take a look at this?
>

PING:

https://gcc.gnu.org/pipermail/gcc-patches/2020-May/546921.html

-- 
H.J.

Reply via email to