From d2e004fa9e8b4f331e7e241645e47211e93686eb Mon Sep 17 00:00:00 2001 From: Fiora Date: Sat, 18 Oct 2014 00:22:41 -0700 Subject: [PATCH] Use CRC to output 64 bits instead of 32 A bit hacky, but should dramatically reduce the odds of hash collision. --- Source/Core/Common/Hash.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Core/Common/Hash.cpp b/Source/Core/Common/Hash.cpp index 6cdd1e6a7a..f9a3737d34 100644 --- a/Source/Core/Common/Hash.cpp +++ b/Source/Core/Common/Hash.cpp @@ -254,7 +254,8 @@ u64 GetCRC32(const u8 *src, int len, u32 samples) const u8 *data2 = (const u8*)end; // FIXME: is there a better way to combine these partial hashes? - return _mm_crc32_u64(h[0] + h[1] + h[2] + h[3], u64(data2[0])); + h[0] = _mm_crc32_u64(h[0], u64(data2[0])); + return h[0] + (h[1] << 10) + (h[2] << 21) + (h[3] << 32); #else return 0; #endif