diff options
Diffstat (limited to 'test/wasm2asm.asserts.js')
-rw-r--r-- | test/wasm2asm.asserts.js | 45 |
1 files changed, 43 insertions, 2 deletions
diff --git a/test/wasm2asm.asserts.js b/test/wasm2asm.asserts.js index 0b347b02c..a79b4dc7a 100644 --- a/test/wasm2asm.asserts.js +++ b/test/wasm2asm.asserts.js @@ -70,13 +70,22 @@ function asmFunc(global, env, buffer) { return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0; } + function __wasm_fetch_high_bits() { + return i64toi32_i32$HIGH_BITS | 0; + } + return { empty: $0, add: $1, - div_s: $2 + div_s: $2, + __wasm_fetch_high_bits: __wasm_fetch_high_bits }; } +var __array_buffer = new ArrayBuffer(65536); +var HEAP32 = new Int32Array(__array_buffer); +var HEAPF32 = new Float32Array(__array_buffer); +var HEAPF64 = new Float64Array(__array_buffer); var asmModule = asmFunc({ Math: Math, Int8Array: Int8Array, @@ -89,7 +98,39 @@ var asmModule = asmFunc({ Float64Array: Float64Array }, { -}, new ArrayBuffer(65536)); +}, __array_buffer); + + function f32Equal(a, b) { + var i = new Int32Array(1); + var f = new Float32Array(i.buffer); + f[0] = a; + var ai = f[0]; + f[0] = b; + var bi = f[0]; + + return (isNaN(a) && isNaN(b)) || a == b; + } + ; + + function f64Equal(a, b) { + var i = new Int32Array(2); + var f = new Float64Array(i.buffer); + f[0] = a; + var ai1 = f[0]; + var ai2 = f[1]; + f[0] = b; + var bi1 = f[0]; + var bi2 = f[1]; + + return (isNaN(a) && isNaN(b)) || (ai1 == bi1 && ai2 == bi2); + } + ; + + function i64Equal(actual_lo, expected_lo, expected_hi) { + return actual_lo == (expected_lo | 0) && + asmModule.__wasm_fetch_high_bits() == (expected_hi | 0); + } + ; function check1() { var wasm2asm_i32$0 = 0; asmModule.empty(); |