14#ifndef TLX_MATH_FFS_HEADER
15#define TLX_MATH_FFS_HEADER
26template <
typename Integral>
28 if (x == 0)
return 0u;
37#if defined(__GNUC__) || defined(__clang__)
42 return static_cast<unsigned>(__builtin_ffs(i));
47unsigned ffs(
unsigned i) {
48 return ffs(
static_cast<int>(i));
54 return static_cast<unsigned>(__builtin_ffsl(i));
59unsigned ffs(
unsigned long i) {
60 return ffs(
static_cast<long>(i));
65unsigned ffs(
long long i) {
66 return static_cast<unsigned>(__builtin_ffsll(i));
71unsigned ffs(
unsigned long long i) {
72 return ffs(
static_cast<long long>(i));
85unsigned ffs(
unsigned int i) {
97unsigned ffs(
unsigned long i) {
103unsigned ffs(
long long i) {
109unsigned ffs(
unsigned long long i) {
static unsigned ffs_template(Integral x)
ffs (find first set bit) - generic implementation
static unsigned ffs(int i)
find first set bit in integer, or zero if none are set.