tiny.simd.tuple
Defined in tiny.simd.
API (9)
Actions
Public operations.
Source
Source: lib/simd/src/root.zig:20
zig
pub const tuple = @import("tuple.zig");Source: lib/simd/src/tuple.zig
zig
const std = @import("std");pub fn create2(comptime D: type, v0: D.Vector, v1: D.Vector) [2]D.Vector { return .{ v0, v1 };}pub fn create3( comptime D: type, v0: D.Vector, v1: D.Vector, v2: D.Vector,) [3]D.Vector { return .{ v0, v1, v2 };}pub fn create4( comptime D: type, v0: D.Vector, v1: D.Vector, v2: D.Vector, v3: D.Vector,) [4]D.Vector { return .{ v0, v1, v2, v3 };}pub fn get2(comptime index: usize, value: anytype) @TypeOf(value[index]) { if (comptime index >= 2) @compileError("get2 index must be less than two"); return value[index];}pub fn get3(comptime index: usize, value: anytype) @TypeOf(value[index]) { if (comptime index >= 3) @compileError("get3 index must be less than three"); return value[index];}pub fn get4(comptime index: usize, value: anytype) @TypeOf(value[index]) { if (comptime index >= 4) @compileError("get4 index must be less than four"); return value[index];}pub fn set2(comptime index: usize, value: anytype, replacement: @TypeOf(value[index])) @TypeOf(value) { if (comptime index >= 2) @compileError("set2 index must be less than two"); var result = value; result[index] = replacement; return result;}pub fn set3(comptime index: usize, value: anytype, replacement: @TypeOf(value[index])) @TypeOf(value) { if (comptime index >= 3) @compileError("set3 index must be less than three"); var result = value; result[index] = replacement; return result;}pub fn set4(comptime index: usize, value: anytype, replacement: @TypeOf(value[index])) @TypeOf(value) { if (comptime index >= 4) @compileError("set4 index must be less than four"); var result = value; result[index] = replacement; return result;}test "Highway tuples retain ordered vectors and replace one vector" { const simd = @import("root.zig"); const D = simd.FixedTag(u32, 4); const a: D.Vector = @splat(1); const b: D.Vector = @splat(2); const c: D.Vector = @splat(3); const d: D.Vector = @splat(4); const pair = create2(D, a, b); try std.testing.expect(@reduce(.And, get2(1, pair) == b)); const triple = set3(1, create3(D, a, b, c), d); try std.testing.expect(@reduce(.And, get3(0, triple) == a)); try std.testing.expect(@reduce(.And, get3(1, triple) == d)); const quad = set4(2, create4(D, a, b, c, d), a); try std.testing.expect(@reduce(.And, get4(2, quad) == a)); try std.testing.expect(@reduce(.And, get4(3, quad) == d));}Audit
| Definitions | 1 |
|---|---|
| Public names | 1 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |