util/bitset: add BITSET_SIZE()
authorBrian Paul <brianp@vmware.com>
Wed, 25 May 2022 16:21:21 +0000 (10:21 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 14 Jul 2022 19:16:07 +0000 (19:16 +0000)
To get the size (in bits) of a bitset.
And minor clean-up in __bitset_ffs().

Signed-off-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17062>

src/util/bitset.h

index c1a3848..55cb5d1 100644 (file)
@@ -52,6 +52,7 @@
 #define BITSET_EQUAL(x, y) (memcmp( (x), (y), sizeof (x) ) == 0)
 #define BITSET_ZERO(x) memset( (x), 0, sizeof (x) )
 #define BITSET_ONES(x) memset( (x), 0xff, sizeof (x) )
+#define BITSET_SIZE(x) (8 * sizeof(x))  // bitset size in bits
 
 #define BITSET_BITWORD(b) ((b) / BITSET_WORDBITS)
 #define BITSET_BIT(b) (1u << ((b) % BITSET_WORDBITS))
@@ -300,11 +301,9 @@ __bitset_count(const BITSET_WORD *x, unsigned n)
 static inline int
 __bitset_ffs(const BITSET_WORD *x, int n)
 {
-   int i;
-
-   for (i = 0; i < n; i++) {
+   for (int i = 0; i < n; i++) {
       if (x[i])
-        return ffs(x[i]) + BITSET_WORDBITS * i;
+         return ffs(x[i]) + BITSET_WORDBITS * i;
    }
 
    return 0;