This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 2/3] Optimize strchrnul with unrolling, better header and unaligned loads
- From: Joseph Myers <joseph at codesourcery dot com>
- To: Ondřej Bílka <neleai at seznam dot cz>
- Cc: <libc-alpha at sourceware dot org>
- Date: Thu, 28 May 2015 17:02:32 +0000
- Subject: Re: [PATCH 2/3] Optimize strchrnul with unrolling, better header and unaligned loads
- Authentication-results: sourceware.org; auth=none
- References: <20150526173150 dot GA26817 at domone> <20150526180007 dot GB26817 at domone>
On Tue, 26 May 2015, Ondřej Bílka wrote:
> +static always_inline
> +int
> +found_in_long_bytes(char *s, unsigned long int cmask, char **result)
> +{
> + const unsigned long int *lptr = (const unsigned long int *) s;
> + unsigned long int mask = contains_zero (*lptr) | contains_zero (*lptr ^ cmask);
> + if (mask)
> + {
> + *result = s + ffsl (mask) / 8 - 1;
If this gets used in strchr, note ffsl is in the user's namespace. Are
you sure this will always be inlined by all supported GCC versions on all
supported architectures (or converted to a call to a libgcc __clz*
function, which is just as good in namespace terms)?
--
Joseph S. Myers
joseph@codesourcery.com