Proper use of @truncate instead of @intCast

This commit is contained in:
andersfr 2019-07-06 23:44:43 +02:00
parent 0619b525b9
commit 9684c99dd3
2 changed files with 19 additions and 19 deletions

View File

@ -45,7 +45,7 @@ pub const CityHash32 = struct {
}
fn hash32Len0To4(str: []const u8) u32 {
const len: u32 = @intCast(u32, str.len);
const len: u32 = @truncate(u32, str.len);
var b: u32 = 0;
var c: u32 = 9;
for (str) |v| {
@ -56,7 +56,7 @@ pub const CityHash32 = struct {
}
fn hash32Len5To12(str: []const u8) u32 {
var a: u32 = @intCast(u32, str.len);
var a: u32 = @truncate(u32, str.len);
var b: u32 = a *% 5;
var c: u32 = 9;
const d: u32 = b;
@ -69,7 +69,7 @@ pub const CityHash32 = struct {
}
fn hash32Len13To24(str: []const u8) u32 {
const len: u32 = @intCast(u32, str.len);
const len: u32 = @truncate(u32, str.len);
const a: u32 = fetch32(str.ptr + (str.len >> 1) - 4);
const b: u32 = fetch32(str.ptr + 4);
const c: u32 = fetch32(str.ptr + str.len - 8);
@ -91,7 +91,7 @@ pub const CityHash32 = struct {
}
}
const len: u32 = @intCast(u32, str.len);
const len: u32 = @truncate(u32, str.len);
var h: u32 = len;
var g: u32 = c1 *% len;
var f: u32 = g;
@ -214,7 +214,7 @@ pub const CityHash64 = struct {
}
fn hashLen0To16(str: []const u8) u64 {
const len: u64 = @intCast(u64, str.len);
const len: u64 = @truncate(u64, str.len);
if (len >= 8) {
const mul: u64 = k2 +% len *% 2;
const a: u64 = fetch64(str.ptr) + k2;
@ -233,14 +233,14 @@ pub const CityHash64 = struct {
const b: u8 = str[str.len >> 1];
const c: u8 = str[str.len - 1];
const y: u32 = @intCast(u32, a) +% (@intCast(u32, b) << 8);
const z: u32 = @intCast(u32, str.len) +% (@intCast(u32, c) << 2);
const z: u32 = @truncate(u32, str.len) +% (@intCast(u32, c) << 2);
return shiftmix(@intCast(u64, y) *% k2 ^ @intCast(u64, z) *% k0) *% k2;
}
return k2;
}
fn hashLen17To32(str: []const u8) u64 {
const len: u64 = @intCast(u64, str.len);
const len: u64 = @truncate(u64, str.len);
const mul: u64 = k2 +% len *% 2;
const a: u64 = fetch64(str.ptr) *% k1;
const b: u64 = fetch64(str.ptr + 8);
@ -251,7 +251,7 @@ pub const CityHash64 = struct {
}
fn hashLen33To64(str: []const u8) u64 {
const len: u64 = @intCast(u64, str.len);
const len: u64 = @truncate(u64, str.len);
const mul: u64 = k2 +% len *% 2;
const a: u64 = fetch64(str.ptr) *% k2;
const b: u64 = fetch64(str.ptr + 8);
@ -305,7 +305,7 @@ pub const CityHash64 = struct {
return hashLen33To64(str);
}
var len: u64 = @intCast(u64, str.len);
var len: u64 = @truncate(u64, str.len);
var x: u64 = fetch64(str.ptr + str.len - 40);
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 {
@memcpy(@ptrCast([*]u8, &hashes[i * hashbytes]), @ptrCast([*]u8, &h), hashbytes);
}
return @intCast(u32, hash_fn(hashes, 0) & 0xffffffff);
return @truncate(u32, hash_fn(hashes, 0));
}
fn CityHash32hashIgnoreSeed(str: []const u8, seed: u32) u32 {

View File

@ -13,7 +13,7 @@ pub const Murmur2_32 = struct {
pub fn hashWithSeed(str: []const u8, seed: u32) u32 {
const m: u32 = 0x5bd1e995;
const len = @intCast(u32, str.len);
const len = @truncate(u32, str.len);
var h1: u32 = seed ^ len;
for (@ptrCast([*]allowzero align(1) const u32, str.ptr)[0..(len >> 2)]) |v| {
var k1: u32 = v;
@ -72,12 +72,12 @@ pub const Murmur2_32 = struct {
const len: u32 = 8;
var h1: u32 = seed ^ len;
var k1: u32 = undefined;
k1 = @intCast(u32, v & 0xffffffff) *% m;
k1 = @truncate(u32, v) *% m;
k1 ^= k1 >> 24;
k1 *%= m;
h1 *%= m;
h1 ^= k1;
k1 = @intCast(u32, v >> 32) *% m;
k1 = @truncate(u32, v >> 32) *% m;
k1 ^= k1 >> 24;
k1 *%= m;
h1 *%= m;
@ -98,7 +98,7 @@ pub const Murmur2_64 = struct {
pub fn hashWithSeed(str: []const u8, seed: u64) u64 {
const m: u64 = 0xc6a4a7935bd1e995;
const len = @intCast(u64, str.len);
const len = @truncate(u64, str.len);
var h1: u64 = seed ^ (len *% m);
for (@ptrCast([*]allowzero align(1) const u64, str.ptr)[0..(len >> 3)]) |v| {
var k1: u64 = v;
@ -178,7 +178,7 @@ pub const Murmur3_32 = struct {
pub fn hashWithSeed(str: []const u8, seed: u32) u32 {
const c1: u32 = 0xcc9e2d51;
const c2: u32 = 0x1b873593;
const len = @intCast(u32, str.len);
const len = @truncate(u32, str.len);
var h1: u32 = seed;
for (@ptrCast([*]allowzero align(1) const u32, str.ptr)[0..(len >> 2)]) |v| {
var k1: u32 = v;
@ -255,14 +255,14 @@ pub const Murmur3_32 = struct {
const len: u32 = 8;
var h1: u32 = seed;
var k1: u32 = undefined;
k1 = @intCast(u32, v & 0xffffffff) *% c1;
k1 = @truncate(u32, v) *% c1;
k1 = rotl32(k1, 15);
k1 *%= c2;
h1 ^= k1;
h1 = rotl32(h1, 13);
h1 *%= 5;
h1 +%= 0xe6546b64;
k1 = @intCast(u32, v >> 32) *% c1;
k1 = @truncate(u32, v >> 32) *% c1;
k1 = rotl32(k1, 15);
k1 *%= c2;
h1 ^= k1;
@ -291,7 +291,7 @@ fn SMHasherTest(comptime hash_fn: var, comptime hashbits: u32) u32 {
var i: u32 = 0;
while (i < 256) : (i += 1) {
key[i] = @intCast(u8, i);
key[i] = @truncate(u8, i);
var h = hash_fn(key[0..i], 256 - i);
if (builtin.endian == builtin.Endian.Big)
@ -299,7 +299,7 @@ fn SMHasherTest(comptime hash_fn: var, comptime hashbits: u32) u32 {
@memcpy(@ptrCast([*]u8, &hashes[i * hashbytes]), @ptrCast([*]u8, &h), hashbytes);
}
return @intCast(u32, hash_fn(hashes, 0) & 0xffffffff);
return @truncate(u32, hash_fn(hashes, 0));
}
test "murmur2_32" {