From 976fbf06283b82d1369c673718c17f9dd2a72220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=B8=80=20WangYi?= Date: Mon, 3 Feb 2020 13:47:45 +0800 Subject: [PATCH] minor fix --- wyhash.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/wyhash.h b/wyhash.h index e2386f2..519040c 100644 --- a/wyhash.h +++ b/wyhash.h @@ -46,23 +46,23 @@ static inline uint64_t _wyr4(const uint8_t *p) { unsigned v; memcpy(&v, p, 4); #endif static inline uint64_t _wyr3(const uint8_t *p, unsigned k) { return (((uint64_t)p[0])<<16)|(((uint64_t)p[k>>1])<<8)|p[k-1]; } static inline uint64_t wyhash(const void* key, uint64_t len, uint64_t seed) { - #if defined(__GNUC__) || defined(__INTEL_COMPILER) - #define _like_(x) __builtin_expect(x,1) - #define _unlike_(x) __builtin_expect(x,0) - #else - #define _like_(x) (x) - #define _unlike_(x) (x) - #endif +#if defined(__GNUC__) || defined(__INTEL_COMPILER) + #define _like_(x) __builtin_expect(x,1) + #define _unlike_(x) __builtin_expect(x,0) +#else + #define _like_(x) (x) + #define _unlike_(x) (x) +#endif const uint8_t *p=(const uint8_t*)key; uint64_t i=len; label: - if(_unlike_(i<4)) return _like_(i)?_wymum(_wymum(_wyr3(p,i)^seed^_wyp0,seed^_wyp1),len^_wyp4):_wymum(_wymum(seed^_wyp0,seed^_wyp1),len^_wyp4); + if(_unlike_(i<4)) return _wymum(_wymum((_like_(i)?_wyr3(p,i):0)^seed^_wyp0,seed^_wyp1),len^_wyp4); else if(_like_(i<=8)) return _wymum(_wymum(_wyr4(p)^seed^_wyp0,_wyr4(p+i-4)^seed^_wyp1),len^_wyp4); else if(_like_(i<=16)) return _wymum(_wymum(_wyr8(p)^seed^_wyp0,_wyr8(p+i-8)^seed^_wyp1),len^_wyp4); else if(_like_(i<=32)) return _wymum(_wymum(_wyr8(p)^seed^_wyp0,_wyr8(p+8)^seed^_wyp1)^_wymum(_wyr8(p+i-16)^seed^_wyp2,_wyr8(p+i-8)^seed^_wyp3),len^_wyp4); else if(_like_(i<=64)) return _wymum(_wymum(_wyr8(p)^seed^_wyp0,_wyr8(p+8)^seed^_wyp1)^_wymum(_wyr8(p+16)^seed^_wyp2,_wyr8(p+24)^seed^_wyp3) ^_wymum(_wyr8(p+i-32)^seed^_wyp1,_wyr8(p+i-24)^seed^_wyp2)^_wymum(_wyr8(p+i-16)^seed^_wyp3,_wyr8(p+i-8)^seed^_wyp0),len^_wyp4); uint64_t see1=seed, see2=seed, see3=seed; - for(; _like_(i>=64); i-=64,p+=64){ + for(; i>=64; i-=64,p+=64){ seed=_wymum(_wyr8(p)^seed^_wyp0,_wyr8(p+8)^seed^_wyp1); see1=_wymum(_wyr8(p+16)^see1^_wyp2,_wyr8(p+24)^see1^_wyp3); see2=_wymum(_wyr8(p+32)^see2^_wyp1,_wyr8(p+40)^see2^_wyp2); see3=_wymum(_wyr8(p+48)^see3^_wyp3,_wyr8(p+56)^see3^_wyp0); }