diff options
| author | monster <[email protected]> | 2022-02-10 16:47:19 +0300 | 
|---|---|---|
| committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:47:19 +0300 | 
| commit | dd76ae1f6213d065375ab296699f764faafbe5bd (patch) | |
| tree | 075a4553d0011d8f92752c0891794febb15912cf /library/cpp/digest | |
| parent | f02a874a7290593efbe4b3aeae69a04b46c1cc86 (diff) | |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/digest')
| -rw-r--r-- | library/cpp/digest/sfh/sfh.h | 52 | 
1 files changed, 26 insertions, 26 deletions
diff --git a/library/cpp/digest/sfh/sfh.h b/library/cpp/digest/sfh/sfh.h index 372938654cb..65350132011 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;  +}   | 
