On 02/02/2013 06:30 AM, Peter Maydell wrote: >> - * Undefined if no bit exists, so code should check against 0 first. >> + * Returns -1 if no bit exists. Note that compared to the C library >> + * routine ffsl, this one returns one less. >> */ > > Do any of our callers actually use the "-1 on 0 input" semantics? > (I guess that means "your new code you added" since the previous > callers all were happy with the undefined-on-zero semantics).
Yes, Paolo's code was replacing: ffsl(var) - 1 with bitops_ctzl(var) where var==0 was a definite possibility, so we DO have code that depends on this semantic of returning -1. > It seems an odd choice, since I can see a justification for: > (a) "return number of bits in word" [every bit in the word is > a trailing zero in some sense] > (b) "undefined" [matches gcc builtin_ctz semantics] For all non-zero values of var, ffsl(var) == bitops_ctzl(var)+1. Extending the equivalency for var==0 makes the function usable in the most places. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature