tiny.simd.MaskedMoremur
Defined in hash.
Source
Source: lib/simd/src/hash.zig:151
zig
pub fn MaskedMoremur(comptime bits: usize) type { validateBits(u64, bits); return struct { key_value: u64 = 0, const Self = @This(); pub const Lane: type = u64; pub const mask: u64 = maskValue(u64, bits); pub fn init() Self { return .{}; } pub fn initKey(key_value: u64) Self { assertMasked(u64, bits, key_value); return .{ .key_value = key_value }; } pub fn initSeed(engine: *const random.AesCtrEngine, seed: u64) Self { return .{ .key_value = maybeMask(u64, bits, engine.generate(seed, 0)) }; } pub fn key(self: Self) u64 { return self.key_value; } pub fn hash(self: Self, input: u64) u64 { assertMasked(u64, bits, input); var result = input ^ self.key_value; result ^= result >> 27; result *%= 0x3c79_ac49_2ba7_b653; result = maybeMask(u64, bits, result); result ^= result >> 33; result *%= 0x1c69_b3f7_4ac4_ae35; result = maybeMask(u64, bits, result); result ^= result >> 27; assertMasked(u64, bits, result); return result; } pub fn oneVec(self: Self, comptime D: type, input: D.Vector) D.Vector { requireTag(D, u64); assertMaskedVector(D, bits, input); var result = input ^ @as(D.Vector, @splat(self.key_value)); result ^= shift.shiftRight(D, 27, result); result = arithmetic.mul(D, result, @splat(0x3c79_ac49_2ba7_b653)); result = maybeMaskVector(D, bits, result); result ^= shift.shiftRight(D, 33, result); result = arithmetic.mul(D, result, @splat(0x1c69_b3f7_4ac4_ae35)); result = maybeMaskVector(D, bits, result); result ^= shift.shiftRight(D, 27, result); assertMaskedVector(D, bits, result); return result; } pub fn twoVec(self: Self, comptime D: type, first: *D.Vector, second: *D.Vector) void { first.* = self.oneVec(D, first.*); second.* = self.oneVec(D, second.*); } };}Source: lib/simd/src/root.zig:570
zig
pub const MaskedMoremur = hash.MaskedMoremur;Complete call list
8 direct calls.
lib.simd.src.hash.assertMasked[function] — private source atlib/simd/src/hash.zig:304in nearest public ownertiny.simd.hashlib.simd.src.hash.assertMaskedVector[function] — private source atlib/simd/src/hash.zig:308in nearest public ownertiny.simd.hashlib.simd.src.hash.maskValue[function] — private source atlib/simd/src/hash.zig:284in nearest public ownertiny.simd.hashlib.simd.src.hash.maybeMask[function] — private source atlib/simd/src/hash.zig:293in nearest public ownertiny.simd.hashlib.simd.src.hash.maybeMaskVector[function] — private source atlib/simd/src/hash.zig:297in nearest public ownertiny.simd.hashlib.simd.src.hash.requireTag[function] — private source atlib/simd/src/hash.zig:319in nearest public ownertiny.simd.hashlib.simd.src.hash.validateBits[function] — private source atlib/simd/src/hash.zig:315in nearest public ownertiny.simd.hashtiny.simd.shift.shiftRight[function] atlib/simd/src/shift.zig:14
Audit
| Definitions | 1 |
|---|---|
| Public names | 2 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |