mirror of
https://github.com/ziglang/zig.git
synced 2024-11-27 07:32:44 +00:00
21 lines
776 B
Zig
21 lines
776 B
Zig
|
const std = @import("std");
|
||
|
const expect = std.testing.expect;
|
||
|
|
||
|
test "vector @shuffle" {
|
||
|
const a = @Vector(7, u8){ 'o', 'l', 'h', 'e', 'r', 'z', 'w' };
|
||
|
const b = @Vector(4, u8){ 'w', 'd', '!', 'x' };
|
||
|
|
||
|
// To shuffle within a single vector, pass undefined as the second argument.
|
||
|
// Notice that we can re-order, duplicate, or omit elements of the input vector
|
||
|
const mask1 = @Vector(5, i32){ 2, 3, 1, 1, 0 };
|
||
|
const res1: @Vector(5, u8) = @shuffle(u8, a, undefined, mask1);
|
||
|
try expect(std.mem.eql(u8, &@as([5]u8, res1), "hello"));
|
||
|
|
||
|
// Combining two vectors
|
||
|
const mask2 = @Vector(6, i32){ -1, 0, 4, 1, -2, -3 };
|
||
|
const res2: @Vector(6, u8) = @shuffle(u8, a, b, mask2);
|
||
|
try expect(std.mem.eql(u8, &@as([6]u8, res2), "world!"));
|
||
|
}
|
||
|
|
||
|
// test
|