From f90fd9eeb32469e41c8f4207afa44929f9ec070e Mon Sep 17 00:00:00 2001 From: Alex Ray Date: Sat, 19 Jan 2013 22:53:46 -0800 Subject: cutils: bitops: Add Hamming weight to bitmask Change-Id: I5c6b7adf711007edfffcb4fdf8e05b04bcffef54 --- include/cutils/bitops.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include/cutils/bitops.h') diff --git a/include/cutils/bitops.h b/include/cutils/bitops.h index eb44236..c26dc54 100644 --- a/include/cutils/bitops.h +++ b/include/cutils/bitops.h @@ -75,6 +75,16 @@ static inline int bitmask_ffz(unsigned int *bitmask, int num_bits) return -1; } +static inline int bitmask_weight(unsigned int *bitmask, int num_bits) +{ + int i; + int weight = 0; + + for (i = 0; i < BITS_TO_WORDS(num_bits); i++) + weight += __builtin_popcount(bitmask[i]); + return weight; +} + static inline void bitmask_set(unsigned int *bitmask, int bit) { bitmask[BIT_WORD(bit)] |= BIT_MASK(bit); -- cgit v1.1