[PATCH][AArch64] Add rawmemchr

Adhemerval Zanella adhemerval.zanella@linaro.org
Thu Jun 2 13:44:00 GMT 2016



On 02/06/2016 10:08, Alexander Cherepanov wrote:
> On 2016-05-27 16:29, Wilco Dijkstra wrote:
>> Add a simple rawmemchr implementation. Use strlen for rawmemchr(s, '\0') as
>> it is the fastest way to search for '\0'.  Otherwise use memchr with an infinite size.
>> This is 3x faster on benchtests for large sizes.
> 
> Is memchr on your arch guaranteed to work with an infinite size?
> 
> In theory, it's guaranteed by C11 and POSIX (e.g. see http://open-std.org/jtc1/sc22/wg14/www/docs/n1533.htm ) but IIUC there is a sentiment in the glibc community that passing to a library function a size greater than the real size of an object is an error. (Would be glad to find out I misunderstood something here.)
> 
> In practice, memchr with an infinite size is broken at least on x86-64 and i386 -- https://sourceware.org/bugzilla/show_bug.cgi?id=19387 .
> 

Currently aarch64 uses the default implementation (string/memchr.c)
and the optimized one in review seems also fine for infinite size.



More information about the Libc-alpha mailing list