| author | |
| committer | |
| log | 9684c99dd37ff987114824b2af17b6160b908b79 |
| tree | 49af1a57709c83d728320865cad08f92e2060109 |
| parent | 0619b525b9100e95ab293792bcaa3c565e08a979 |
2 files changed, 19 insertions(+), 19 deletions(-)
std/hash/cityhash.zig+10-10| ... | @@ -45,7 +45,7 @@ pub const CityHash32 = struct { | ... | @@ -45,7 +45,7 @@ pub const CityHash32 = struct { |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | fn hash32Len0To4(str: []const u8) u32 { | 47 | fn hash32Len0To4(str: []const u8) u32 { |
| 48 | const len: u32 = @intCast(u32, str.len); | 48 | const len: u32 = @truncate(u32, str.len); |
| 49 | var b: u32 = 0; | 49 | var b: u32 = 0; |
| 50 | var c: u32 = 9; | 50 | var c: u32 = 9; |
| 51 | for (str) |v| { | 51 | for (str) |v| { |
| ... | @@ -56,7 +56,7 @@ pub const CityHash32 = struct { | ... | @@ -56,7 +56,7 @@ pub const CityHash32 = struct { |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | fn hash32Len5To12(str: []const u8) u32 { | 58 | fn hash32Len5To12(str: []const u8) u32 { |
| 59 | var a: u32 = @intCast(u32, str.len); | 59 | var a: u32 = @truncate(u32, str.len); |
| 60 | var b: u32 = a *% 5; | 60 | var b: u32 = a *% 5; |
| 61 | var c: u32 = 9; | 61 | var c: u32 = 9; |
| 62 | const d: u32 = b; | 62 | const d: u32 = b; |
| ... | @@ -69,7 +69,7 @@ pub const CityHash32 = struct { | ... | @@ -69,7 +69,7 @@ pub const CityHash32 = struct { |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | fn hash32Len13To24(str: []const u8) u32 { | 71 | fn hash32Len13To24(str: []const u8) u32 { |
| 72 | const len: u32 = @intCast(u32, str.len); | 72 | const len: u32 = @truncate(u32, str.len); |
| 73 | const a: u32 = fetch32(str.ptr + (str.len >> 1) - 4); | 73 | const a: u32 = fetch32(str.ptr + (str.len >> 1) - 4); |
| 74 | const b: u32 = fetch32(str.ptr + 4); | 74 | const b: u32 = fetch32(str.ptr + 4); |
| 75 | const c: u32 = fetch32(str.ptr + str.len - 8); | 75 | const c: u32 = fetch32(str.ptr + str.len - 8); |
| ... | @@ -91,7 +91,7 @@ pub const CityHash32 = struct { | ... | @@ -91,7 +91,7 @@ pub const CityHash32 = struct { |
| 91 | } | 91 | } |
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | const len: u32 = @intCast(u32, str.len); | 94 | const len: u32 = @truncate(u32, str.len); |
| 95 | var h: u32 = len; | 95 | var h: u32 = len; |
| 96 | var g: u32 = c1 *% len; | 96 | var g: u32 = c1 *% len; |
| 97 | var f: u32 = g; | 97 | var f: u32 = g; |
| ... | @@ -214,7 +214,7 @@ pub const CityHash64 = struct { | ... | @@ -214,7 +214,7 @@ pub const CityHash64 = struct { |
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | fn hashLen0To16(str: []const u8) u64 { | 216 | fn hashLen0To16(str: []const u8) u64 { |
| 217 | const len: u64 = @intCast(u64, str.len); | 217 | const len: u64 = @truncate(u64, str.len); |
| 218 | if (len >= 8) { | 218 | if (len >= 8) { |
| 219 | const mul: u64 = k2 +% len *% 2; | 219 | const mul: u64 = k2 +% len *% 2; |
| 220 | const a: u64 = fetch64(str.ptr) + k2; | 220 | const a: u64 = fetch64(str.ptr) + k2; |
| ... | @@ -233,14 +233,14 @@ pub const CityHash64 = struct { | ... | @@ -233,14 +233,14 @@ pub const CityHash64 = struct { |
| 233 | const b: u8 = str[str.len >> 1]; | 233 | const b: u8 = str[str.len >> 1]; |
| 234 | const c: u8 = str[str.len - 1]; | 234 | const c: u8 = str[str.len - 1]; |
| 235 | const y: u32 = @intCast(u32, a) +% (@intCast(u32, b) << 8); | 235 | const y: u32 = @intCast(u32, a) +% (@intCast(u32, b) << 8); |
| 236 | const z: u32 = @intCast(u32, str.len) +% (@intCast(u32, c) << 2); | 236 | const z: u32 = @truncate(u32, str.len) +% (@intCast(u32, c) << 2); |
| 237 | return shiftmix(@intCast(u64, y) *% k2 ^ @intCast(u64, z) *% k0) *% k2; | 237 | return shiftmix(@intCast(u64, y) *% k2 ^ @intCast(u64, z) *% k0) *% k2; |
| 238 | } | 238 | } |
| 239 | return k2; | 239 | return k2; |
| 240 | } | 240 | } |
| 241 | 241 | ||
| 242 | fn hashLen17To32(str: []const u8) u64 { | 242 | fn hashLen17To32(str: []const u8) u64 { |
| 243 | const len: u64 = @intCast(u64, str.len); | 243 | const len: u64 = @truncate(u64, str.len); |
| 244 | const mul: u64 = k2 +% len *% 2; | 244 | const mul: u64 = k2 +% len *% 2; |
| 245 | const a: u64 = fetch64(str.ptr) *% k1; | 245 | const a: u64 = fetch64(str.ptr) *% k1; |
| 246 | const b: u64 = fetch64(str.ptr + 8); | 246 | const b: u64 = fetch64(str.ptr + 8); |
| ... | @@ -251,7 +251,7 @@ pub const CityHash64 = struct { | ... | @@ -251,7 +251,7 @@ pub const CityHash64 = struct { |
| 251 | } | 251 | } |
| 252 | 252 | ||
| 253 | fn hashLen33To64(str: []const u8) u64 { | 253 | fn hashLen33To64(str: []const u8) u64 { |
| 254 | const len: u64 = @intCast(u64, str.len); | 254 | const len: u64 = @truncate(u64, str.len); |
| 255 | const mul: u64 = k2 +% len *% 2; | 255 | const mul: u64 = k2 +% len *% 2; |
| 256 | const a: u64 = fetch64(str.ptr) *% k2; | 256 | const a: u64 = fetch64(str.ptr) *% k2; |
| 257 | const b: u64 = fetch64(str.ptr + 8); | 257 | const b: u64 = fetch64(str.ptr + 8); |
| ... | @@ -305,7 +305,7 @@ pub const CityHash64 = struct { | ... | @@ -305,7 +305,7 @@ pub const CityHash64 = struct { |
| 305 | return hashLen33To64(str); | 305 | return hashLen33To64(str); |
| 306 | } | 306 | } |
| 307 | 307 | ||
| 308 | var len: u64 = @intCast(u64, str.len); | 308 | var len: u64 = @truncate(u64, str.len); |
| 309 | 309 | ||
| 310 | var x: u64 = fetch64(str.ptr + str.len - 40); | 310 | var x: u64 = fetch64(str.ptr + str.len - 40); |
| 311 | var y: u64 = fetch64(str.ptr + str.len - 16) +% fetch64(str.ptr + str.len - 56); | 311 | var y: u64 = fetch64(str.ptr + str.len - 16) +% fetch64(str.ptr + str.len - 56); |
| ... | @@ -367,7 +367,7 @@ fn SMHasherTest(comptime hash_fn: var, comptime hashbits: u32) u32 { | ... | @@ -367,7 +367,7 @@ fn SMHasherTest(comptime hash_fn: var, comptime hashbits: u32) u32 { |
| 367 | @memcpy(@ptrCast([*]u8, &hashes[i * hashbytes]), @ptrCast([*]u8, &h), hashbytes); | 367 | @memcpy(@ptrCast([*]u8, &hashes[i * hashbytes]), @ptrCast([*]u8, &h), hashbytes); |
| 368 | } | 368 | } |
| 369 | 369 | ||
| 370 | return @intCast(u32, hash_fn(hashes, 0) & 0xffffffff); | 370 | return @truncate(u32, hash_fn(hashes, 0)); |
| 371 | } | 371 | } |
| 372 | 372 | ||
| 373 | fn CityHash32hashIgnoreSeed(str: []const u8, seed: u32) u32 { | 373 | fn CityHash32hashIgnoreSeed(str: []const u8, seed: u32) u32 { |
std/hash/murmur.zig+9-9| ... | @@ -13,7 +13,7 @@ pub const Murmur2_32 = struct { | ... | @@ -13,7 +13,7 @@ pub const Murmur2_32 = struct { |
| 13 | 13 | ||
| 14 | pub fn hashWithSeed(str: []const u8, seed: u32) u32 { | 14 | pub fn hashWithSeed(str: []const u8, seed: u32) u32 { |
| 15 | const m: u32 = 0x5bd1e995; | 15 | const m: u32 = 0x5bd1e995; |
| 16 | const len = @intCast(u32, str.len); | 16 | const len = @truncate(u32, str.len); |
| 17 | var h1: u32 = seed ^ len; | 17 | var h1: u32 = seed ^ len; |
| 18 | for (@ptrCast([*]allowzero align(1) const u32, str.ptr)[0..(len >> 2)]) |v| { | 18 | for (@ptrCast([*]allowzero align(1) const u32, str.ptr)[0..(len >> 2)]) |v| { |
| 19 | var k1: u32 = v; | 19 | var k1: u32 = v; |
| ... | @@ -72,12 +72,12 @@ pub const Murmur2_32 = struct { | ... | @@ -72,12 +72,12 @@ pub const Murmur2_32 = struct { |
| 72 | const len: u32 = 8; | 72 | const len: u32 = 8; |
| 73 | var h1: u32 = seed ^ len; | 73 | var h1: u32 = seed ^ len; |
| 74 | var k1: u32 = undefined; | 74 | var k1: u32 = undefined; |
| 75 | k1 = @intCast(u32, v & 0xffffffff) *% m; | 75 | k1 = @truncate(u32, v) *% m; |
| 76 | k1 ^= k1 >> 24; | 76 | k1 ^= k1 >> 24; |
| 77 | k1 *%= m; | 77 | k1 *%= m; |
| 78 | h1 *%= m; | 78 | h1 *%= m; |
| 79 | h1 ^= k1; | 79 | h1 ^= k1; |
| 80 | k1 = @intCast(u32, v >> 32) *% m; | 80 | k1 = @truncate(u32, v >> 32) *% m; |
| 81 | k1 ^= k1 >> 24; | 81 | k1 ^= k1 >> 24; |
| 82 | k1 *%= m; | 82 | k1 *%= m; |
| 83 | h1 *%= m; | 83 | h1 *%= m; |
| ... | @@ -98,7 +98,7 @@ pub const Murmur2_64 = struct { | ... | @@ -98,7 +98,7 @@ pub const Murmur2_64 = struct { |
| 98 | 98 | ||
| 99 | pub fn hashWithSeed(str: []const u8, seed: u64) u64 { | 99 | pub fn hashWithSeed(str: []const u8, seed: u64) u64 { |
| 100 | const m: u64 = 0xc6a4a7935bd1e995; | 100 | const m: u64 = 0xc6a4a7935bd1e995; |
| 101 | const len = @intCast(u64, str.len); | 101 | const len = @truncate(u64, str.len); |
| 102 | var h1: u64 = seed ^ (len *% m); | 102 | var h1: u64 = seed ^ (len *% m); |
| 103 | for (@ptrCast([*]allowzero align(1) const u64, str.ptr)[0..(len >> 3)]) |v| { | 103 | for (@ptrCast([*]allowzero align(1) const u64, str.ptr)[0..(len >> 3)]) |v| { |
| 104 | var k1: u64 = v; | 104 | var k1: u64 = v; |
| ... | @@ -178,7 +178,7 @@ pub const Murmur3_32 = struct { | ... | @@ -178,7 +178,7 @@ pub const Murmur3_32 = struct { |
| 178 | pub fn hashWithSeed(str: []const u8, seed: u32) u32 { | 178 | pub fn hashWithSeed(str: []const u8, seed: u32) u32 { |
| 179 | const c1: u32 = 0xcc9e2d51; | 179 | const c1: u32 = 0xcc9e2d51; |
| 180 | const c2: u32 = 0x1b873593; | 180 | const c2: u32 = 0x1b873593; |
| 181 | const len = @intCast(u32, str.len); | 181 | const len = @truncate(u32, str.len); |
| 182 | var h1: u32 = seed; | 182 | var h1: u32 = seed; |
| 183 | for (@ptrCast([*]allowzero align(1) const u32, str.ptr)[0..(len >> 2)]) |v| { | 183 | for (@ptrCast([*]allowzero align(1) const u32, str.ptr)[0..(len >> 2)]) |v| { |
| 184 | var k1: u32 = v; | 184 | var k1: u32 = v; |
| ... | @@ -255,14 +255,14 @@ pub const Murmur3_32 = struct { | ... | @@ -255,14 +255,14 @@ pub const Murmur3_32 = struct { |
| 255 | const len: u32 = 8; | 255 | const len: u32 = 8; |
| 256 | var h1: u32 = seed; | 256 | var h1: u32 = seed; |
| 257 | var k1: u32 = undefined; | 257 | var k1: u32 = undefined; |
| 258 | k1 = @intCast(u32, v & 0xffffffff) *% c1; | 258 | k1 = @truncate(u32, v) *% c1; |
| 259 | k1 = rotl32(k1, 15); | 259 | k1 = rotl32(k1, 15); |
| 260 | k1 *%= c2; | 260 | k1 *%= c2; |
| 261 | h1 ^= k1; | 261 | h1 ^= k1; |
| 262 | h1 = rotl32(h1, 13); | 262 | h1 = rotl32(h1, 13); |
| 263 | h1 *%= 5; | 263 | h1 *%= 5; |
| 264 | h1 +%= 0xe6546b64; | 264 | h1 +%= 0xe6546b64; |
| 265 | k1 = @intCast(u32, v >> 32) *% c1; | 265 | k1 = @truncate(u32, v >> 32) *% c1; |
| 266 | k1 = rotl32(k1, 15); | 266 | k1 = rotl32(k1, 15); |
| 267 | k1 *%= c2; | 267 | k1 *%= c2; |
| 268 | h1 ^= k1; | 268 | h1 ^= k1; |
| ... | @@ -291,7 +291,7 @@ fn SMHasherTest(comptime hash_fn: var, comptime hashbits: u32) u32 { | ... | @@ -291,7 +291,7 @@ fn SMHasherTest(comptime hash_fn: var, comptime hashbits: u32) u32 { |
| 291 | 291 | ||
| 292 | var i: u32 = 0; | 292 | var i: u32 = 0; |
| 293 | while (i < 256) : (i += 1) { | 293 | while (i < 256) : (i += 1) { |
| 294 | key[i] = @intCast(u8, i); | 294 | key[i] = @truncate(u8, i); |
| 295 | 295 | ||
| 296 | var h = hash_fn(key[0..i], 256 - i); | 296 | var h = hash_fn(key[0..i], 256 - i); |
| 297 | if (builtin.endian == builtin.Endian.Big) | 297 | if (builtin.endian == builtin.Endian.Big) |
| ... | @@ -299,7 +299,7 @@ fn SMHasherTest(comptime hash_fn: var, comptime hashbits: u32) u32 { | ... | @@ -299,7 +299,7 @@ fn SMHasherTest(comptime hash_fn: var, comptime hashbits: u32) u32 { |
| 299 | @memcpy(@ptrCast([*]u8, &hashes[i * hashbytes]), @ptrCast([*]u8, &h), hashbytes); | 299 | @memcpy(@ptrCast([*]u8, &hashes[i * hashbytes]), @ptrCast([*]u8, &h), hashbytes); |
| 300 | } | 300 | } |
| 301 | 301 | ||
| 302 | return @intCast(u32, hash_fn(hashes, 0) & 0xffffffff); | 302 | return @truncate(u32, hash_fn(hashes, 0)); |
| 303 | } | 303 | } |
| 304 | 304 | ||
| 305 | test "murmur2_32" { | 305 | test "murmur2_32" { |