authorgravatar for andersfr@gmail.comandersfr <andersfr@gmail.com> 2019-07-06 23:44:43+02:00
committergravatar for andersfr@gmail.comandersfr <andersfr@gmail.com> 2019-07-13 13:59:15+02:00
log9684c99dd37ff987114824b2af17b6160b908b79
tree49af1a57709c83d728320865cad08f92e2060109
parent0619b525b9100e95ab293792bcaa3c565e08a979

Proper use of @truncate instead of @intCast


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 }
4646
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 }
5757
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 }
7070
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 }
9393
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 }
215215
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 }
241241
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 }
252252
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 }
307307
308 var len: u64 = @intCast(u64, str.len);308 var len: u64 = @truncate(u64, str.len);
309309
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 }
369369
370 return @intCast(u32, hash_fn(hashes, 0) & 0xffffffff);370 return @truncate(u32, hash_fn(hashes, 0));
371}371}
372372
373fn CityHash32hashIgnoreSeed(str: []const u8, seed: u32) u32 {373fn 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 {
1313
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 {
9898
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 {
291291
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);
295295
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 }
301301
302 return @intCast(u32, hash_fn(hashes, 0) & 0xffffffff);302 return @truncate(u32, hash_fn(hashes, 0));
303}303}
304304
305test "murmur2_32" {305test "murmur2_32" {