diff options
author | Sergey Kandaurov <pluknet@nginx.com> | 2018-06-20 19:34:06 +0300 |
---|---|---|
committer | Sergey Kandaurov <pluknet@nginx.com> | 2018-06-20 19:34:06 +0300 |
commit | 14bc4013941d38740d10681e7d54711f95cb38c4 (patch) | |
tree | 43713a1548b6b3419f7a1e918067532d6abd9184 /src/nxt_clang.h | |
parent | 50d458796180367b9e2e65884abd538f31b774de (diff) | |
download | unit-14bc4013941d38740d10681e7d54711f95cb38c4.tar.gz unit-14bc4013941d38740d10681e7d54711f95cb38c4.tar.bz2 |
Using own popcount where the compiler builtin is not available.
Diffstat (limited to 'src/nxt_clang.h')
-rw-r--r-- | src/nxt_clang.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/nxt_clang.h b/src/nxt_clang.h index 60d12fb2..0622aad3 100644 --- a/src/nxt_clang.h +++ b/src/nxt_clang.h @@ -132,6 +132,27 @@ nxt_prefetch(a) #endif +#if (NXT_HAVE_BUILTIN_POPCOUNT) + +#define nxt_popcount __builtin_popcount + +#else + +nxt_inline int +nxt_popcount(unsigned int x) +{ + int count; + + for (count = 0; x != 0; x >>= 1) { + count += (x & 1); + } + + return count; +} + +#endif + + #ifndef NXT_ALIGNMENT #if (NXT_SOLARIS) |