diff options
Diffstat (limited to 'vendor/github.com/zeebo/xxh3/utils.go')
| -rw-r--r-- | vendor/github.com/zeebo/xxh3/utils.go | 129 | 
1 files changed, 0 insertions, 129 deletions
| diff --git a/vendor/github.com/zeebo/xxh3/utils.go b/vendor/github.com/zeebo/xxh3/utils.go deleted file mode 100644 index a837e68a6..000000000 --- a/vendor/github.com/zeebo/xxh3/utils.go +++ /dev/null @@ -1,129 +0,0 @@ -package xxh3 - -import ( -	"math/bits" -	"unsafe" -) - -// Uint128 is a 128 bit value. -// The actual value can be thought of as u.Hi<<64 | u.Lo. -type Uint128 struct { -	Hi, Lo uint64 -} - -// Bytes returns the uint128 as an array of bytes in canonical form (big-endian encoded). -func (u Uint128) Bytes() [16]byte { -	return [16]byte{ -		byte(u.Hi >> 0x38), byte(u.Hi >> 0x30), byte(u.Hi >> 0x28), byte(u.Hi >> 0x20), -		byte(u.Hi >> 0x18), byte(u.Hi >> 0x10), byte(u.Hi >> 0x08), byte(u.Hi), -		byte(u.Lo >> 0x38), byte(u.Lo >> 0x30), byte(u.Lo >> 0x28), byte(u.Lo >> 0x20), -		byte(u.Lo >> 0x18), byte(u.Lo >> 0x10), byte(u.Lo >> 0x08), byte(u.Lo), -	} -} - -type ( -	ptr = unsafe.Pointer -	ui  = uintptr - -	u8   = uint8 -	u32  = uint32 -	u64  = uint64 -	u128 = Uint128 -) - -type str struct { -	p ptr -	l uint -} - -func readU8(p ptr, o ui) uint8 { -	return *(*uint8)(ptr(ui(p) + o)) -} - -func readU16(p ptr, o ui) uint16 { -	b := (*[2]byte)(ptr(ui(p) + o)) -	return uint16(b[0]) | uint16(b[1])<<8 -} - -func readU32(p ptr, o ui) uint32 { -	b := (*[4]byte)(ptr(ui(p) + o)) -	return uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24 -} - -func readU64(p ptr, o ui) uint64 { -	b := (*[8]byte)(ptr(ui(p) + o)) -	return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | -		uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 -} - -func writeU64(p ptr, o ui, v u64) { -	b := (*[8]byte)(ptr(ui(p) + o)) -	b[0] = byte(v) -	b[1] = byte(v >> 8) -	b[2] = byte(v >> 16) -	b[3] = byte(v >> 24) -	b[4] = byte(v >> 32) -	b[5] = byte(v >> 40) -	b[6] = byte(v >> 48) -	b[7] = byte(v >> 56) -} - -const secretSize = 192 - -func initSecret(secret ptr, seed u64) { -	for i := ui(0); i < secretSize/16; i++ { -		lo := readU64(key, 16*i) + seed -		hi := readU64(key, 16*i+8) - seed -		writeU64(secret, 16*i, lo) -		writeU64(secret, 16*i+8, hi) -	} -} - -func xxh64AvalancheSmall(x u64) u64 { -	// x ^= x >> 33                    // x must be < 32 bits -	// x ^= u64(key32_000 ^ key32_004) // caller must do this -	x *= prime64_2 -	x ^= x >> 29 -	x *= prime64_3 -	x ^= x >> 32 -	return x -} - -func xxhAvalancheSmall(x u64) u64 { -	x ^= x >> 33 -	x *= prime64_2 -	x ^= x >> 29 -	x *= prime64_3 -	x ^= x >> 32 -	return x -} - -func xxh64AvalancheFull(x u64) u64 { -	x ^= x >> 33 -	x *= prime64_2 -	x ^= x >> 29 -	x *= prime64_3 -	x ^= x >> 32 -	return x -} - -func xxh3Avalanche(x u64) u64 { -	x ^= x >> 37 -	x *= 0x165667919e3779f9 -	x ^= x >> 32 -	return x -} - -func rrmxmx(h64 u64, len u64) u64 { -	h64 ^= bits.RotateLeft64(h64, 49) ^ bits.RotateLeft64(h64, 24) -	h64 *= 0x9fb21c651e98df25 -	h64 ^= (h64 >> 35) + len -	h64 *= 0x9fb21c651e98df25 -	h64 ^= (h64 >> 28) -	return h64 -} - -func mulFold64(x, y u64) u64 { -	hi, lo := bits.Mul64(x, y) -	return hi ^ lo -} | 
