From 9e002ad08415a415d96555b00242398ab5d16e8b Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 23 Aug 2011 11:24:21 +0930 Subject: [PATCH] alloc: fix !HAVE_BUILTIN_POPCOUNTL code. --- ccan/alloc/bitops.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ccan/alloc/bitops.c b/ccan/alloc/bitops.c index 978710eb..78c2b24f 100644 --- a/ccan/alloc/bitops.c +++ b/ccan/alloc/bitops.c @@ -70,22 +70,22 @@ unsigned int popcount(unsigned long val) v = (v & 0x5555555555555555ULL) + ((v >> 1) & 0x5555555555555555ULL); v = (v & 0x3333333333333333ULL) - + ((v >> 1) & 0x3333333333333333ULL); + + ((v >> 2) & 0x3333333333333333ULL); v = (v & 0x0F0F0F0F0F0F0F0FULL) - + ((v >> 1) & 0x0F0F0F0F0F0F0F0FULL); + + ((v >> 4) & 0x0F0F0F0F0F0F0F0FULL); v = (v & 0x00FF00FF00FF00FFULL) - + ((v >> 1) & 0x00FF00FF00FF00FFULL); + + ((v >> 8) & 0x00FF00FF00FF00FFULL); v = (v & 0x0000FFFF0000FFFFULL) - + ((v >> 1) & 0x0000FFFF0000FFFFULL); + + ((v >> 16) & 0x0000FFFF0000FFFFULL); v = (v & 0x00000000FFFFFFFFULL) - + ((v >> 1) & 0x00000000FFFFFFFFULL); + + ((v >> 32) & 0x00000000FFFFFFFFULL); return v; } val = (val & 0x55555555ULL) + ((val >> 1) & 0x55555555ULL); - val = (val & 0x33333333ULL) + ((val >> 1) & 0x33333333ULL); - val = (val & 0x0F0F0F0FULL) + ((val >> 1) & 0x0F0F0F0FULL); - val = (val & 0x00FF00FFULL) + ((val >> 1) & 0x00FF00FFULL); - val = (val & 0x0000FFFFULL) + ((val >> 1) & 0x0000FFFFULL); + val = (val & 0x33333333ULL) + ((val >> 2) & 0x33333333ULL); + val = (val & 0x0F0F0F0FULL) + ((val >> 4) & 0x0F0F0F0FULL); + val = (val & 0x00FF00FFULL) + ((val >> 8) & 0x00FF00FFULL); + val = (val & 0x0000FFFFULL) + ((val >> 16) & 0x0000FFFFULL); return val; #endif } -- 2.39.2