Skip to documentation
SLOP

tiny.simd.MaskedMoremur

Reference tiny.simd MaskedMoremur

Defined in hash.

Called byCallstest sourcelib.simd.src.hashtest: Highway AVX2 keyed hash oracle ...test sourcelib.simd.src.hashtest: Highway hash edge cases remain ...test sourcelib.simd.src.hashtest: Highway masked hashes remain bi...test sourcelib.simd.src.hashtest: Highway masked hashes retain th...private sourcelib.simd.src.hashassertMaskedprivate sourcelib.simd.src.hashassertMaskedVectorprivate sourcelib.simd.src.hashmaskValueprivate sourcelib.simd.src.hashmaybeMaskprivate sourcelib.simd.src.hashmaybeMaskVector+3 morehashMaskedMoremur
Static calls · unresolved targets: 0 · external targets: 3.

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.

Audit

Definitions1
Public names2
Members0
Version26.7.0
Revisiondaab053ee433