linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/6] lib/find_bit: fast path for small bitmaps
@ 2021-01-29 20:45 Yury Norov
  2021-01-29 20:45 ` [PATCH 1/6] arch: rearrange headers inclusion order in asm/bitops for m68k and sh Yury Norov
                   ` (6 more replies)
  0 siblings, 7 replies; 13+ messages in thread
From: Yury Norov @ 2021-01-29 20:45 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, John Paul Adrian Glaubitz

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_*_bit() API lacks this functionality; despite users will benefit from it
a lot. One important example is cpumask subsystem, when 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.

Tools is synchronized with new implementation where needed.

Yury Norov (6):
  arch: rearrange headers inclusion order in asm/bitops for m68k and sh
  lib: inttroduce BITS_{FIRST,LAST}() macro
  bits_per_long.h: introduce SMALL_CONST() macro
  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       | 108 +++++++++++++++++++++---
 include/asm-generic/bitops/le.h         |  38 ++++++++-
 include/asm-generic/bitsperlong.h       |   2 +
 include/linux/bitmap.h                  |  60 ++++++-------
 include/linux/bitops.h                  |  12 ---
 include/linux/bits.h                    |   6 ++
 include/linux/cpumask.h                 |   8 +-
 include/linux/netdev_features.h         |   2 +-
 include/linux/nodemask.h                |   2 +-
 lib/bitmap.c                            |  26 +++---
 lib/find_bit.c                          |  72 +++-------------
 lib/genalloc.c                          |   8 +-
 tools/include/asm-generic/bitops/find.h |  85 +++++++++++++++++--
 tools/include/asm-generic/bitsperlong.h |   2 +
 tools/include/linux/bitmap.h            |  39 +++------
 tools/include/linux/bits.h              |   6 ++
 tools/lib/bitmap.c                      |   6 +-
 tools/lib/find_bit.c                    |  56 +++++-------
 tools/testing/radix-tree/bitmap.c       |   4 +-
 21 files changed, 330 insertions(+), 219 deletions(-)

-- 
2.25.1


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

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

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-29 20:45 [PATCH 0/6] lib/find_bit: fast path for small bitmaps Yury Norov
2021-01-29 20:45 ` [PATCH 1/6] arch: rearrange headers inclusion order in asm/bitops for m68k and sh Yury Norov
2021-01-29 20:45 ` [PATCH 2/6] lib: inttroduce BITS_{FIRST,LAST}() macro Yury Norov
2021-01-29 20:45 ` [PATCH 2/5] bits_per_long.h: introduce SMALL_CONST() macro Yury Norov
2021-01-29 21:10   ` Andy Shevchenko
2021-01-29 21:24     ` Joe Perches
2021-01-29 21:28     ` Yury Norov
2021-01-29 22:25     ` Yury Norov
2021-01-29 20:45 ` [PATCH 3/5] lib: inline _find_next_bit() wrappers Yury Norov
2021-01-29 20:45 ` [PATCH 4/5] lib: add fast path for find_next_*_bit() Yury Norov
2021-01-29 20:45 ` [PATCH 6/6] lib: add fast path for find_first_*_bit() and find_last_bit() Yury Norov
2021-01-29 20:51 ` [PATCH 0/6] lib/find_bit: fast path for small bitmaps Yury Norov
2021-01-29 21:12   ` 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).