Для ARM нашёл CLZ (Counting Lead Zeros)
https://www.scss.tcd.ie/~waldroj/3d1/arm_arm.pdf страница 175.
не одна bitwise (вычитание добавить нужно), но зато без цикла.
Теперь не процессоро-специфичное, но компиляторо-специфичное.
GCC:
- __builtin_clz() - число лидирующих нулей
- __builtin_ctz() - число оконченых нулей
- __builtin_popcount() - число единиц в числе
https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
www.go4expert.com/articles/builtin-gcc-functions-b...
Понятно, что эффективность будет зависеть от того, есть ли реализация на конкретном CPU подобающей команды.
Вот тут:
stackoverflow.com/questions/355967/how-to-use-msvc...
https://msdn.microsoft.com/en-us/library/wfd9z0bb.aspx
отсылка к реализации MSVC