blob: b74aa7639b7fce9da9bda6f75e30b19895dc7d37 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft Corporation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
this.WScript.LoadScriptFile("..\\UnitTestFramework\\SIMDJsHelpers.js");
function asmModule(stdlib, imports) {
"use asm";
var ui16 = stdlib.SIMD.Uint8x16;
var ui16check = ui16.check;
var ui16extractLane = ui16.extractLane;
var ui16replaceLane = ui16.replaceLane;
var globImportui16 = ui16check(imports.g1);
var ui16g1 = ui16(1, 2, 3, 4, 9999, 6, 0xFF, 0xFFF, -9292992, 256, 255, 0, -1, 0x1, 33333, 16);
var vectorLength = 16;
var loopCOUNT = 3;
var i16 = stdlib.SIMD.Int8x16;
var i16check = i16.check;
var i16fu16 = i16.fromUint8x16Bits;
function testLocal()
{
var a = ui16(100000, 2345345, -1, 0, -9999, 0xFFF, 0, 0, 00000, 8383838, 1, 55553, 128, 127, 0xA, 16);
var result = ui16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
var loopIndex = 0;
var a0 = 0;
var a1 = 0;
var a2 = 0;
var a3 = 0;
var a4 = 0;
var a5 = 0;
var a6 = 0;
var a7 = 0;
var a8 = 0;
var a9 = 0;
var a10 = 0;
var a11 = 0;
var a12 = 0;
var a13 = 0;
var a14 = 0;
var a15 = 0;
while ((loopIndex | 0) < (loopCOUNT | 0)) {
result = ui16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
a0 = ui16extractLane(a, 0);
a1 = ui16extractLane(a, 1);
a2 = ui16extractLane(a, 2);
a3 = ui16extractLane(a, 3);
a4 = ui16extractLane(a, 4);
a5 = ui16extractLane(a, 5);
a6 = ui16extractLane(a, 6);
a7 = ui16extractLane(a, 7);
a8 = ui16extractLane(a, 8);
a9 = ui16extractLane(a, 9);
a10 = ui16extractLane(a, 10);
a11 = ui16extractLane(a, 11);
a12 = ui16extractLane(a, 12);
a13 = ui16extractLane(a, 13);
a14 = ui16extractLane(a, 14);
a15 = ui16extractLane(a, 15);
result = ui16replaceLane(result, 0, a0);
result = ui16replaceLane(result, 1, a1);
result = ui16replaceLane(result, 2, a2);
result = ui16replaceLane(result, 3, a3);
result = ui16replaceLane(result, 4, a4);
result = ui16replaceLane(result, 5, a5);
result = ui16replaceLane(result, 6, a6);
result = ui16replaceLane(result, 7, a7);
result = ui16replaceLane(result, 8, a8);
result = ui16replaceLane(result, 9, a9);
result = ui16replaceLane(result, 10, a10);
result = ui16replaceLane(result, 11, a11);
result = ui16replaceLane(result, 12, a12);
result = ui16replaceLane(result, 13, a13);
result = ui16replaceLane(result, 14, a14);
result = ui16replaceLane(result, 15, a15);
ui16check(result);
loopIndex = (loopIndex + 1) | 0;
}
return i16check(i16fu16(result));
}
function testGlobal()
{
var result = ui16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
var loopIndex = 0;
var a0 = 0;
var a1 = 0;
var a2 = 0;
var a3 = 0;
var a4 = 0;
var a5 = 0;
var a6 = 0;
var a7 = 0;
var a8 = 0;
var a9 = 0;
var a10 = 0;
var a11 = 0;
var a12 = 0;
var a13 = 0;
var a14 = 0;
var a15 = 0;
while ((loopIndex | 0) < (loopCOUNT | 0)) {
result = ui16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
a0 = ui16extractLane(ui16g1, 0);
a1 = ui16extractLane(ui16g1, 1);
a2 = ui16extractLane(ui16g1, 2);
a3 = ui16extractLane(ui16g1, 3);
a4 = ui16extractLane(ui16g1, 4);
a5 = ui16extractLane(ui16g1, 5);
a6 = ui16extractLane(ui16g1, 6);
a7 = ui16extractLane(ui16g1, 7);
a8 = ui16extractLane(ui16g1, 8);
a9 = ui16extractLane(ui16g1, 9);
a10 = ui16extractLane(ui16g1, 10);
a11 = ui16extractLane(ui16g1, 11);
a12 = ui16extractLane(ui16g1, 12);
a13 = ui16extractLane(ui16g1, 13);
a14 = ui16extractLane(ui16g1, 14);
a15 = ui16extractLane(ui16g1, 15);
result = ui16replaceLane(result, 0, a0);
result = ui16replaceLane(result, 1, a1);
result = ui16replaceLane(result, 2, a2);
result = ui16replaceLane(result, 3, a3);
result = ui16replaceLane(result, 4, a4);
result = ui16replaceLane(result, 5, a5);
result = ui16replaceLane(result, 6, a6);
result = ui16replaceLane(result, 7, a7);
result = ui16replaceLane(result, 8, a8);
result = ui16replaceLane(result, 9, a9);
result = ui16replaceLane(result, 10, a10);
result = ui16replaceLane(result, 11, a11);
result = ui16replaceLane(result, 12, a12);
result = ui16replaceLane(result, 13, a13);
result = ui16replaceLane(result, 14, a14);
result = ui16replaceLane(result, 15, a15);
ui16check(result);
loopIndex = (loopIndex + 1) | 0;
}
return i16check(i16fu16(result));
}
function testGlobalImport()
{
var result = ui16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
var loopIndex = 0;
var a0 = 0;
var a1 = 0;
var a2 = 0;
var a3 = 0;
var a4 = 0;
var a5 = 0;
var a6 = 0;
var a7 = 0;
var a8 = 0;
var a9 = 0;
var a10 = 0;
var a11 = 0;
var a12 = 0;
var a13 = 0;
var a14 = 0;
var a15 = 0;
while ((loopIndex | 0) < (loopCOUNT | 0)) {
result = ui16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
a0 = ui16extractLane(globImportui16, 0);
a1 = ui16extractLane(globImportui16, 1);
a2 = ui16extractLane(globImportui16, 2);
a3 = ui16extractLane(globImportui16, 3);
a4 = ui16extractLane(globImportui16, 4);
a5 = ui16extractLane(globImportui16, 5);
a6 = ui16extractLane(globImportui16, 6);
a7 = ui16extractLane(globImportui16, 7);
a8 = ui16extractLane(globImportui16, 8);
a9 = ui16extractLane(globImportui16, 9);
a10 = ui16extractLane(globImportui16, 10);
a11 = ui16extractLane(globImportui16, 11);
a12 = ui16extractLane(globImportui16, 12);
a13 = ui16extractLane(globImportui16, 13);
a14 = ui16extractLane(globImportui16, 14);
a15 = ui16extractLane(globImportui16, 15);
result = ui16replaceLane(result, 0, a0);
result = ui16replaceLane(result, 1, a1);
result = ui16replaceLane(result, 2, a2);
result = ui16replaceLane(result, 3, a3);
result = ui16replaceLane(result, 4, a4);
result = ui16replaceLane(result, 5, a5);
result = ui16replaceLane(result, 6, a6);
result = ui16replaceLane(result, 7, a7);
result = ui16replaceLane(result, 8, a8);
result = ui16replaceLane(result, 9, a9);
result = ui16replaceLane(result, 10, a10);
result = ui16replaceLane(result, 11, a11);
result = ui16replaceLane(result, 12, a12);
result = ui16replaceLane(result, 13, a13);
result = ui16replaceLane(result, 14, a14);
result = ui16replaceLane(result, 15, a15);
ui16check(result);
loopIndex = (loopIndex + 1) | 0;
}
return i16check(i16fu16(result));
}
return {testLocal:testLocal, testGlobal:testGlobal, testGlobalImport:testGlobalImport};
}
var m = asmModule(this, { g1: SIMD.Uint8x16(-1065353216, -1073741824, -1077936128, -1082130432, -383829393, -39283838, -92929, -109483922, -1065353216, -1073741824, -1077936128, -1082130432, -383829393, -39283838, -92929, -109483922) });
var ret1 = SIMD.Uint8x16.fromInt8x16Bits(m.testLocal());
var ret2 = SIMD.Uint8x16.fromInt8x16Bits(m.testGlobal());
var ret3 = SIMD.Uint8x16.fromInt8x16Bits(m.testGlobalImport());
equalSimd([160, 129, 255, 0, 241, 255, 0, 0, 0, 94, 1, 1, 128, 127, 10, 16], ret1, SIMD.Uint8x16, "testLocal");
equalSimd([1, 2, 3, 4, 15, 6, 255, 255, 64, 0, 255, 0, 255, 1, 53, 16], ret2, SIMD.Uint8x16, "testGlobal");
equalSimd([0, 0, 0, 0, 111, 130, 255, 110, 0, 0, 0, 0, 111, 130, 255, 110], ret3, SIMD.Uint8x16, "testGlobalImport");
print("PASS");