Skip to documentation
SLOP

tiny.simd.satWidenMulPairwiseAdd

Reference tiny.simd satWidenMulPairwiseAdd

Defined in multiply.

Called byCallstest sourcelib.simd.src.multiplytest: Highway saturating widening mul...private sourcelib.simd.src.multiplysourceLaneprivate sourcelib.simd.src.multiplysourceLaneCountmultiplysatWidenMulPairwiseAdd
Static calls · unresolved targets: 0 · external targets: 0.

Source

Source: lib/simd/src/multiply.zig:106

zig
pub fn satWidenMulPairwiseAdd(comptime DW: type, a: anytype, b: anytype) DW.Vector {    if (comptime DW.Lane != i16 or sourceLane(@TypeOf(a)) != u8 or sourceLane(@TypeOf(b)) != i8 or        sourceLaneCount(@TypeOf(a)) != DW.lane_count * 2 or        sourceLaneCount(@TypeOf(b)) != DW.lane_count * 2)    {        @compileError("satWidenMulPairwiseAdd requires paired u8 and i8 sources with i16 output");    }    var result: DW.Vector = undefined;    inline for (0..DW.lane_count) |index| {        const sum = @as(i32, a[index * 2]) * @as(i32, b[index * 2]) +            @as(i32, a[index * 2 + 1]) * @as(i32, b[index * 2 + 1]);        result[index] = @intCast(std.math.clamp(sum, std.math.minInt(i16), std.math.maxInt(i16)));    }    return result;}

Source: lib/simd/src/root.zig:348

zig
pub const satWidenMulPairwiseAdd = multiply.satWidenMulPairwiseAdd;

Audit

Definitions1
Public names2
Members0
Version26.7.0
Revisiondaab053ee433