From d6d78f9b7ff02354af3ac8a918bb5cec6c4718e8 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Wed, 29 Apr 2020 14:15:12 +1000 Subject: [PATCH] util: add BITSET_LAST_BIT() helper This is the reverse of BITSET_FFS() Reviewed-by: Kenneth Graunke Part-of: --- src/util/bitset.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/util/bitset.h b/src/util/bitset.h index 0fdfe205f39..012764afc42 100644 --- a/src/util/bitset.h +++ b/src/util/bitset.h @@ -95,7 +95,21 @@ __bitset_ffs(const BITSET_WORD *x, int n) return 0; } +/* Get the last bit set in a bitset. + */ +static inline int +__bitset_last_bit(const BITSET_WORD *x, int n) +{ + for (int i = n - 1; i >= 0; i--) { + if (x[i]) + return util_last_bit(x[i]) + BITSET_WORDBITS * i; + } + + return 0; +} + #define BITSET_FFS(x) __bitset_ffs(x, ARRAY_SIZE(x)) +#define BITSET_LAST_BIT(x, size) __bitset_last_bit(x, size) static inline unsigned __bitset_next_set(unsigned i, BITSET_WORD *tmp, -- 2.30.2