]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
handle 32bit size_t when building for x64
authorPavel P <pavlov.pavel@gmail.com>
Sat, 18 Jan 2025 21:27:19 +0000 (23:27 +0200)
committerPavel P <pavlov.pavel@gmail.com>
Sat, 18 Jan 2025 21:30:55 +0000 (23:30 +0200)
lib/common/bitstream.h

index c9c645416f31080f0dc20bdd83d0386fdbf62caa..c0db11d405e16a5737b4bef62fe3a8165e891ec1 100644 (file)
@@ -162,11 +162,11 @@ MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC,
 FORCE_INLINE_TEMPLATE size_t BIT_getLowerBits(size_t bitContainer, U32 const nbBits)
 {
 #if defined(STATIC_BMI2) && STATIC_BMI2 == 1 && !defined(ZSTD_NO_INTRINSICS)
-#if defined(__x86_64__) || defined(_M_X64)
-    return _bzhi_u64(bitContainer, nbBits);
-#else
+#  if defined(__x86_64__) || defined(_M_X64)
+    return sizeof(size_t) == sizeof(U64) ? _bzhi_u64(bitContainer, nbBits) : _bzhi_u32((U32)bitContainer, nbBits);
+#  else
     return _bzhi_u32(bitContainer, nbBits);
-#endif
+#  endif
 #else
     assert(nbBits < BIT_MASK_SIZE);
     return bitContainer & BIT_mask[nbBits];