tiny.simd.MaskedTriple32
Defined in hash.
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.
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 |