vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Jan 13 19:54:59 2013 +0200| [82fdabda9df936231519720e055c7033d5a209b0] | committer: Rémi Denis-Courmont
vlc_common: add ctz() to count trailing zeroes > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=82fdabda9df936231519720e055c7033d5a209b0 --- include/vlc_common.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/include/vlc_common.h b/include/vlc_common.h index d09bf78..6a3dd9b 100644 --- a/include/vlc_common.h +++ b/include/vlc_common.h @@ -524,7 +524,7 @@ static inline unsigned clz (unsigned x) while (x) { - x = x >> 1; + x >>= 1; i--; } return i; @@ -536,6 +536,24 @@ static inline unsigned clz (unsigned x) /* XXX: this assumes that int is 32-bits or more */ #define clz32( x ) (clz(x) - ((sizeof(unsigned) - sizeof (uint32_t)) * 8)) +/** Count trailing zeroes */ +VLC_USED +static inline unsigned ctz (unsigned x) +{ +#if VLC_GCC_VERSION(3,4) + return __builtin_ctz (x); +#else + unsigned i = sizeof (x) * 8; + + while (x) + { + x <<= 1; + i--; + } + return i; +#endif +} + /** Bit weight */ VLC_USED static inline unsigned popcount (unsigned x) _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
