linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] lib/find_bit: fast path for small bitmaps
@ 2021-01-21  0:06 Yury Norov
  2021-01-21  0:06 ` [PATCH 1/6] arch: rearrahge headers inclusion order in asm/bitops for m68k and sh Yury Norov
                   ` (5 more replies)
  0 siblings, 6 replies; 16+ messages in thread
From: Yury Norov @ 2021-01-21  0:06 UTC (permalink / raw)
  To: linux-m68k, linux-kernel, linux-sh, linux-arch
  Cc: Yury Norov, Geert Uytterhoeven, Yoshinori Sato, Rich Felker,
	Arnd Bergmann, Dennis Zhou, Andrew Morton, Wolfram Sang,
	David Sterba, Andy Shevchenko, Stefano Brivio, Ma, Jianpeng,
	Wei Yang, Josh Poimboeuf, Rasmus Villemoes

Bitmap operations are much simpler and faster in case of small bitmaps,
whicn fit into a single word. In linux/bitmap.h we have a machinery that
allows compiler to replace actual function call with a few instructions
if bitmaps passed into the function is small and its size is known at
compile time.

find_next_*_bit() lacks this functionality; despite users will
benefit from it a lot. One important example is cpumask subsystem if
NR_CPUS <= BITS_PER_LONG. In the very best case, the compiler may replace
a find_*_bit() call for such a bitmap with a single ffs or ffz instruction.

Yury Norov (6):
  arch: rearrahge headers inclusion order in asm/bitops for m68k and sh
  bitmap: move some macros from linux/bitmap.h to linux/bitops.h
  tools: sync bitops macro definitions with the kernel
  lib: inline _find_next_bit() wrappers
  lib: add fast path for find_next_*_bit()
  lib: add fast path for find_first_*_bit() and find_last_bit()

 arch/m68k/include/asm/bitops.h    |   4 +-
 arch/sh/include/asm/bitops.h      |   3 +-
 include/asm-generic/bitops/find.h | 123 +++++++++++++++++++++++++++---
 include/asm-generic/bitops/le.h   |  45 ++++++++++-
 include/linux/bitmap.h            |  11 ---
 include/linux/bitops.h            |  23 +++---
 lib/find_bit.c                    |  68 ++---------------
 tools/include/linux/bitmap.h      |  11 ---
 tools/include/linux/bitops.h      |  11 +++
 9 files changed, 188 insertions(+), 111 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-01-29  6:43 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-21  0:06 [PATCH 0/6] lib/find_bit: fast path for small bitmaps Yury Norov
2021-01-21  0:06 ` [PATCH 1/6] arch: rearrahge headers inclusion order in asm/bitops for m68k and sh Yury Norov
2021-01-21  8:03   ` Geert Uytterhoeven
2021-01-21  8:47   ` John Paul Adrian Glaubitz
2021-01-21  0:06 ` [PATCH 2/6] bitmap: move some macros from linux/bitmap.h to linux/bitops.h Yury Norov
2021-01-21 10:19   ` Andy Shevchenko
2021-01-21 20:38     ` Yury Norov
2021-01-21  0:06 ` [PATCH 3/6] tools: sync bitops macro definitions with the kernel Yury Norov
2021-01-21 10:23   ` Andy Shevchenko
2021-01-21  0:06 ` [PATCH 4/6] lib: inline _find_next_bit() wrappers Yury Norov
2021-01-21 10:28   ` Andy Shevchenko
2021-01-29  6:41     ` Yury Norov
2021-01-21  0:06 ` [PATCH 5/6] lib: add fast path for find_next_*_bit() Yury Norov
2021-01-21 10:34   ` Andy Shevchenko
2021-01-21  0:06 ` [PATCH 6/6] lib: add fast path for find_first_*_bit() and find_last_bit() Yury Norov
2021-01-21 10:40   ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).