|
|
@ -17,27 +17,11 @@ namespace Common {
|
|
|
|
|
|
|
|
|
|
|
|
// Block read - if your platform needs to do endian-swapping or can only handle aligned reads, do
|
|
|
|
// Block read - if your platform needs to do endian-swapping or can only handle aligned reads, do
|
|
|
|
// the conversion here
|
|
|
|
// the conversion here
|
|
|
|
|
|
|
|
|
|
|
|
static FORCE_INLINE u32 getblock32(const u32* p, int i) {
|
|
|
|
|
|
|
|
return p[i];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static FORCE_INLINE u64 getblock64(const u64* p, int i) {
|
|
|
|
static FORCE_INLINE u64 getblock64(const u64* p, int i) {
|
|
|
|
return p[i];
|
|
|
|
return p[i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Finalization mix - force all bits of a hash block to avalanche
|
|
|
|
// Finalization mix - force all bits of a hash block to avalanche
|
|
|
|
|
|
|
|
|
|
|
|
static FORCE_INLINE u32 fmix32(u32 h) {
|
|
|
|
|
|
|
|
h ^= h >> 16;
|
|
|
|
|
|
|
|
h *= 0x85ebca6b;
|
|
|
|
|
|
|
|
h ^= h >> 13;
|
|
|
|
|
|
|
|
h *= 0xc2b2ae35;
|
|
|
|
|
|
|
|
h ^= h >> 16;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return h;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static FORCE_INLINE u64 fmix64(u64 k) {
|
|
|
|
static FORCE_INLINE u64 fmix64(u64 k) {
|
|
|
|
k ^= k >> 33;
|
|
|
|
k ^= k >> 33;
|
|
|
|
k *= 0xff51afd7ed558ccdllu;
|
|
|
|
k *= 0xff51afd7ed558ccdllu;
|
|
|
|