blob: 68b5640e75f77007e18fbe98fc8697c378423e32 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
function equal(a, b) {
if (a == b)
{
print("Correct");
}
else
{
print(">> Fail!");
}
}
function testSwizzle() {
print("Float32x4 Shuffle");
var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0);
var xyxy = SIMD.Float32x4.swizzle(a, false, true, 0, 1);
var zwzw = SIMD.Float32x4.swizzle(a, 2, 3, ["2"], 3);
var xxxx = SIMD.Float32x4.swizzle(a, 0, 0, 0, 0);
equal(1.0, SIMD.Float32x4.extractLane(xyxy, false));
equal(2.0, SIMD.Float32x4.extractLane(xyxy, true));
equal(1.0, SIMD.Float32x4.extractLane(xyxy, ["2"]));
equal(2.0, SIMD.Float32x4.extractLane(xyxy, 3));
equal(3.0, SIMD.Float32x4.extractLane(zwzw, 0));
equal(4.0, SIMD.Float32x4.extractLane(zwzw, 1));
equal(3.0, SIMD.Float32x4.extractLane(zwzw, 2));
equal(4.0, SIMD.Float32x4.extractLane(zwzw, 3));
equal(1.0, SIMD.Float32x4.extractLane(xxxx, 0));
equal(1.0, SIMD.Float32x4.extractLane(xxxx, 1));
equal(1.0, SIMD.Float32x4.extractLane(xxxx, 2));
equal(1.0, SIMD.Float32x4.extractLane(xxxx, 3));
}
function testShuffle() {
print("Float32x4 ShuffleMix");
var a = SIMD.Float32x4(1.0, 2.0, 3.0, 4.0);
var b = SIMD.Float32x4(5.0, 6.0, 7.0, 8.0);
var xyxy = SIMD.Float32x4.shuffle(a, b, 0, 1, 4, 5);
var zwzw = SIMD.Float32x4.shuffle(a, b, 2, 3, 6, 7);
var xxxx = SIMD.Float32x4.shuffle(a, b, 0, 0, 4, 4);
equal(1.0, SIMD.Float32x4.extractLane(xyxy, 0));
equal(2.0, SIMD.Float32x4.extractLane(xyxy, 1));
equal(5.0, SIMD.Float32x4.extractLane(xyxy, 2));
equal(6.0, SIMD.Float32x4.extractLane(xyxy, 3));
equal(3.0, SIMD.Float32x4.extractLane(zwzw, 0));
equal(4.0, SIMD.Float32x4.extractLane(zwzw, 1));
equal(7.0, SIMD.Float32x4.extractLane(zwzw, 2));
equal(8.0, SIMD.Float32x4.extractLane(zwzw, 3));
equal(1.0, SIMD.Float32x4.extractLane(xxxx, 0));
equal(1.0, SIMD.Float32x4.extractLane(xxxx, 1));
equal(5.0, SIMD.Float32x4.extractLane(xxxx, 2));
equal(5.0, SIMD.Float32x4.extractLane(xxxx, 3));
}
testSwizzle();
testSwizzle();
testSwizzle();
testSwizzle();
testSwizzle();
testSwizzle();
testSwizzle();
testSwizzle();
testShuffle();
testShuffle();
testShuffle();
testShuffle();
testShuffle();
testShuffle();
testShuffle();
testShuffle();