tiny.simd.satWidenMulPairwiseAdd
Defined in multiply.
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
| Definitions | 1 |
|---|---|
| Public names | 2 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |