On Wed, May 16, 2018 at 5:03 PM, Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > On Tue, May 15, 2018 at 6:22 PM, William Breathitt Gray > <vilhelm.gray@xxxxxxxxx> wrote: > >> For example, suppose you would like to iterate over a 16-bit integer 4 >> bits at a time, skipping over 4-bit groups with no set bit, where XXXX >> represents the current 4-bit group: >> >> Example: 1011 1110 0000 1111 >> First loop: 1011 1110 0000 XXXX >> Second loop: 1011 XXXX 0000 1111 >> Third loop: XXXX 1110 0000 1111 >> >> Each iteration of the loop returns the next 4-bit group that has at >> least one set bit. >> >> The for_each_set_clump macro has six parameters: >> >> * clump: set to current clump index for the iteration >> * index: set to current bitmap word index for the iteration >> * offset: bits offset of the found clump in the bitmap word >> * bits: bitmap to search within >> * size: bitmap size in number of clumps >> * clump_size: clump size in number of bits >> >> The clump_size argument can be an arbitrary number of bits and is not >> required to be a multiple of 2. > > I must say I'm impressed. Very nice arithmetics going on there. > > If I can get some ACK for the bitops patch I'd be happy to merge > it all through the GPIO tree. The users are pretty clear cut. Give me also some time to go through proposed API, I think it might have needed more alignment with existing find_* and for_* helpers. > BTW: if I could, I would pull out Donald Knuth's "The Art of Computer > Programming vol 4A" chapter 7.1.3 "Bitwise Tricks and Techniques" > to see what he has to say about the subject, but I don't have > that book as it turns out. I can also add the Standford collection of bit algos here: https://graphics.stanford.edu/~seander/bithacks.html -- With Best Regards, Andy Shevchenko