diff options
Diffstat (limited to 'deps/jemalloc/include/jemalloc/internal/bit_util.h')
-rw-r--r-- | deps/jemalloc/include/jemalloc/internal/bit_util.h | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/deps/jemalloc/include/jemalloc/internal/bit_util.h b/deps/jemalloc/include/jemalloc/internal/bit_util.h deleted file mode 100644 index 8d078a8a3..000000000 --- a/deps/jemalloc/include/jemalloc/internal/bit_util.h +++ /dev/null @@ -1,165 +0,0 @@ -#ifndef JEMALLOC_INTERNAL_BIT_UTIL_H -#define JEMALLOC_INTERNAL_BIT_UTIL_H - -#include "jemalloc/internal/assert.h" - -#define BIT_UTIL_INLINE static inline - -/* Sanity check. */ -#if !defined(JEMALLOC_INTERNAL_FFSLL) || !defined(JEMALLOC_INTERNAL_FFSL) \ - || !defined(JEMALLOC_INTERNAL_FFS) -# error JEMALLOC_INTERNAL_FFS{,L,LL} should have been defined by configure -#endif - - -BIT_UTIL_INLINE unsigned -ffs_llu(unsigned long long bitmap) { - return JEMALLOC_INTERNAL_FFSLL(bitmap); -} - -BIT_UTIL_INLINE unsigned -ffs_lu(unsigned long bitmap) { - return JEMALLOC_INTERNAL_FFSL(bitmap); -} - -BIT_UTIL_INLINE unsigned -ffs_u(unsigned bitmap) { - return JEMALLOC_INTERNAL_FFS(bitmap); -} - -BIT_UTIL_INLINE unsigned -ffs_zu(size_t bitmap) { -#if LG_SIZEOF_PTR == LG_SIZEOF_INT - return ffs_u(bitmap); -#elif LG_SIZEOF_PTR == LG_SIZEOF_LONG - return ffs_lu(bitmap); -#elif LG_SIZEOF_PTR == LG_SIZEOF_LONG_LONG - return ffs_llu(bitmap); -#else -#error No implementation for size_t ffs() -#endif -} - -BIT_UTIL_INLINE unsigned -ffs_u64(uint64_t bitmap) { -#if LG_SIZEOF_LONG == 3 - return ffs_lu(bitmap); -#elif LG_SIZEOF_LONG_LONG == 3 - return ffs_llu(bitmap); -#else -#error No implementation for 64-bit ffs() -#endif -} - -BIT_UTIL_INLINE unsigned -ffs_u32(uint32_t bitmap) { -#if LG_SIZEOF_INT == 2 - return ffs_u(bitmap); -#else -#error No implementation for 32-bit ffs() -#endif - return ffs_u(bitmap); -} - -BIT_UTIL_INLINE uint64_t -pow2_ceil_u64(uint64_t x) { - x--; - x |= x >> 1; - x |= x >> 2; - x |= x >> 4; - x |= x >> 8; - x |= x >> 16; - x |= x >> 32; - x++; - return x; -} - -BIT_UTIL_INLINE uint32_t -pow2_ceil_u32(uint32_t x) { - x--; - x |= x >> 1; - x |= x >> 2; - x |= x >> 4; - x |= x >> 8; - x |= x >> 16; - x++; - return x; -} - -/* Compute the smallest power of 2 that is >= x. */ -BIT_UTIL_INLINE size_t -pow2_ceil_zu(size_t x) { -#if (LG_SIZEOF_PTR == 3) - return pow2_ceil_u64(x); -#else - return pow2_ceil_u32(x); -#endif -} - -#if (defined(__i386__) || defined(__amd64__) || defined(__x86_64__)) -BIT_UTIL_INLINE unsigned -lg_floor(size_t x) { - size_t ret; - assert(x != 0); - - asm ("bsr %1, %0" - : "=r"(ret) // Outputs. - : "r"(x) // Inputs. - ); - assert(ret < UINT_MAX); - return (unsigned)ret; -} -#elif (defined(_MSC_VER)) -BIT_UTIL_INLINE unsigned -lg_floor(size_t x) { - unsigned long ret; - - assert(x != 0); - -#if (LG_SIZEOF_PTR == 3) - _BitScanReverse64(&ret, x); -#elif (LG_SIZEOF_PTR == 2) - _BitScanReverse(&ret, x); -#else -# error "Unsupported type size for lg_floor()" -#endif - assert(ret < UINT_MAX); - return (unsigned)ret; -} -#elif (defined(JEMALLOC_HAVE_BUILTIN_CLZ)) -BIT_UTIL_INLINE unsigned -lg_floor(size_t x) { - assert(x != 0); - -#if (LG_SIZEOF_PTR == LG_SIZEOF_INT) - return ((8 << LG_SIZEOF_PTR) - 1) - __builtin_clz(x); -#elif (LG_SIZEOF_PTR == LG_SIZEOF_LONG) - return ((8 << LG_SIZEOF_PTR) - 1) - __builtin_clzl(x); -#else -# error "Unsupported type size for lg_floor()" -#endif -} -#else -BIT_UTIL_INLINE unsigned -lg_floor(size_t x) { - assert(x != 0); - - x |= (x >> 1); - x |= (x >> 2); - x |= (x >> 4); - x |= (x >> 8); - x |= (x >> 16); -#if (LG_SIZEOF_PTR == 3) - x |= (x >> 32); -#endif - if (x == SIZE_T_MAX) { - return (8 << LG_SIZEOF_PTR) - 1; - } - x++; - return ffs_zu(x) - 2; -} -#endif - -#undef BIT_UTIL_INLINE - -#endif /* JEMALLOC_INTERNAL_BIT_UTIL_H */ |