blob: 20747a8cff4aa405f0f6c52cb252d66c415ba414 [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.
//-------------------------------------------------------------------------------------------------------
// Compares the value set by interpreter with the jitted code
// need to run with -mic:1 -off:simplejit -off:JITLoopBody
// Run locally with -trace:memop -trace:bailout to help find bugs
function test() {
let n = 300;
let i1 = 0, i2 = 5, i3 = -7, f1 = 3.14, f2 = -9.54715685478;
let j1 = -50, j2 = 51, j3 = 100, j4 = 200, j5 = 275;
let i;
let a1 = new Int8Array(n);
for(i = j1; i <= j2 - 1; i++) {a1[i] = i1;}
for(i = j3; i < j4; i++) {a1[i] = i3;}
i = j2; while(i < j3) {a1[i] = i2; ++i; a1[i] = i2; ++i;}
for(i = j5 - 1; i > j4 + 1; i--) {a1[i] = f1;}
for(i = n - 1; i >= j5; i--) {a1[i] = f2;}
let a2 = new Uint8Array(n);
for(i = j1; i <= j2 - 1; i++) {a2[i] = i1;}
for(i = j3; i < j4; i++) {a2[i] = i3;}
i = j2; while(i < j3) {a2[i] = i2; ++i; a2[i] = i2; ++i;}
for(i = j5 - 1; i > j4 + 1; i--) {a2[i] = f1;}
for(i = n - 1; i >= j5; i--) {a2[i] = f2;}
let a3 = new Int16Array(n);
for(i = j1; i <= j2 - 1; i++) {a3[i] = i1;}
for(i = j3; i < j4; i++) {a3[i] = i3;}
i = j2; while(i < j3) {a3[i] = i2; ++i; a3[i] = i2; ++i;}
for(i = j5 - 1; i > j4 + 1; i--) {a3[i] = f1;}
for(i = n - 1; i >= j5; i--) {a3[i] = f2;}
let a4 = new Uint16Array(n);
for(i = j1; i <= j2 - 1; i++) {a4[i] = i1;}
for(i = j3; i < j4; i++) {a4[i] = i3;}
i = j2; while(i < j3) {a4[i] = i2; ++i; a4[i] = i2; ++i;}
for(i = j5 - 1; i > j4 + 1; i--) {a4[i] = f1;}
for(i = n - 1; i >= j5; i--) {a4[i] = f2;}
let a5 = new Int32Array(n);
for(i = j1; i <= j2 - 1; i++) {a5[i] = i1;}
for(i = j3; i < j4; i++) {a5[i] = i3;}
i = j2; while(i < j3) {a5[i] = i2; ++i; a5[i] = i2; ++i;}
for(i = j5 - 1; i > j4 + 1; i--) {a5[i] = f1;}
for(i = n - 1; i >= j5; i--) {a5[i] = f2;}
let a6 = new Uint32Array(n);
for(i = j1; i <= j2 - 1; i++) {a6[i] = i1;}
for(i = j3; i < j4; i++) {a6[i] = i3;}
i = j2; while(i < j3) {a6[i] = i2; ++i; a6[i] = i2; ++i;}
for(i = j5 - 1; i > j4 + 1; i--) {a6[i] = f1;}
for(i = n - 1; i >= j5; i--) {a6[i] = f2;}
let a7 = new Float32Array(n);
for(i = j1; i <= j2 - 1; i++) {a7[i] = i1;}
for(i = j3; i < j4; i++) {a7[i] = i3;}
i = j2; while(i < j3) {a7[i] = i2; ++i; a7[i] = i2; ++i;}
for(i = j5 - 1; i > j4 + 1; i--) {a7[i] = f1;}
for(i = n - 1; i >= j5; i--) {a7[i] = f2;}
let a8 = new Float64Array(n);
for(i = j1; i <= j2 - 1; i++) {a8[i] = i1;}
for(i = j3; i < j4; i++) {a8[i] = i3;}
i = j2; while(i < j3) {a8[i] = i2; ++i; a8[i] = i2; ++i;}
for(i = j5 - 1; i > j4 + 1; i--) {a8[i] = f1;}
for(i = n - 1; i >= j5; i--) {a8[i] = f2;}
return [a1, a2, a3, a4, a5, a6, a7, a8];
}
// Run first time in interpreter
let a = test();
// Run second time with memop
let b = test();
let passed = true;
for(let i = 0; i < a.length; i++) {
let aa = a[i], bb = b[i];
for(let j = 0; j < aa.length; j++) {
if(aa[j] !== bb[j]) {
WScript.Echo(types[i] + " " + j + " " + aa[j] + " " + bb[j]);
passed = false;
}
}
}
if(passed) {
WScript.Echo("PASSED");
} else {
WScript.Echo("FAILED");
}