aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/digest
diff options
context:
space:
mode:
authormonster <monster@yandex-team.ru>2022-02-10 16:47:19 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:47:19 +0300
commitdd76ae1f6213d065375ab296699f764faafbe5bd (patch)
tree075a4553d0011d8f92752c0891794febb15912cf /library/cpp/digest
parentf02a874a7290593efbe4b3aeae69a04b46c1cc86 (diff)
downloadydb-dd76ae1f6213d065375ab296699f764faafbe5bd.tar.gz
Restoring authorship annotation for <monster@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/digest')
-rw-r--r--library/cpp/digest/sfh/sfh.h52
1 files changed, 26 insertions, 26 deletions
diff --git a/library/cpp/digest/sfh/sfh.h b/library/cpp/digest/sfh/sfh.h
index 372938654c..6535013201 100644
--- a/library/cpp/digest/sfh/sfh.h
+++ b/library/cpp/digest/sfh/sfh.h
@@ -1,51 +1,51 @@
#pragma once
-
+
#include <util/system/defaults.h>
#include <util/system/unaligned_mem.h>
-
+
inline ui32 SuperFastHash(const void* d, size_t l) noexcept {
ui32 hash = (ui32)l;
ui32 tmp;
if (!l || !d)
return 0;
-
+
TUnalignedMemoryIterator<ui16, 4> iter(d, l);
-
+
while (!iter.AtEnd()) {
hash += (ui32)iter.Next();
tmp = ((ui32)iter.Next() << 11) ^ hash;
hash = (hash << 16) ^ tmp;
hash += hash >> 11;
- }
-
+ }
+
switch (iter.Left()) {
case 3:
hash += (ui32)iter.Next();
- hash ^= hash << 16;
+ hash ^= hash << 16;
hash ^= ((ui32)(i32) * (const i8*)iter.Last()) << 18;
- hash += hash >> 11;
- break;
+ hash += hash >> 11;
+ break;
case 2:
hash += (ui32)iter.Cur();
- hash ^= hash << 11;
- hash += hash >> 17;
- break;
+ hash ^= hash << 11;
+ hash += hash >> 17;
+ break;
case 1:
hash += *((const i8*)iter.Last());
- hash ^= hash << 10;
- hash += hash >> 1;
- }
-
- /* Force "avalanching" of final 127 bits */
- hash ^= hash << 3;
- hash += hash >> 5;
- hash ^= hash << 4;
- hash += hash >> 17;
- hash ^= hash << 25;
- hash += hash >> 6;
-
- return hash;
-}
+ hash ^= hash << 10;
+ hash += hash >> 1;
+ }
+
+ /* Force "avalanching" of final 127 bits */
+ hash ^= hash << 3;
+ hash += hash >> 5;
+ hash ^= hash << 4;
+ hash += hash >> 17;
+ hash ^= hash << 25;
+ hash += hash >> 6;
+
+ return hash;
+}