tiny.simd.mulHigh
Defined in multiply.
Source
Source: lib/simd/src/multiply.zig:42
zig
pub fn mulHigh(comptime D: type, a: D.Vector, b: D.Vector) D.Vector { requireInteger(D.Lane, "mulHigh"); const bits = @bitSizeOf(D.Lane); const WideSigned = @Int(.signed, bits * 2); const WideUnsigned = @Int(.unsigned, bits * 2); const Unsigned = @Int(.unsigned, bits); var result: D.Vector = undefined; inline for (0..D.lane_count) |index| { const high: Unsigned = if (@typeInfo(D.Lane).int.signedness == .signed) blk: { const product = @as(WideSigned, a[index]) * @as(WideSigned, b[index]); const product_bits: WideUnsigned = @bitCast(product); break :blk @truncate(product_bits >> bits); } else blk: { const product = @as(WideUnsigned, a[index]) * @as(WideUnsigned, b[index]); break :blk @truncate(product >> bits); }; result[index] = @bitCast(high); } return result;}Source: lib/simd/src/root.zig:342
zig
pub const mulHigh = multiply.mulHigh;Audit
| Definitions | 1 |
|---|---|
| Public names | 2 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |