]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Match __builtin_ctzl/__builtin_ctzll signatures
authorPavel P <pavlov.pavel@gmail.com>
Tue, 17 Jan 2023 01:39:37 +0000 (04:39 +0300)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Sun, 22 Jan 2023 20:34:45 +0000 (21:34 +0100)
make sure input/output args match original functions from clang/gcc

fallback_builtins.h

index eacaee36bf4a17893e5347853a63418e07cc3a61..5b49205ec6576e2fce11bcb2e79f0982ad0f68c8 100644 (file)
 /* This is not a general purpose replacement for __builtin_ctz. The function expects that value is != 0
  * Because of that assumption trailing_zero is not initialized and the return value of _BitScanForward is not checked
  */
-static __forceinline unsigned long __builtin_ctz(uint32_t value) {
+static __forceinline int __builtin_ctz(unsigned int value) {
 #ifdef X86_FEATURES
 #  ifndef X86_NOCHECK_TZCNT
     if (x86_cpu_has_tzcnt)
 #  endif
-        return _tzcnt_u32(value);
+        return (int)_tzcnt_u32(value);
 #endif
     unsigned long trailing_zero;
     _BitScanForward(&trailing_zero, value);
-    return trailing_zero;
+    return (int)trailing_zero;
 }
 #define HAVE_BUILTIN_CTZ
 
@@ -29,16 +29,16 @@ static __forceinline unsigned long __builtin_ctz(uint32_t value) {
 /* This is not a general purpose replacement for __builtin_ctzll. The function expects that value is != 0
  * Because of that assumption trailing_zero is not initialized and the return value of _BitScanForward64 is not checked
  */
-static __forceinline unsigned long long __builtin_ctzll(uint64_t value) {
+static __forceinline int __builtin_ctzll(unsigned long long value) {
 #ifdef X86_FEATURES
 #  ifndef X86_NOCHECK_TZCNT
     if (x86_cpu_has_tzcnt)
 #  endif
-        return _tzcnt_u64(value);
+        return (int)_tzcnt_u64(value);
 #endif
     unsigned long trailing_zero;
     _BitScanForward64(&trailing_zero, value);
-    return trailing_zero;
+    return (int)trailing_zero;
 }
 #define HAVE_BUILTIN_CTZLL
 #endif // Microsoft AMD64