]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Add files via upload
authorNiadb <34917535+Niadb@users.noreply.github.com>
Tue, 28 Jul 2020 08:52:52 +0000 (02:52 -0600)
committerGitHub <noreply@github.com>
Tue, 28 Jul 2020 08:52:52 +0000 (02:52 -0600)
lib/compress/zstd_compress_internal.h

index f2be0188c0264947cb66a47dcb7c9665325e44e1..00531ec44e0ce2bbdfd0e1f0288c9e311ff7f7ef 100644 (file)
@@ -498,8 +498,12 @@ static unsigned ZSTD_NbCommonBytes (size_t val)
     if (MEM_isLittleEndian()) {
         if (MEM_64bits()) {
 #       if defined(_MSC_VER) && defined(_WIN64)
-            unsigned long r = 0;
-            return _BitScanForward64( &r, (U64)val ) ? (unsigned)(r >> 3) : 0;
+#           if STATIC_BMI2
+                return _tzcnt_u64(val) >> 3;
+#           else
+                unsigned long r = 0;
+                return _BitScanForward64( &r, (U64)val ) ? (unsigned)(r >> 3) : 0;
+#           endif
 #       elif defined(__GNUC__) && (__GNUC__ >= 4)
             return (__builtin_ctzll((U64)val) >> 3);
 #       else
@@ -530,8 +534,12 @@ static unsigned ZSTD_NbCommonBytes (size_t val)
     } else {  /* Big Endian CPU */
         if (MEM_64bits()) {
 #       if defined(_MSC_VER) && defined(_WIN64)
-            unsigned long r = 0;
-            return _BitScanReverse64( &r, val ) ? (unsigned)(r >> 3) : 0;
+#           if STATIC_BMI2
+                           return _lzcnt_u64(val) >> 3;
+#           else
+                           unsigned long r = 0;
+                           return _BitScanReverse64(&r, (U64)val) ? (unsigned)(r >> 3) : 0;
+#           endif
 #       elif defined(__GNUC__) && (__GNUC__ >= 4)
             return (__builtin_clzll(val) >> 3);
 #       else