On Thu, Dec 3, 2020 at 3:55 AM Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > On Wed, Dec 02, 2020 at 08:51:27PM +0200, Andy Shevchenko wrote: > > On Thu, Dec 03, 2020 at 03:27:33AM +0900, Yun Levi wrote: > > > On Thu, Dec 3, 2020 at 2:36 AM Andy Shevchenko > > > <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote: > > > > On Wed, Dec 02, 2020 at 09:26:05AM -0800, Yury Norov wrote: > > ... > > > > > Side note: speaking of performance, any plans to fix for_each_*_bit*() for > > > > cases when the nbits is known to be <= BITS_PER_LONG? > > > > > > > > Now it makes an awful code generation (something like few hundred bytes of > > > > code). > > > > > Frankly Speaking, I don't have an idea in now..... > > > Could you share your idea or wisdom? > > > > Something like (I may be mistaken by names, etc, I'm not a compiler expert, > > and this is in pseudo language, I don't remember all API names by hart, > > just to express the idea) as a rough first step > > > > __builtin_constant(nbits, find_next_set_bit_long, find_next_set_bit) > > > > find_next_set_bit_long() > > { > > unsigned long v = BIT_LAST_WORD(i); > > return ffs_long(v); > > } > > I think this idea is hard to apply to find_next_set_bit. because __builtin_constant should be not only to size but also to offset. though we find size && offset is const under BITS_PER_LONG, I'm not sure it could be implemented as const expression.. > > Same for find_first_set_bit() -> map it to ffs_long(). > > > > And I believe it can be optimized more. In case of the find_first_set_bit, I think it would be possible, But I think it much better to separate as another patch set. So I want to focus on adding find_prev_*_bit, find_last_zero_bit to this patchset and mail-thread. Frankly speaking I need time to see that suggestion and think so, in next patch v2, it wouldn't be included. > > Btw it will also require to reconsider test cases where such constant small > nbits values are passed (forcing compiler to avoid optimization somehow, one > way is to try random nbits for some test cases). > > -- > With Best Regards, > Andy Shevchenko > > if my understanding and attitude are wrong, I really apologize for my rudeness and stubbornness but please let me know what thing is wrong. Sincerely Levi.