aboutsummaryrefslogtreecommitdiff
path: root/src/common.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common.cpp')
-rw-r--r--src/common.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/common.cpp b/src/common.cpp
index 44e0158b3..2591ca068 100644
--- a/src/common.cpp
+++ b/src/common.cpp
@@ -37,6 +37,7 @@ gb_inline void zero_size(void *ptr, isize len) {
i32 next_pow2(i32 n);
i64 next_pow2(i64 n);
+isize next_pow2_isize(isize n);
template <typename U, typename V>
@@ -680,6 +681,24 @@ i64 next_pow2(i64 n) {
n++;
return n;
}
+isize next_pow2_isize(isize n) {
+ if (n <= 0) {
+ return 0;
+ }
+ n--;
+ n |= n >> 1;
+ n |= n >> 2;
+ n |= n >> 4;
+ n |= n >> 8;
+ n |= n >> 16;
+ if (gb_size_of(isize) == 8) {
+ n |= n >> 32;
+ }
+ n++;
+ return n;
+}
+
+
i32 bit_set_count(u32 x) {
x -= ((x >> 1) & 0x55555555);