Messages in this thread | | | Date | Thu, 21 Jan 2021 12:40:20 +0200 | From | Andy Shevchenko <> | Subject | Re: [PATCH 6/6] lib: add fast path for find_first_*_bit() and find_last_bit() |
| |
On Wed, Jan 20, 2021 at 04:06:30PM -0800, Yury Norov wrote: > Similarly to bitmap functions, users will benefit if we'll handle > a case of small-size bitmaps that fit into a single word. > > While here, move the find_last_bit() declaration to bitops/find.h > where other find_*_bit() functions sit.
...
> +static inline > +unsigned long find_first_bit(const unsigned long *addr, unsigned long size) > +{ > + if (small_const_nbits(size)) { > + unsigned long idx; > + > + if (!*addr) > + return size; > + > + idx = __ffs(*addr);
> + return idx < size ? idx : size;
But can't we mask it first, then check for 0 (no bit set) otherwise return the result of __ffs directly?
Same comment for other similar places.
> + } > + > + return _find_first_bit(addr, size); > +}
-- With Best Regards, Andy Shevchenko
| |