blob: 098687c3daafc4bd1250b27135a56acfff6a2a2f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// See LICENSE for license details.
#include <stdint.h>
#define GLUE_HELPER(x, y) x##y
#define GLUE(x, y) GLUE_HELPER(x, y)
#define DEFINE_CTZ(T,bits) \
int GLUE(ctz,bits)(T val) \
{ \
int n = 0; \
for (n = 0; n < bits; n++) { \
if (val & 1) break; \
val >>= 1; \
} \
return n; \
}
DEFINE_CTZ(int8_t,8)
DEFINE_CTZ(int16_t,16)
DEFINE_CTZ(int32_t,32)
DEFINE_CTZ(int64_t,64)
|