Skip to documentation
SLOP

tiny.simd.MaskedTriple32

Reference tiny.simd MaskedTriple32

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 morehashMaskedTriple32
Static calls · unresolved targets: 0 · external targets: 3.

Source

Source: lib/simd/src/hash.zig:81

zig
pub fn MaskedTriple32(comptime bits: usize) type {    validateBits(u32, bits);    return struct {        key_value: u32 = 0,        const Self = @This();        pub const Lane: type = u32;        pub const mask: u32 = maskValue(u32, bits);        pub fn init() Self {            return .{};        }        pub fn initKey(key_value: u32) Self {            assertMasked(u32, bits, key_value);            return .{ .key_value = key_value };        }        pub fn initSeed(engine: *const random.AesCtrEngine, seed: u64) Self {            return .{ .key_value = maybeMask(u32, bits, @truncate(engine.generate(seed, 0))) };        }        pub fn key(self: Self) u32 {            return self.key_value;        }        pub fn hash(self: Self, input: u32) u32 {            assertMasked(u32, bits, input);            var result = input ^ self.key_value;            result ^= result >> 17;            result *%= 0xed5a_d4bb;            result = maybeMask(u32, bits, result);            result ^= result >> 11;            result *%= 0xac4c_1b51;            result = maybeMask(u32, bits, result);            result ^= result >> 15;            result *%= 0x3184_8bab;            result = maybeMask(u32, bits, result);            result ^= result >> 14;            assertMasked(u32, bits, result);            return result;        }        pub fn oneVec(self: Self, comptime D: type, input: D.Vector) D.Vector {            requireTag(D, u32);            assertMaskedVector(D, bits, input);            var result = input ^ @as(D.Vector, @splat(self.key_value));            result ^= shift.shiftRight(D, 17, result);            result = arithmetic.mul(D, result, @splat(0xed5a_d4bb));            result = maybeMaskVector(D, bits, result);            result ^= shift.shiftRight(D, 11, result);            result = arithmetic.mul(D, result, @splat(0xac4c_1b51));            result = maybeMaskVector(D, bits, result);            result ^= shift.shiftRight(D, 15, result);            result = arithmetic.mul(D, result, @splat(0x3184_8bab));            result = maybeMaskVector(D, bits, result);            result ^= shift.shiftRight(D, 14, 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:568

zig
pub const MaskedTriple32 = hash.MaskedTriple32;

Complete call list

8 direct calls.

Audit

Definitions1
Public names2
Members0
Version26.7.0
Revisiondaab053ee433