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.