diff options
author | Alon Zakai <alonzakai@gmail.com> | 2019-04-19 15:22:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-19 15:22:55 -0700 |
commit | db14d0477f2715e3071687f42b77d8712477d83e (patch) | |
tree | 7cb4f679bfc18cbb7d4a87db0b3d5a02f6bcaeed /test/wasm2js/select.2asm.js | |
parent | a4baf2152d11c28964025759d2702fe7c48d321e (diff) | |
download | binaryen-db14d0477f2715e3071687f42b77d8712477d83e.tar.gz binaryen-db14d0477f2715e3071687f42b77d8712477d83e.tar.bz2 binaryen-db14d0477f2715e3071687f42b77d8712477d83e.zip |
wasm2js2 import fixes (#2031)
* Don't assume function types exist in legalize-js-interface.
* Properly handle (ignore) imports in RemoveNonJSOps - do not try to recurse into them.
* Run legalize-js-interface and remove-unused-module-elements in wasm2js, the first is necessary, the last is nice to have.
Diffstat (limited to 'test/wasm2js/select.2asm.js')
-rw-r--r-- | test/wasm2js/select.2asm.js | 102 |
1 files changed, 99 insertions, 3 deletions
diff --git a/test/wasm2js/select.2asm.js b/test/wasm2js/select.2asm.js index 893d6db56..fdc12ba92 100644 --- a/test/wasm2js/select.2asm.js +++ b/test/wasm2js/select.2asm.js @@ -1,3 +1,4 @@ +import { setTempRet0 } from 'env'; function asmFunc(global, env, buffer) { "almost asm"; @@ -21,6 +22,7 @@ function asmFunc(global, env, buffer) { var abort = env.abort; var nan = global.NaN; var infinity = global.Infinity; + var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function $0(lhs, rhs, cond) { lhs = lhs | 0; @@ -75,11 +77,105 @@ function asmFunc(global, env, buffer) { return abort() | 0; } + function legalstub$1($0_1, $1_1, $2_1, $3_1, $4_1) { + $0_1 = $0_1 | 0; + $1_1 = $1_1 | 0; + $2_1 = $2_1 | 0; + $3_1 = $3_1 | 0; + $4_1 = $4_1 | 0; + var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $22 = 0, $23 = 0, $24 = 0, $7 = 0, $7$hi = 0, $10$hi = 0, $11 = 0, $11$hi = 0, $13 = 0, $13$hi = 0, $16$hi = 0, $17 = 0, $17$hi = 0, $5_1 = 0, $5$hi = 0; + i64toi32_i32$0 = 0; + $7 = $0_1; + $7$hi = i64toi32_i32$0; + i64toi32_i32$0 = 0; + i64toi32_i32$2 = $1_1; + i64toi32_i32$1 = 0; + i64toi32_i32$3 = 32; + i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; + if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { + { + i64toi32_i32$1 = i64toi32_i32$2 << i64toi32_i32$4 | 0; + $22 = 0; + } + } else { + { + i64toi32_i32$1 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$2 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$0 << i64toi32_i32$4 | 0) | 0; + $22 = i64toi32_i32$2 << i64toi32_i32$4 | 0; + } + } + $10$hi = i64toi32_i32$1; + i64toi32_i32$1 = $7$hi; + i64toi32_i32$0 = $7; + i64toi32_i32$2 = $10$hi; + i64toi32_i32$3 = $22; + i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0; + $11 = i64toi32_i32$0 | i64toi32_i32$3 | 0; + $11$hi = i64toi32_i32$2; + i64toi32_i32$2 = 0; + $13 = $2_1; + $13$hi = i64toi32_i32$2; + i64toi32_i32$2 = 0; + i64toi32_i32$1 = $3_1; + i64toi32_i32$0 = 0; + i64toi32_i32$3 = 32; + i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; + if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { + { + i64toi32_i32$0 = i64toi32_i32$1 << i64toi32_i32$4 | 0; + $23 = 0; + } + } else { + { + i64toi32_i32$0 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$1 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$2 << i64toi32_i32$4 | 0) | 0; + $23 = i64toi32_i32$1 << i64toi32_i32$4 | 0; + } + } + $16$hi = i64toi32_i32$0; + i64toi32_i32$0 = $13$hi; + i64toi32_i32$2 = $13; + i64toi32_i32$1 = $16$hi; + i64toi32_i32$3 = $23; + i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0; + $17 = i64toi32_i32$2 | i64toi32_i32$3 | 0; + $17$hi = i64toi32_i32$1; + i64toi32_i32$1 = $11$hi; + i64toi32_i32$2 = $17$hi; + i64toi32_i32$2 = $1($11 | 0, i64toi32_i32$1 | 0, $17 | 0, i64toi32_i32$2 | 0, $4_1 | 0) | 0; + i64toi32_i32$1 = i64toi32_i32$HIGH_BITS; + $5_1 = i64toi32_i32$2; + $5$hi = i64toi32_i32$1; + i64toi32_i32$0 = i64toi32_i32$2; + i64toi32_i32$2 = 0; + i64toi32_i32$3 = 32; + i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0; + if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) { + { + i64toi32_i32$2 = 0; + $24 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; + } + } else { + { + i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0; + $24 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$0 >>> i64toi32_i32$4 | 0) | 0; + } + } + setTempRet0($24 | 0); + i64toi32_i32$2 = $5$hi; + return $5_1 | 0; + } + + function legalstub$2($0_1, $1_1, $2_1) { + $0_1 = +$0_1; + $1_1 = +$1_1; + $2_1 = $2_1 | 0; + return +(+Math_fround($2(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)), $2_1 | 0))); + } + var FUNCTION_TABLE = []; return { select_i32: $0, - select_i64: $1, - select_f32: $2, + select_i64: legalstub$1, + select_f32: legalstub$2, select_f64: $3, select_trap_l: $4, select_trap_r: $5 @@ -87,7 +183,7 @@ function asmFunc(global, env, buffer) { } const memasmFunc = new ArrayBuffer(65536); -const retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc); +const retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); },setTempRet0},memasmFunc); export const select_i32 = retasmFunc.select_i32; export const select_i64 = retasmFunc.select_i64; export const select_f32 = retasmFunc.select_f32; |