|
|
|
@ -175,16 +175,6 @@ pg_nextpower2_64(uint64 num) |
|
|
|
|
return ((uint64) 1) << (pg_leftmost_one_pos64(num) + 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* pg_nextpower2_size_t |
|
|
|
|
* Returns the next higher power of 2 above 'num', for a size_t input. |
|
|
|
|
*/ |
|
|
|
|
#if SIZEOF_SIZE_T == 4 |
|
|
|
|
#define pg_nextpower2_size_t(num) pg_nextpower2_32(num) |
|
|
|
|
#else |
|
|
|
|
#define pg_nextpower2_size_t(num) pg_nextpower2_64(num) |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* pg_prevpower2_32 |
|
|
|
|
* Returns the next lower power of 2 below 'num', or 'num' if it's |
|
|
|
@ -211,16 +201,6 @@ pg_prevpower2_64(uint64 num) |
|
|
|
|
return ((uint64) 1) << pg_leftmost_one_pos64(num); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* pg_prevpower2_size_t |
|
|
|
|
* Returns the next lower power of 2 below 'num', for a size_t input. |
|
|
|
|
*/ |
|
|
|
|
#if SIZEOF_SIZE_T == 4 |
|
|
|
|
#define pg_prevpower2_size_t(num) pg_prevpower2_32(num) |
|
|
|
|
#else |
|
|
|
|
#define pg_prevpower2_size_t(num) pg_prevpower2_64(num) |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* pg_ceil_log2_32 |
|
|
|
|
* Returns equivalent of ceil(log2(num)) |
|
|
|
@ -299,4 +279,16 @@ pg_rotate_left32(uint32 word, int n) |
|
|
|
|
return (word << n) | (word >> (32 - n)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* size_t variants of the above, as required */ |
|
|
|
|
|
|
|
|
|
#if SIZEOF_SIZE_T == 4 |
|
|
|
|
#define pg_leftmost_one_pos_size_t pg_leftmost_one_pos32 |
|
|
|
|
#define pg_nextpower2_size_t pg_nextpower2_32 |
|
|
|
|
#define pg_prevpower2_size_t pg_prevpower2_32 |
|
|
|
|
#else |
|
|
|
|
#define pg_leftmost_one_pos_size_t pg_leftmost_one_pos64 |
|
|
|
|
#define pg_nextpower2_size_t pg_nextpower2_64 |
|
|
|
|
#define pg_prevpower2_size_t pg_prevpower2_64 |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#endif /* PG_BITUTILS_H */ |
|
|
|
|