tiny.simd.UnrollerUnit2D
Defined in unroller.
Source
Source: lib/simd/src/unroller.zig:98
zig
pub fn UnrollerUnit2D( comptime Input0Lane: type, comptime Input1Lane: type, comptime OutputLane: type,) type { validateLane(Input0Lane); validateLane(Input1Lane); validateLane(OutputLane); const LargerLane = signedLane(@max( @sizeOf(Input0Lane), @max(@sizeOf(Input1Lane), @sizeOf(OutputLane)), )); const LargerTag = tag.ScalableTag(LargerLane); return struct { pub const input_count: usize = 2; pub const Input0: type = Input0Lane; pub const Input1: type = Input1Lane; pub const Output: type = OutputLane; pub const Larger: type = LargerLane; pub const Tag: type = LargerTag; pub const Input0Tag: type = LargerTag.rebind(Input0Lane); pub const Input1Tag: type = LargerTag.rebind(Input1Lane); pub const OutputTag: type = LargerTag.rebind(OutputLane); pub const Input0Vector: type = Input0Tag.Vector; pub const Input1Vector: type = Input1Tag.Vector; pub const OutputVector: type = OutputTag.Vector; pub const X0Vector: type = Input0Vector; pub const X1Vector: type = Input1Vector; pub const YVector: type = OutputVector; pub const max_unit_lanes: usize = LargerTag.lane_count; pub const actual_lanes: usize = LargerTag.lane_count; pub fn maxUnitLanes() usize { return max_unit_lanes; } pub fn actualLanes() usize { return actual_lanes; } pub fn x0Init() Input0Vector { return @splat(0); } pub fn x1Init() Input1Vector { return @splat(0); } pub fn yInit() OutputVector { return @splat(0); } pub fn load0(index: isize, input: []const Input0) Input0Vector { return loadFull(Input0Tag, index, input); } pub fn load1(index: isize, input: []const Input1) Input1Vector { return loadFull(Input1Tag, index, input); } pub fn maskLoad0( index: isize, input: []const Input0, places: isize, ) Input0Vector { return maskLoad0Or(@splat(0), index, input, places); } pub fn maskLoad0Or( inactive: Input0Vector, index: isize, input: []const Input0, places: isize, ) Input0Vector { return loadPartial(Input0Tag, inactive, index, input, places); } pub fn maskLoad1( index: isize, input: []const Input1, places: isize, ) Input1Vector { return maskLoad1Or(@splat(0), index, input, places); } pub fn maskLoad1Or( inactive: Input1Vector, index: isize, input: []const Input1, places: isize, ) Input1Vector { return loadPartial(Input1Tag, inactive, index, input, places); } pub fn storeAndShortCircuit( index: isize, output: []Output, value: OutputVector, ) bool { storeFull(OutputTag, index, output, value); return true; } pub fn maskStore( index: isize, output: []Output, value: OutputVector, places: isize, ) usize { return storePartial(OutputTag, index, output, value, places); } pub fn reduceFinal(_: OutputVector, _: []Output) usize { return 0; } pub fn reduceUnrolled( _: OutputVector, _: OutputVector, _: OutputVector, value: OutputVector, ) OutputVector { return value; } };}Source: lib/simd/src/root.zig:534
zig
pub const UnrollerUnit2D = unroller.UnrollerUnit2D;Complete call list
7 direct calls.
tiny.simd.tag.ScalableTag[function] atlib/simd/src/tag.zig:61lib.simd.src.unroller.loadFull[function] — private source atlib/simd/src/unroller.zig:525in nearest public ownertiny.simd.unrollerlib.simd.src.unroller.loadPartial[function] — private source atlib/simd/src/unroller.zig:533in nearest public ownertiny.simd.unrollerlib.simd.src.unroller.signedLane[function] — private source atlib/simd/src/unroller.zig:621in nearest public ownertiny.simd.unrollerlib.simd.src.unroller.storeFull[function] — private source atlib/simd/src/unroller.zig:548in nearest public ownertiny.simd.unrollerlib.simd.src.unroller.storePartial[function] — private source atlib/simd/src/unroller.zig:561in nearest public ownertiny.simd.unrollerlib.simd.src.unroller.validateLane[function] — private source atlib/simd/src/unroller.zig:617in nearest public ownertiny.simd.unroller
Audit
| Definitions | 1 |
|---|---|
| Public names | 2 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |