summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/binaryen.js/emit_asmjs.js.txt1
-rw-r--r--test/wasm2js.asserts.js8
-rw-r--r--test/wasm2js.traps.js8
-rw-r--r--test/wasm2js/address.2asm.js1
-rw-r--r--test/wasm2js/base64.2asm.js18
-rw-r--r--test/wasm2js/block.2asm.js1
-rw-r--r--test/wasm2js/br.2asm.js196
-rw-r--r--test/wasm2js/br_if.2asm.js1
-rw-r--r--test/wasm2js/br_table.2asm.js191
-rw-r--r--test/wasm2js/br_table_temp.2asm.js90
-rw-r--r--test/wasm2js/br_table_to_loop.2asm.js1
-rw-r--r--test/wasm2js/break-drop.2asm.js1
-rw-r--r--test/wasm2js/call.2asm.js372
-rw-r--r--test/wasm2js/call_indirect.2asm.js330
-rw-r--r--test/wasm2js/comments.2asm.js2
-rw-r--r--test/wasm2js/conversions-modified.2asm.js467
-rw-r--r--test/wasm2js/empty_table.2asm.js28
-rw-r--r--test/wasm2js/emscripten.2asm.js2
-rw-r--r--test/wasm2js/endianness.2asm.js458
-rw-r--r--test/wasm2js/f32.2asm.js106
-rw-r--r--test/wasm2js/f32_cmp.2asm.js49
-rw-r--r--test/wasm2js/f64.2asm.js1
-rw-r--r--test/wasm2js/f64_cmp.2asm.js1
-rw-r--r--test/wasm2js/fac.2asm.js279
-rw-r--r--test/wasm2js/float-ops.2asm.js360
-rw-r--r--test/wasm2js/float_literals-modified.2asm.js844
-rw-r--r--test/wasm2js/float_misc.2asm.js106
-rw-r--r--test/wasm2js/forward.2asm.js1
-rw-r--r--test/wasm2js/func-ptr-offset.2asm.js1
-rw-r--r--test/wasm2js/func.2asm.js633
-rw-r--r--test/wasm2js/func_ptrs.2asm.js11
-rw-r--r--test/wasm2js/get-set-local.2asm.js41
-rw-r--r--test/wasm2js/get_local.2asm.js176
-rw-r--r--test/wasm2js/global_i64.2asm.js3
-rw-r--r--test/wasm2js/grow-memory-tricky.2asm.js1
-rw-r--r--test/wasm2js/grow_memory.2asm.js1
-rw-r--r--test/wasm2js/hello_world.2asm.js3
-rw-r--r--test/wasm2js/i32.2asm.js1
-rw-r--r--test/wasm2js/i64-add-sub.2asm.js199
-rw-r--r--test/wasm2js/i64-ctz.2asm.js114
-rw-r--r--test/wasm2js/i64-lowering.2asm.js675
-rw-r--r--test/wasm2js/i64-rotate.2asm.js198
-rw-r--r--test/wasm2js/i64-select.2asm.js33
-rw-r--r--test/wasm2js/i64-shifts.2asm.js199
-rw-r--r--test/wasm2js/i64.2asm.js2193
-rw-r--r--test/wasm2js/if_unreachable.2asm.js22
-rw-r--r--test/wasm2js/int_exprs.2asm.js1625
-rw-r--r--test/wasm2js/int_literals.2asm.js312
-rw-r--r--test/wasm2js/labels.2asm.js1
-rw-r--r--test/wasm2js/left-to-right.2asm.js38
-rw-r--r--test/wasm2js/loop.2asm.js122
-rw-r--r--test/wasm2js/nested-selects.2asm.js5
-rw-r--r--test/wasm2js/reinterpret.2asm.js39
-rw-r--r--test/wasm2js/select.2asm.js102
-rw-r--r--test/wasm2js/set_local.2asm.js142
-rw-r--r--test/wasm2js/stack-modified.2asm.js279
-rw-r--r--test/wasm2js/switch.2asm.js59
-rw-r--r--test/wasm2js/tee_local.2asm.js235
-rw-r--r--test/wasm2js/traps.2asm.js534
-rw-r--r--test/wasm2js/unaligned.2asm.js38
-rw-r--r--test/wasm2js/unary-ops.2asm.js311
61 files changed, 11252 insertions, 1017 deletions
diff --git a/test/binaryen.js/emit_asmjs.js.txt b/test/binaryen.js/emit_asmjs.js.txt
index 409c4ca27..a6c9badc1 100644
--- a/test/binaryen.js/emit_asmjs.js.txt
+++ b/test/binaryen.js/emit_asmjs.js.txt
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function main($0) {
$0 = $0 | 0;
return $0 | 0;
diff --git a/test/wasm2js.asserts.js b/test/wasm2js.asserts.js
index d4211e231..3ab4b1d08 100644
--- a/test/wasm2js.asserts.js
+++ b/test/wasm2js.asserts.js
@@ -52,7 +52,6 @@ function asmFunc0(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0() {
}
@@ -69,16 +68,11 @@ function asmFunc0(global, env, buffer) {
return (x | 0) / (y | 0) | 0 | 0;
}
- function __wasm_fetch_high_bits() {
- return i64toi32_i32$HIGH_BITS | 0;
- }
-
var FUNCTION_TABLE = [];
return {
empty: $0,
add: $1,
- div_s: $2,
- __wasm_fetch_high_bits: __wasm_fetch_high_bits
+ div_s: $2
};
}
diff --git a/test/wasm2js.traps.js b/test/wasm2js.traps.js
index c60f4c0ef..65659966d 100644
--- a/test/wasm2js.traps.js
+++ b/test/wasm2js.traps.js
@@ -52,7 +52,6 @@ function asmFunc0(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0() {
}
@@ -69,16 +68,11 @@ function asmFunc0(global, env, buffer) {
return (x | 0) / (y | 0) | 0 | 0;
}
- function __wasm_fetch_high_bits() {
- return i64toi32_i32$HIGH_BITS | 0;
- }
-
var FUNCTION_TABLE = [];
return {
empty: $0,
add: $1,
- div_s: $2,
- __wasm_fetch_high_bits: __wasm_fetch_high_bits
+ div_s: $2
};
}
diff --git a/test/wasm2js/address.2asm.js b/test/wasm2js/address.2asm.js
index f9e5202ec..9f91cc0a0 100644
--- a/test/wasm2js/address.2asm.js
+++ b/test/wasm2js/address.2asm.js
@@ -23,7 +23,6 @@ function asmFunc(global, env, buffer) {
var nan = global.NaN;
var infinity = global.Infinity;
var print = env.print;
- var i64toi32_i32$HIGH_BITS = 0;
function $0(i) {
i = i | 0;
var wasm2js_i32$0 = 0;
diff --git a/test/wasm2js/base64.2asm.js b/test/wasm2js/base64.2asm.js
index c56a9db13..a88a82e9e 100644
--- a/test/wasm2js/base64.2asm.js
+++ b/test/wasm2js/base64.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
var FUNCTION_TABLE = [];
return {
@@ -29,21 +28,4 @@ function asmFunc(global, env, buffer) {
}
const memasmFunc = new ArrayBuffer(65536);
-const assignasmFunc = (
- function(mem) {
- const _mem = new Uint8Array(mem);
- return function(offset, s) {
- if (typeof Buffer === 'undefined') {
- const bytes = atob(s);
- for (let i = 0; i < bytes.length; i++)
- _mem[offset + i] = bytes.charCodeAt(i);
- } else {
- const bytes = Buffer.from(s, 'base64');
- for (let i = 0; i < bytes.length; i++)
- _mem[offset + i] = bytes[i];
- }
- }
- }
- )(memasmFunc);
-assignasmFunc(2, "AP7/");
const retasmFunc = asmFunc({Math,Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,NaN,Infinity}, {abort:function() { throw new Error('abort'); }},memasmFunc);
diff --git a/test/wasm2js/block.2asm.js b/test/wasm2js/block.2asm.js
index 0a3c59c3c..cff354c48 100644
--- a/test/wasm2js/block.2asm.js
+++ b/test/wasm2js/block.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function dummy() {
}
diff --git a/test/wasm2js/br.2asm.js b/test/wasm2js/br.2asm.js
index 01f5d3941..1aa2f3edc 100644
--- a/test/wasm2js/br.2asm.js
+++ b/test/wasm2js/br.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 dummy() {
@@ -561,100 +563,131 @@ function asmFunc(global, env, buffer) {
return 1 + $0 | 0 | 0;
}
- function __wasm_ctz_i32(var$0) {
- var$0 = var$0 | 0;
- if (var$0) {
- return 31 - Math_clz32((var$0 + 4294967295 | 0) ^ var$0 | 0) | 0 | 0
+ function legalstub$6() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $6() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
}
- return 32 | 0;
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$7() {
+ return +(+Math_fround($7()));
}
- function __wasm_ctz_i64(var$0, var$0$hi) {
- var$0 = var$0 | 0;
- var$0$hi = var$0$hi | 0;
- var i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, $10_1 = 0, $5$hi = 0, $8$hi = 0;
- i64toi32_i32$0 = var$0$hi;
- if (((var$0 | i64toi32_i32$0 | 0 | 0) == (0 | 0) | 0) == (0 | 0)) {
+ function legalstub$23() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $23() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = var$0$hi;
- i64toi32_i32$2 = var$0;
- i64toi32_i32$1 = 4294967295;
- i64toi32_i32$3 = 4294967295;
- i64toi32_i32$4 = i64toi32_i32$2 + i64toi32_i32$3 | 0;
- i64toi32_i32$5 = i64toi32_i32$0 + i64toi32_i32$1 | 0;
- if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0) {
- i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0
- }
- $5$hi = i64toi32_i32$5;
- i64toi32_i32$5 = var$0$hi;
- i64toi32_i32$5 = $5$hi;
- i64toi32_i32$0 = i64toi32_i32$4;
- i64toi32_i32$2 = var$0$hi;
- i64toi32_i32$3 = var$0;
- i64toi32_i32$2 = i64toi32_i32$5 ^ i64toi32_i32$2 | 0;
- i64toi32_i32$0 = i64toi32_i32$0 ^ i64toi32_i32$3 | 0;
- i64toi32_i32$3 = Math_clz32(i64toi32_i32$2);
- i64toi32_i32$5 = 0;
- if ((i64toi32_i32$3 | 0) == (32 | 0)) {
- $10_1 = Math_clz32(i64toi32_i32$0) + 32 | 0
- } else {
- $10_1 = i64toi32_i32$3
- }
- $8$hi = i64toi32_i32$5;
- i64toi32_i32$5 = 0;
- i64toi32_i32$0 = 63;
- i64toi32_i32$2 = $8$hi;
- i64toi32_i32$3 = $10_1;
- i64toi32_i32$1 = i64toi32_i32$0 - i64toi32_i32$3 | 0;
- i64toi32_i32$4 = (i64toi32_i32$0 >>> 0 < i64toi32_i32$3 >>> 0) + i64toi32_i32$2 | 0;
- i64toi32_i32$4 = i64toi32_i32$5 - i64toi32_i32$4 | 0;
- i64toi32_i32$0 = i64toi32_i32$1;
- i64toi32_i32$HIGH_BITS = i64toi32_i32$4;
- return i64toi32_i32$0 | 0;
+ i64toi32_i32$0 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
}
}
- i64toi32_i32$0 = 0;
- i64toi32_i32$4 = 64;
- i64toi32_i32$HIGH_BITS = i64toi32_i32$0;
- return i64toi32_i32$4 | 0;
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
}
- var FUNCTION_TABLE = [f];
- function __wasm_grow_memory(pagesToAdd) {
- pagesToAdd = pagesToAdd | 0;
- var oldPages = __wasm_current_memory() | 0;
- var newPages = oldPages + pagesToAdd | 0;
- if ((oldPages < newPages) && (newPages < 65536)) {
+ function legalstub$39() {
+ return +(+Math_fround($39()));
+ }
+
+ function legalstub$40() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $40() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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) {
{
- var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536));
- var newHEAP8 = new global.Int8Array(newBuffer);
- newHEAP8.set(HEAP8);
- HEAP8 = newHEAP8;
- HEAP16 = new global.Int16Array(newBuffer);
- HEAP32 = new global.Int32Array(newBuffer);
- HEAPU8 = new global.Uint8Array(newBuffer);
- HEAPU16 = new global.Uint16Array(newBuffer);
- HEAPU32 = new global.Uint32Array(newBuffer);
- HEAPF32 = new global.Float32Array(newBuffer);
- HEAPF64 = new global.Float64Array(newBuffer);
- buffer = newBuffer;
+ i64toi32_i32$0 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
}
}
- return oldPages;
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$45() {
+ return +(+Math_fround($45()));
}
- function __wasm_current_memory() {
- return buffer.byteLength / 65536 | 0;
+ function legalstub$47() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $47() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
}
+ var FUNCTION_TABLE = [];
return {
type_i32: $1,
type_i64: $2,
type_f32: $3,
type_f64: $4,
type_i32_value: $5,
- type_i64_value: $6,
- type_f32_value: $7,
+ type_i64_value: legalstub$6,
+ type_f32_value: legalstub$7,
type_f64_value: $8,
as_block_first: $9,
as_block_mid: $10,
@@ -670,7 +703,7 @@ function asmFunc(global, env, buffer) {
as_br_table_index: $20,
as_br_table_value: $21,
as_br_table_value_index: $22,
- as_return_value: $23,
+ as_return_value: legalstub$23,
as_if_cond: $24,
as_if_then: $25,
as_if_else: $26,
@@ -685,15 +718,15 @@ function asmFunc(global, env, buffer) {
as_call_indirect_mid: $36,
as_call_indirect_last: $37,
as_local_set_value: $38,
- as_load_address: $39,
- as_loadN_address: $40,
+ as_load_address: legalstub$39,
+ as_loadN_address: legalstub$40,
as_store_address: $41,
as_store_value: $42,
as_storeN_address: $43,
as_storeN_value: $44,
- as_unary_operand: $45,
+ as_unary_operand: legalstub$45,
as_binary_left: $46,
- as_binary_right: $47,
+ as_binary_right: legalstub$47,
as_test_operand: $48,
as_compare_left: $49,
as_compare_right: $50,
@@ -709,7 +742,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 type_i32 = retasmFunc.type_i32;
export const type_i64 = retasmFunc.type_i64;
export const type_f32 = retasmFunc.type_f32;
@@ -790,11 +823,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
- function type_arg_num_vs_void() {
-
- }
-
var FUNCTION_TABLE = [];
return {
diff --git a/test/wasm2js/br_if.2asm.js b/test/wasm2js/br_if.2asm.js
index 2776b8e86..384daedac 100644
--- a/test/wasm2js/br_if.2asm.js
+++ b/test/wasm2js/br_if.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function dummy() {
}
diff --git a/test/wasm2js/br_table.2asm.js b/test/wasm2js/br_table.2asm.js
index 7ff5e4c4d..bd66eb523 100644
--- a/test/wasm2js/br_table.2asm.js
+++ b/test/wasm2js/br_table.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 dummy() {
@@ -50196,100 +50198,131 @@ function asmFunc(global, env, buffer) {
return $3_1 | 0;
}
- function __wasm_ctz_i32(var$0) {
- var$0 = var$0 | 0;
- if (var$0) {
- return 31 - Math_clz32((var$0 + 4294967295 | 0) ^ var$0 | 0) | 0 | 0
+ function legalstub$6() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $6() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
}
- return 32 | 0;
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$7() {
+ return +(+Math_fround($7()));
}
- function __wasm_ctz_i64(var$0, var$0$hi) {
- var$0 = var$0 | 0;
- var$0$hi = var$0$hi | 0;
- var i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, $10_1 = 0, $5$hi = 0, $8$hi = 0;
- i64toi32_i32$0 = var$0$hi;
- if (((var$0 | i64toi32_i32$0 | 0 | 0) == (0 | 0) | 0) == (0 | 0)) {
+ function legalstub$30() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $30() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = var$0$hi;
- i64toi32_i32$2 = var$0;
- i64toi32_i32$1 = 4294967295;
- i64toi32_i32$3 = 4294967295;
- i64toi32_i32$4 = i64toi32_i32$2 + i64toi32_i32$3 | 0;
- i64toi32_i32$5 = i64toi32_i32$0 + i64toi32_i32$1 | 0;
- if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0) {
- i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0
- }
- $5$hi = i64toi32_i32$5;
- i64toi32_i32$5 = var$0$hi;
- i64toi32_i32$5 = $5$hi;
- i64toi32_i32$0 = i64toi32_i32$4;
- i64toi32_i32$2 = var$0$hi;
- i64toi32_i32$3 = var$0;
- i64toi32_i32$2 = i64toi32_i32$5 ^ i64toi32_i32$2 | 0;
- i64toi32_i32$0 = i64toi32_i32$0 ^ i64toi32_i32$3 | 0;
- i64toi32_i32$3 = Math_clz32(i64toi32_i32$2);
- i64toi32_i32$5 = 0;
- if ((i64toi32_i32$3 | 0) == (32 | 0)) {
- $10_1 = Math_clz32(i64toi32_i32$0) + 32 | 0
- } else {
- $10_1 = i64toi32_i32$3
- }
- $8$hi = i64toi32_i32$5;
- i64toi32_i32$5 = 0;
- i64toi32_i32$0 = 63;
- i64toi32_i32$2 = $8$hi;
- i64toi32_i32$3 = $10_1;
- i64toi32_i32$1 = i64toi32_i32$0 - i64toi32_i32$3 | 0;
- i64toi32_i32$4 = (i64toi32_i32$0 >>> 0 < i64toi32_i32$3 >>> 0) + i64toi32_i32$2 | 0;
- i64toi32_i32$4 = i64toi32_i32$5 - i64toi32_i32$4 | 0;
- i64toi32_i32$0 = i64toi32_i32$1;
- i64toi32_i32$HIGH_BITS = i64toi32_i32$4;
- return i64toi32_i32$0 | 0;
+ i64toi32_i32$0 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
}
}
- i64toi32_i32$0 = 0;
- i64toi32_i32$4 = 64;
- i64toi32_i32$HIGH_BITS = i64toi32_i32$0;
- return i64toi32_i32$4 | 0;
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$46() {
+ return +(+Math_fround($46()));
}
- var FUNCTION_TABLE = [f];
- function __wasm_grow_memory(pagesToAdd) {
- pagesToAdd = pagesToAdd | 0;
- var oldPages = __wasm_current_memory() | 0;
- var newPages = oldPages + pagesToAdd | 0;
- if ((oldPages < newPages) && (newPages < 65536)) {
+ function legalstub$47() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $47() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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) {
{
- var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536));
- var newHEAP8 = new global.Int8Array(newBuffer);
- newHEAP8.set(HEAP8);
- HEAP8 = newHEAP8;
- HEAP16 = new global.Int16Array(newBuffer);
- HEAP32 = new global.Int32Array(newBuffer);
- HEAPU8 = new global.Uint8Array(newBuffer);
- HEAPU16 = new global.Uint16Array(newBuffer);
- HEAPU32 = new global.Uint32Array(newBuffer);
- HEAPF32 = new global.Float32Array(newBuffer);
- HEAPF64 = new global.Float64Array(newBuffer);
- buffer = newBuffer;
+ i64toi32_i32$0 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
}
}
- return oldPages;
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$52() {
+ return +(+Math_fround($52()));
}
- function __wasm_current_memory() {
- return buffer.byteLength / 65536 | 0;
+ function legalstub$54() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $54() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
}
+ var FUNCTION_TABLE = [];
return {
type_i32: $1,
type_i64: $2,
type_f32: $3,
type_f64: $4,
type_i32_value: $5,
- type_i64_value: $6,
- type_f32_value: $7,
+ type_i64_value: legalstub$6,
+ type_f32_value: legalstub$7,
type_f64_value: $8,
empty: $9,
empty_value: $10,
@@ -50312,7 +50345,7 @@ function asmFunc(global, env, buffer) {
as_br_table_index: $27,
as_br_table_value: $28,
as_br_table_value_index: $29,
- as_return_value: $30,
+ as_return_value: legalstub$30,
as_if_cond: $31,
as_if_then: $32,
as_if_else: $33,
@@ -50327,15 +50360,15 @@ function asmFunc(global, env, buffer) {
as_call_indirect_last: $43,
as_call_indirect_func: $44,
as_local_set_value: $45,
- as_load_address: $46,
- as_loadN_address: $47,
+ as_load_address: legalstub$46,
+ as_loadN_address: legalstub$47,
as_store_address: $48,
as_store_value: $49,
as_storeN_address: $50,
as_storeN_value: $51,
- as_unary_operand: $52,
+ as_unary_operand: legalstub$52,
as_binary_left: $53,
- as_binary_right: $54,
+ as_binary_right: legalstub$54,
as_test_operand: $55,
as_compare_left: $56,
as_compare_right: $57,
@@ -50351,7 +50384,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 type_i32 = retasmFunc.type_i32;
export const type_i64 = retasmFunc.type_i64;
export const type_f32 = retasmFunc.type_f32;
diff --git a/test/wasm2js/br_table_temp.2asm.js b/test/wasm2js/br_table_temp.2asm.js
index a38640d64..e6e397f01 100644
--- a/test/wasm2js/br_table_temp.2asm.js
+++ b/test/wasm2js/br_table_temp.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function dummy() {
}
@@ -50192,92 +50191,11 @@ function asmFunc(global, env, buffer) {
return $3_1 | 0;
}
- function __wasm_ctz_i32(var$0) {
- var$0 = var$0 | 0;
- if (var$0) {
- return 31 - Math_clz32((var$0 + 4294967295 | 0) ^ var$0 | 0) | 0 | 0
- }
- return 32 | 0;
- }
-
- function __wasm_ctz_i64(var$0, var$0$hi) {
- var$0 = var$0 | 0;
- var$0$hi = var$0$hi | 0;
- var i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, $10_1 = 0, $5$hi = 0, $8$hi = 0;
- i64toi32_i32$0 = var$0$hi;
- if (((var$0 | i64toi32_i32$0 | 0 | 0) == (0 | 0) | 0) == (0 | 0)) {
- {
- i64toi32_i32$0 = var$0$hi;
- i64toi32_i32$2 = var$0;
- i64toi32_i32$1 = 4294967295;
- i64toi32_i32$3 = 4294967295;
- i64toi32_i32$4 = i64toi32_i32$2 + i64toi32_i32$3 | 0;
- i64toi32_i32$5 = i64toi32_i32$0 + i64toi32_i32$1 | 0;
- if (i64toi32_i32$4 >>> 0 < i64toi32_i32$3 >>> 0) {
- i64toi32_i32$5 = i64toi32_i32$5 + 1 | 0
- }
- $5$hi = i64toi32_i32$5;
- i64toi32_i32$5 = var$0$hi;
- i64toi32_i32$5 = $5$hi;
- i64toi32_i32$0 = i64toi32_i32$4;
- i64toi32_i32$2 = var$0$hi;
- i64toi32_i32$3 = var$0;
- i64toi32_i32$2 = i64toi32_i32$5 ^ i64toi32_i32$2 | 0;
- i64toi32_i32$0 = i64toi32_i32$0 ^ i64toi32_i32$3 | 0;
- i64toi32_i32$3 = Math_clz32(i64toi32_i32$2);
- i64toi32_i32$5 = 0;
- if ((i64toi32_i32$3 | 0) == (32 | 0)) {
- $10_1 = Math_clz32(i64toi32_i32$0) + 32 | 0
- } else {
- $10_1 = i64toi32_i32$3
- }
- $8$hi = i64toi32_i32$5;
- i64toi32_i32$5 = 0;
- i64toi32_i32$0 = 63;
- i64toi32_i32$2 = $8$hi;
- i64toi32_i32$3 = $10_1;
- i64toi32_i32$1 = i64toi32_i32$0 - i64toi32_i32$3 | 0;
- i64toi32_i32$4 = (i64toi32_i32$0 >>> 0 < i64toi32_i32$3 >>> 0) + i64toi32_i32$2 | 0;
- i64toi32_i32$4 = i64toi32_i32$5 - i64toi32_i32$4 | 0;
- i64toi32_i32$0 = i64toi32_i32$1;
- i64toi32_i32$HIGH_BITS = i64toi32_i32$4;
- return i64toi32_i32$0 | 0;
- }
- }
- i64toi32_i32$0 = 0;
- i64toi32_i32$4 = 64;
- i64toi32_i32$HIGH_BITS = i64toi32_i32$0;
- return i64toi32_i32$4 | 0;
- }
-
- var FUNCTION_TABLE = [f];
- function __wasm_grow_memory(pagesToAdd) {
- pagesToAdd = pagesToAdd | 0;
- var oldPages = __wasm_current_memory() | 0;
- var newPages = oldPages + pagesToAdd | 0;
- if ((oldPages < newPages) && (newPages < 65536)) {
- {
- var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536));
- var newHEAP8 = new global.Int8Array(newBuffer);
- newHEAP8.set(HEAP8);
- HEAP8 = newHEAP8;
- HEAP16 = new global.Int16Array(newBuffer);
- HEAP32 = new global.Int32Array(newBuffer);
- HEAPU8 = new global.Uint8Array(newBuffer);
- HEAPU16 = new global.Uint16Array(newBuffer);
- HEAPU32 = new global.Uint32Array(newBuffer);
- HEAPF32 = new global.Float32Array(newBuffer);
- HEAPF64 = new global.Float64Array(newBuffer);
- buffer = newBuffer;
- }
- }
- return oldPages;
- }
-
- function __wasm_current_memory() {
- return buffer.byteLength / 65536 | 0;
+ function legalstub$7() {
+ return +(+Math_fround($7()));
}
+ var FUNCTION_TABLE = [];
return {
type_i32: $1,
type_i64: $2,
@@ -50285,7 +50203,7 @@ function asmFunc(global, env, buffer) {
type_f64: $4,
type_i32_value: $5,
type_i64_value: $6,
- type_f32_value: $7,
+ type_f32_value: legalstub$7,
type_f64_value: $8,
empty: $9,
empty_value: $10,
diff --git a/test/wasm2js/br_table_to_loop.2asm.js b/test/wasm2js/br_table_to_loop.2asm.js
index 4a5b5908e..b4883e026 100644
--- a/test/wasm2js/br_table_to_loop.2asm.js
+++ b/test/wasm2js/br_table_to_loop.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0() {
block : {
loop : do {
diff --git a/test/wasm2js/break-drop.2asm.js b/test/wasm2js/break-drop.2asm.js
index 2a13c2b7b..1bac6f453 100644
--- a/test/wasm2js/break-drop.2asm.js
+++ b/test/wasm2js/break-drop.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0() {
}
diff --git a/test/wasm2js/call.2asm.js b/test/wasm2js/call.2asm.js
index ad1dcf08f..b4b0d4fa1 100644
--- a/test/wasm2js/call.2asm.js
+++ b/test/wasm2js/call.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 const_i32() {
return 306 | 0;
@@ -344,6 +346,352 @@ function asmFunc(global, env, buffer) {
mutual_runaway1();
}
+ function legalstub$13() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $13() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$14() {
+ return +(+Math_fround($14()));
+ }
+
+ function legalstub$17() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $17() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$18() {
+ return +(+Math_fround($18()));
+ }
+
+ function legalstub$21() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $21() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$22() {
+ return +(+Math_fround($22()));
+ }
+
+ function legalstub$fac($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = fac(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$fac_acc($0, $1, $2, $3) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ $2 = $2 | 0;
+ $3 = $3 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6 = $0;
+ $6$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2;
+ $12$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ i64toi32_i32$1 = $3;
+ 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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = fac_acc($10 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4 | 0;
+ }
+
+ function legalstub$fib($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = fib(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$even($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10 = 0, $3 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3 = $0;
+ $3$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $10 = 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;
+ $10 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return even(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$odd($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10 = 0, $3 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3 = $0;
+ $3$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $10 = 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;
+ $10 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return odd(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -445,29 +793,29 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
type_i32: $12,
- type_i64: $13,
- type_f32: $14,
+ type_i64: legalstub$13,
+ type_f32: legalstub$14,
type_f64: $15,
type_first_i32: $16,
- type_first_i64: $17,
- type_first_f32: $18,
+ type_first_i64: legalstub$17,
+ type_first_f32: legalstub$18,
type_first_f64: $19,
type_second_i32: $20,
- type_second_i64: $21,
- type_second_f32: $22,
+ type_second_i64: legalstub$21,
+ type_second_f32: legalstub$22,
type_second_f64: $23,
- fac: fac,
- fac_acc: fac_acc,
- fib: fib,
- even: even,
- odd: odd,
+ fac: legalstub$fac,
+ fac_acc: legalstub$fac_acc,
+ fib: legalstub$fib,
+ even: legalstub$even,
+ odd: legalstub$odd,
runaway: runaway,
mutual_runaway: mutual_runaway1
};
}
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 type_i32 = retasmFunc.type_i32;
export const type_i64 = retasmFunc.type_i64;
export const type_f32 = retasmFunc.type_f32;
diff --git a/test/wasm2js/call_indirect.2asm.js b/test/wasm2js/call_indirect.2asm.js
index 68158ddd8..070ae836a 100644
--- a/test/wasm2js/call_indirect.2asm.js
+++ b/test/wasm2js/call_indirect.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 const_i32() {
return 306 | 0;
@@ -427,6 +429,310 @@ function asmFunc(global, env, buffer) {
FUNCTION_TABLE[wasm2js_i32$0]();
}
+ function legalstub$17() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $17() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$18() {
+ return +(+Math_fround($18()));
+ }
+
+ function legalstub$20() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $20() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$22() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $22() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$23() {
+ return +(+Math_fround($23()));
+ }
+
+ function legalstub$26() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $26() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$27() {
+ return +(+Math_fround($27()));
+ }
+
+ function legalstub$29($0, $1, $2) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ $2 = $2 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $14 = 0, $15 = 0, $4 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $3 = 0, $3$hi = 0;
+ $4 = $0;
+ i64toi32_i32$0 = 0;
+ $6 = $1;
+ $6$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $2;
+ 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;
+ $14 = 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;
+ $14 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $14;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $29($4 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $3 = i64toi32_i32$2;
+ $3$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $15 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $15 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($15 | 0);
+ i64toi32_i32$2 = $3$hi;
+ return $3 | 0;
+ }
+
+ function legalstub$30($0) {
+ $0 = $0 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $30($0 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1 | 0;
+ }
+
+ function legalstub$fac($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = fac(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$fib($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = fib(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -528,22 +834,22 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [const_i32, const_i64, const_f32, const_f64, id_i32, id_i64, id_f32, id_f64, f32_i32, i32_i64, f64_f32, i64_f64, fac, fib, even, odd, runaway, mutual_runaway1, mutual_runaway2, over_i32_duplicate, over_i64_duplicate, over_f32_duplicate, over_f64_duplicate];
return {
type_i32: $16,
- type_i64: $17,
- type_f32: $18,
+ type_i64: legalstub$17,
+ type_f32: legalstub$18,
type_f64: $19,
- type_index: $20,
+ type_index: legalstub$20,
type_first_i32: $21,
- type_first_i64: $22,
- type_first_f32: $23,
+ type_first_i64: legalstub$22,
+ type_first_f32: legalstub$23,
type_first_f64: $24,
type_second_i32: $25,
- type_second_i64: $26,
- type_second_f32: $27,
+ type_second_i64: legalstub$26,
+ type_second_f32: legalstub$27,
type_second_f64: $28,
- dispatch: $29,
- dispatch_structural: $30,
- fac: fac,
- fib: fib,
+ dispatch: legalstub$29,
+ dispatch_structural: legalstub$30,
+ fac: legalstub$fac,
+ fib: legalstub$fib,
even: even,
odd: odd,
runaway: runaway,
@@ -552,7 +858,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 type_i32 = retasmFunc.type_i32;
export const type_i64 = retasmFunc.type_i64;
export const type_f32 = retasmFunc.type_f32;
diff --git a/test/wasm2js/comments.2asm.js b/test/wasm2js/comments.2asm.js
index abb148113..07d8ef811 100644
--- a/test/wasm2js/comments.2asm.js
+++ b/test/wasm2js/comments.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
var FUNCTION_TABLE = [];
return {
@@ -53,7 +52,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
var FUNCTION_TABLE = [];
return {
diff --git a/test/wasm2js/conversions-modified.2asm.js b/test/wasm2js/conversions-modified.2asm.js
index aa61c7908..5b5605d5a 100644
--- a/test/wasm2js/conversions-modified.2asm.js
+++ b/test/wasm2js/conversions-modified.2asm.js
@@ -1,4 +1,5 @@
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -22,6 +23,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -253,38 +255,459 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$0($0_1) {
+ $0_1 = $0_1 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $0($0_1 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8_1 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$1($0_1) {
+ $0_1 = $0_1 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $1($0_1 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8_1 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0_1;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$3($0_1) {
+ $0_1 = +$0_1;
+ return $3(Math_fround(Math_fround($0_1))) | 0 | 0;
+ }
+
+ function legalstub$4($0_1) {
+ $0_1 = +$0_1;
+ return $4(Math_fround(Math_fround($0_1))) | 0 | 0;
+ }
+
+ function legalstub$7($0_1) {
+ $0_1 = +$0_1;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $7(Math_fround(Math_fround($0_1))) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8_1 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$8($0_1) {
+ $0_1 = +$0_1;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $8(Math_fround(Math_fround($0_1))) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8_1 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$9($0_1) {
+ $0_1 = +$0_1;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $9(+$0_1) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8_1 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$10($0_1) {
+ $0_1 = +$0_1;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $10(+$0_1) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8_1 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$11($0_1) {
+ $0_1 = $0_1 | 0;
+ return +(+Math_fround($11($0_1 | 0)));
+ }
+
+ function legalstub$12($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0_1;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+Math_fround($12(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0)));
+ }
+
+ function legalstub$14($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0_1;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+$14(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0));
+ }
+
+ function legalstub$15($0_1) {
+ $0_1 = $0_1 | 0;
+ return +(+Math_fround($15($0_1 | 0)));
+ }
+
+ function legalstub$16($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0_1;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+Math_fround($16(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0)));
+ }
+
+ function legalstub$18($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0_1;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+$18(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0));
+ }
+
+ function legalstub$19($0_1) {
+ $0_1 = +$0_1;
+ return +(+$19(Math_fround(Math_fround($0_1))));
+ }
+
+ function legalstub$20($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($20(+$0_1)));
+ }
+
+ function legalstub$21($0_1) {
+ $0_1 = $0_1 | 0;
+ return +(+Math_fround($21($0_1 | 0)));
+ }
+
+ function legalstub$22($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0_1;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+$22(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0));
+ }
+
+ function legalstub$23($0_1) {
+ $0_1 = +$0_1;
+ return $23(Math_fround(Math_fround($0_1))) | 0 | 0;
+ }
+
+ function legalstub$24($0_1) {
+ $0_1 = +$0_1;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8_1 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $24(+$0_1) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8_1 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- i64_extend_s_i32: $0,
- i64_extend_u_i32: $1,
- i32_wrap_i64: $2,
- i32_trunc_s_f32: $3,
- i32_trunc_u_f32: $4,
+ i64_extend_s_i32: legalstub$0,
+ i64_extend_u_i32: legalstub$1,
+ i32_wrap_i64: legalstub$2,
+ i32_trunc_s_f32: legalstub$3,
+ i32_trunc_u_f32: legalstub$4,
i32_trunc_s_f64: $5,
i32_trunc_u_f64: $6,
- i64_trunc_s_f32: $7,
- i64_trunc_u_f32: $8,
- i64_trunc_s_f64: $9,
- i64_trunc_u_f64: $10,
- f32_convert_s_i32: $11,
- f32_convert_s_i64: $12,
+ i64_trunc_s_f32: legalstub$7,
+ i64_trunc_u_f32: legalstub$8,
+ i64_trunc_s_f64: legalstub$9,
+ i64_trunc_u_f64: legalstub$10,
+ f32_convert_s_i32: legalstub$11,
+ f32_convert_s_i64: legalstub$12,
f64_convert_s_i32: $13,
- f64_convert_s_i64: $14,
- f32_convert_u_i32: $15,
- f32_convert_u_i64: $16,
+ f64_convert_s_i64: legalstub$14,
+ f32_convert_u_i32: legalstub$15,
+ f32_convert_u_i64: legalstub$16,
f64_convert_u_i32: $17,
- f64_convert_u_i64: $18,
- f64_promote_f32: $19,
- f32_demote_f64: $20,
- f32_reinterpret_i32: $21,
- f64_reinterpret_i64: $22,
- i32_reinterpret_f32: $23,
- i64_reinterpret_f64: $24
+ f64_convert_u_i64: legalstub$18,
+ f64_promote_f32: legalstub$19,
+ f32_demote_f64: legalstub$20,
+ f32_reinterpret_i32: legalstub$21,
+ f64_reinterpret_i64: legalstub$22,
+ i32_reinterpret_f32: legalstub$23,
+ i64_reinterpret_f64: legalstub$24
};
}
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 i64_extend_s_i32 = retasmFunc.i64_extend_s_i32;
export const i64_extend_u_i32 = retasmFunc.i64_extend_u_i32;
export const i32_wrap_i64 = retasmFunc.i32_wrap_i64;
diff --git a/test/wasm2js/empty_table.2asm.js b/test/wasm2js/empty_table.2asm.js
index 5226622d1..a88a82e9e 100644
--- a/test/wasm2js/empty_table.2asm.js
+++ b/test/wasm2js/empty_table.2asm.js
@@ -21,35 +21,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
var FUNCTION_TABLE = [];
- function __wasm_grow_memory(pagesToAdd) {
- pagesToAdd = pagesToAdd | 0;
- var oldPages = __wasm_current_memory() | 0;
- var newPages = oldPages + pagesToAdd | 0;
- if ((oldPages < newPages) && (newPages < 65536)) {
- {
- var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536));
- var newHEAP8 = new global.Int8Array(newBuffer);
- newHEAP8.set(HEAP8);
- HEAP8 = newHEAP8;
- HEAP16 = new global.Int16Array(newBuffer);
- HEAP32 = new global.Int32Array(newBuffer);
- HEAPU8 = new global.Uint8Array(newBuffer);
- HEAPU16 = new global.Uint16Array(newBuffer);
- HEAPU32 = new global.Uint32Array(newBuffer);
- HEAPF32 = new global.Float32Array(newBuffer);
- HEAPF64 = new global.Float64Array(newBuffer);
- buffer = newBuffer;
- }
- }
- return oldPages;
- }
-
- function __wasm_current_memory() {
- return buffer.byteLength / 65536 | 0;
- }
-
return {
};
diff --git a/test/wasm2js/emscripten.2asm.js b/test/wasm2js/emscripten.2asm.js
index 743d50c37..b0509ebb6 100644
--- a/test/wasm2js/emscripten.2asm.js
+++ b/test/wasm2js/emscripten.2asm.js
@@ -25,8 +25,6 @@ function asmFunc(global, env, buffer) {
var infinity = global.Infinity;
var syscall$6 = env.__syscall6;
var syscall$54 = env.__syscall54;
- var global$0 = 5243904;
- var i64toi32_i32$HIGH_BITS = 0;
// EMSCRIPTEN_START_FUNCS;
function main() {
var wasm2js_i32$0 = 0;
diff --git a/test/wasm2js/endianness.2asm.js b/test/wasm2js/endianness.2asm.js
index d5150fc19..d25be1329 100644
--- a/test/wasm2js/endianness.2asm.js
+++ b/test/wasm2js/endianness.2asm.js
@@ -1,4 +1,5 @@
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -22,6 +23,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function i16_store_little(address, value) {
@@ -298,6 +300,440 @@ function asmFunc(global, env, buffer) {
return +(+HEAPF64[__tempMemory__ >> 3]);
}
+ function legalstub$9($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $9(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$10($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $10(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$11($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $11(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$12($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $12(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$13($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $13(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$14($0) {
+ $0 = +$0;
+ return +(+Math_fround($14(Math_fround(Math_fround($0)))));
+ }
+
+ function legalstub$18($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $18(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$19($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $19(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$20($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $20(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$21($0) {
+ $0 = +$0;
+ return +(+Math_fround($21(Math_fround(Math_fround($0)))));
+ }
+
var FUNCTION_TABLE = [];
function __wasm_grow_memory(pagesToAdd) {
pagesToAdd = pagesToAdd | 0;
@@ -330,25 +766,25 @@ function asmFunc(global, env, buffer) {
i32_load16_s: $6,
i32_load16_u: $7,
i32_load: $8,
- i64_load16_s: $9,
- i64_load16_u: $10,
- i64_load32_s: $11,
- i64_load32_u: $12,
- i64_load: $13,
- f32_load: $14,
+ i64_load16_s: legalstub$9,
+ i64_load16_u: legalstub$10,
+ i64_load32_s: legalstub$11,
+ i64_load32_u: legalstub$12,
+ i64_load: legalstub$13,
+ f32_load: legalstub$14,
f64_load: $15,
i32_store16: $16,
i32_store: $17,
- i64_store16: $18,
- i64_store32: $19,
- i64_store: $20,
- f32_store: $21,
+ i64_store16: legalstub$18,
+ i64_store32: legalstub$19,
+ i64_store: legalstub$20,
+ f32_store: legalstub$21,
f64_store: $22
};
}
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 i32_load16_s = retasmFunc.i32_load16_s;
export const i32_load16_u = retasmFunc.i32_load16_u;
export const i32_load = retasmFunc.i32_load;
diff --git a/test/wasm2js/f32.2asm.js b/test/wasm2js/f32.2asm.js
index adc88d36b..96d10e660 100644
--- a/test/wasm2js/f32.2asm.js
+++ b/test/wasm2js/f32.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0(x, y) {
x = Math_fround(x);
y = Math_fround(y);
@@ -99,6 +98,83 @@ function asmFunc(global, env, buffer) {
return Math_fround((HEAP32[0] = (HEAPF32[0] = x, HEAP32[0] | 0) & 2147483647 | 0 | ((HEAPF32[0] = y, HEAP32[0] | 0) & 2147483648 | 0) | 0, HEAPF32[0]));
}
+ function legalstub$0($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($0(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$1($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($1(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($2(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($3(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$4($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($4(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$5($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($5(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$6($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($6(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$7($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($7(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$8($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($8(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$9($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($9(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$10($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($10(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$11($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($11(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$12($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($12(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$13($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($13(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
function __wasm_nearest_f32(var$0) {
var$0 = Math_fround(var$0);
var var$1 = Math_fround(0), var$2 = Math_fround(0), wasm2js_f32$0 = Math_fround(0), wasm2js_f32$1 = Math_fround(0), wasm2js_i32$0 = 0;
@@ -125,20 +201,20 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
- add: $0,
- sub: $1,
- mul: $2,
- div: $3,
- sqrt: $4,
- min: $5,
- max: $6,
- ceil: $7,
- floor: $8,
- trunc: $9,
- nearest: $10,
- abs: $11,
- neg: $12,
- copysign: $13
+ add: legalstub$0,
+ sub: legalstub$1,
+ mul: legalstub$2,
+ div: legalstub$3,
+ sqrt: legalstub$4,
+ min: legalstub$5,
+ max: legalstub$6,
+ ceil: legalstub$7,
+ floor: legalstub$8,
+ trunc: legalstub$9,
+ nearest: legalstub$10,
+ abs: legalstub$11,
+ neg: legalstub$12,
+ copysign: legalstub$13
};
}
diff --git a/test/wasm2js/f32_cmp.2asm.js b/test/wasm2js/f32_cmp.2asm.js
index 23f6d43a1..fc1293caf 100644
--- a/test/wasm2js/f32_cmp.2asm.js
+++ b/test/wasm2js/f32_cmp.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0(x, y) {
x = Math_fround(x);
y = Math_fround(y);
@@ -58,14 +57,50 @@ function asmFunc(global, env, buffer) {
return x >= y | 0;
}
+ function legalstub$0($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return $0(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$1($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return $1(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return $2(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return $3(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$4($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return $4(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$5($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return $5(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- eq: $0,
- ne: $1,
- lt: $2,
- le: $3,
- gt: $4,
- ge: $5
+ eq: legalstub$0,
+ ne: legalstub$1,
+ lt: legalstub$2,
+ le: legalstub$3,
+ gt: legalstub$4,
+ ge: legalstub$5
};
}
diff --git a/test/wasm2js/f64.2asm.js b/test/wasm2js/f64.2asm.js
index ce2f1ed70..6eeeafaf5 100644
--- a/test/wasm2js/f64.2asm.js
+++ b/test/wasm2js/f64.2asm.js
@@ -23,7 +23,6 @@ function asmFunc(global, env, buffer) {
var nan = global.NaN;
var infinity = global.Infinity;
var __tempMemory__ = env.__tempMemory__ | 0;
- var i64toi32_i32$HIGH_BITS = 0;
function $0(x, y) {
x = +x;
y = +y;
diff --git a/test/wasm2js/f64_cmp.2asm.js b/test/wasm2js/f64_cmp.2asm.js
index de56c7393..d43733cd0 100644
--- a/test/wasm2js/f64_cmp.2asm.js
+++ b/test/wasm2js/f64_cmp.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0(x, y) {
x = +x;
y = +y;
diff --git a/test/wasm2js/fac.2asm.js b/test/wasm2js/fac.2asm.js
index e76c5d85d..875a11f04 100644
--- a/test/wasm2js/fac.2asm.js
+++ b/test/wasm2js/fac.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($0_1, $0$hi) {
$0_1 = $0_1 | 0;
@@ -276,6 +278,271 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$5 | 0;
}
+ function legalstub$0($0_1, $1) {
+ $0_1 = $0_1 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $0(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$fac_rec_named($0_1, $1) {
+ $0_1 = $0_1 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = fac_rec_named(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$2($0_1, $1) {
+ $0_1 = $0_1 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1) {
+ $0_1 = $0_1 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$4($0_1, $1) {
+ $0_1 = $0_1 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $4(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -376,16 +643,16 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
- fac_rec: $0,
- fac_rec_named: fac_rec_named,
- fac_iter: $2,
- fac_iter_named: $3,
- fac_opt: $4
+ fac_rec: legalstub$0,
+ fac_rec_named: legalstub$fac_rec_named,
+ fac_iter: legalstub$2,
+ fac_iter_named: legalstub$3,
+ fac_opt: legalstub$4
};
}
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 fac_rec = retasmFunc.fac_rec;
export const fac_rec_named = retasmFunc.fac_rec_named;
export const fac_iter = retasmFunc.fac_iter;
diff --git a/test/wasm2js/float-ops.2asm.js b/test/wasm2js/float-ops.2asm.js
index 01c6739d1..bb69a1acd 100644
--- a/test/wasm2js/float-ops.2asm.js
+++ b/test/wasm2js/float-ops.2asm.js
@@ -1,4 +1,3 @@
-import { __tempMemory__ } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -22,12 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var __tempMemory__ = env.__tempMemory__ | 0;
- var i64toi32_i32$HIGH_BITS = 0;
- function dummy() {
-
- }
-
function $1($0, $1_1) {
$0 = Math_fround($0);
$1_1 = Math_fround($1_1);
@@ -212,50 +205,6 @@ function asmFunc(global, env, buffer) {
return +Math_sqrt($0);
}
- function copysign64($0, $1_1) {
- $0 = +$0;
- $1_1 = +$1_1;
- var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $4_1 = 0, $4$hi = 0, $7_1 = 0, $7$hi = 0, wasm2js_i32$0 = 0, wasm2js_f64$0 = 0.0, wasm2js_i32$1 = 0;
- wasm2js_i32$0 = __tempMemory__;
- wasm2js_f64$0 = $0;
- HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0;
- i64toi32_i32$0 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0;
- i64toi32_i32$2 = HEAP32[__tempMemory__ >> 2] | 0;
- i64toi32_i32$1 = 2147483647;
- i64toi32_i32$3 = 4294967295;
- i64toi32_i32$1 = i64toi32_i32$0 & i64toi32_i32$1 | 0;
- $4_1 = i64toi32_i32$2 & i64toi32_i32$3 | 0;
- $4$hi = i64toi32_i32$1;
- wasm2js_i32$0 = __tempMemory__;
- wasm2js_f64$0 = $1_1;
- HEAPF64[wasm2js_i32$0 >> 3] = wasm2js_f64$0;
- i64toi32_i32$1 = HEAP32[(__tempMemory__ + 4 | 0) >> 2] | 0;
- i64toi32_i32$0 = HEAP32[__tempMemory__ >> 2] | 0;
- i64toi32_i32$2 = 2147483648;
- i64toi32_i32$3 = 0;
- i64toi32_i32$2 = i64toi32_i32$1 & i64toi32_i32$2 | 0;
- $7_1 = i64toi32_i32$0 & i64toi32_i32$3 | 0;
- $7$hi = i64toi32_i32$2;
- i64toi32_i32$2 = $4$hi;
- i64toi32_i32$1 = $4_1;
- i64toi32_i32$0 = $7$hi;
- i64toi32_i32$3 = $7_1;
- i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0;
- wasm2js_i32$0 = __tempMemory__;
- wasm2js_i32$1 = i64toi32_i32$1 | i64toi32_i32$3 | 0;
- HEAP32[wasm2js_i32$0 >> 2] = wasm2js_i32$1;
- wasm2js_i32$0 = __tempMemory__;
- wasm2js_i32$1 = i64toi32_i32$0;
- HEAP32[(wasm2js_i32$0 + 4 | 0) >> 2] = wasm2js_i32$1;
- return +(+HEAPF64[__tempMemory__ >> 3]);
- }
-
- function copysign32($0, $1_1) {
- $0 = Math_fround($0);
- $1_1 = Math_fround($1_1);
- return Math_fround((HEAP32[0] = (HEAPF32[0] = $0, HEAP32[0] | 0) & 2147483647 | 0 | ((HEAPF32[0] = $1_1, HEAP32[0] | 0) & 2147483648 | 0) | 0, HEAPF32[0]));
- }
-
function $35($0) {
$0 = $0 | 0;
return Math_fround(Math_fround($0 | 0));
@@ -408,55 +357,310 @@ function asmFunc(global, env, buffer) {
return (~~i64toi32_i32$0 >>> 0 | 0) == (0 | 0) & (i64toi32_i32$1 | 0) == (0 | 0) | 0 | 0;
}
+ function legalstub$1($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return +(+Math_fround($1(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$2($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return +(+Math_fround($2(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$3($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return +(+Math_fround($3(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$4($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return +(+Math_fround($4(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$9($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return $9(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$10($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return $10(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$11($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return $11(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$12($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return $12(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$13($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return $13(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$14($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return $14(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1))) | 0 | 0;
+ }
+
+ function legalstub$21($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return +(+Math_fround($21(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$22($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return +(+Math_fround($22(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$25($0) {
+ $0 = +$0;
+ return +(+$25(Math_fround(Math_fround($0))));
+ }
+
+ function legalstub$26($0) {
+ $0 = +$0;
+ return +(+Math_fround($26(+$0)));
+ }
+
+ function legalstub$27($0) {
+ $0 = +$0;
+ return +(+Math_fround($27(Math_fround(Math_fround($0)))));
+ }
+
+ function legalstub$28($0) {
+ $0 = +$0;
+ return +(+Math_fround($28(Math_fround(Math_fround($0)))));
+ }
+
+ function legalstub$31($0) {
+ $0 = +$0;
+ return +(+Math_fround($31(Math_fround(Math_fround($0)))));
+ }
+
+ function legalstub$35($0) {
+ $0 = $0 | 0;
+ return +(+Math_fround($35($0 | 0)));
+ }
+
+ function legalstub$37($0) {
+ $0 = $0 | 0;
+ return +(+Math_fround($37($0 | 0)));
+ }
+
+ function legalstub$39($0) {
+ $0 = +$0;
+ return $39(Math_fround(Math_fround($0))) | 0 | 0;
+ }
+
+ function legalstub$41($0) {
+ $0 = +$0;
+ return $41(Math_fround(Math_fround($0))) | 0 | 0;
+ }
+
+ function legalstub$43($0, $1_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+Math_fround($43(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0)));
+ }
+
+ function legalstub$44($0, $1_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+$44(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0));
+ }
+
+ function legalstub$45($0, $1_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+Math_fround($45(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0)));
+ }
+
+ function legalstub$46($0, $1_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+$46(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0));
+ }
+
+ function legalstub$47($0) {
+ $0 = +$0;
+ return $47(Math_fround(Math_fround($0))) | 0 | 0;
+ }
+
+ function legalstub$49($0) {
+ $0 = +$0;
+ return $49(Math_fround(Math_fround($0))) | 0 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- f32_add: $1,
- f32_sub: $2,
- f32_mul: $3,
- f32_div: $4,
+ f32_add: legalstub$1,
+ f32_sub: legalstub$2,
+ f32_mul: legalstub$3,
+ f32_div: legalstub$4,
f64_add: $5,
f64_sub: $6,
f64_mul: $7,
f64_div: $8,
- f32_eq: $9,
- f32_ne: $10,
- f32_ge: $11,
- f32_gt: $12,
- f32_le: $13,
- f32_lt: $14,
+ f32_eq: legalstub$9,
+ f32_ne: legalstub$10,
+ f32_ge: legalstub$11,
+ f32_gt: legalstub$12,
+ f32_le: legalstub$13,
+ f32_lt: legalstub$14,
f64_eq: $15,
f64_ne: $16,
f64_ge: $17,
f64_gt: $18,
f64_le: $19,
f64_lt: $20,
- f32_min: $21,
- f32_max: $22,
+ f32_min: legalstub$21,
+ f32_max: legalstub$22,
f64_min: $23,
f64_max: $24,
- f64_promote: $25,
- f32_demote: $26,
- f32_floor: $27,
- f32_ceil: $28,
+ f64_promote: legalstub$25,
+ f32_demote: legalstub$26,
+ f32_floor: legalstub$27,
+ f32_ceil: legalstub$28,
f64_floor: $29,
f64_ceil: $30,
- f32_sqrt: $31,
+ f32_sqrt: legalstub$31,
f64_sqrt: $32,
- i32_to_f32: $35,
+ i32_to_f32: legalstub$35,
i32_to_f64: $36,
- u32_to_f32: $37,
+ u32_to_f32: legalstub$37,
u32_to_f64: $38,
- f32_to_i32: $39,
+ f32_to_i32: legalstub$39,
f64_to_i32: $40,
- f32_to_u32: $41,
+ f32_to_u32: legalstub$41,
f64_to_u32: $42,
- i64_to_f32: $43,
- i64_to_f64: $44,
- u64_to_f32: $45,
- u64_to_f64: $46,
- f32_to_i64: $47,
+ i64_to_f32: legalstub$43,
+ i64_to_f64: legalstub$44,
+ u64_to_f32: legalstub$45,
+ u64_to_f64: legalstub$46,
+ f32_to_i64: legalstub$47,
f64_to_i64: $48,
- f32_to_u64: $49,
+ f32_to_u64: legalstub$49,
f64_to_u64: $50
};
}
diff --git a/test/wasm2js/float_literals-modified.2asm.js b/test/wasm2js/float_literals-modified.2asm.js
index 05e9053d2..9dc248093 100644
--- a/test/wasm2js/float_literals-modified.2asm.js
+++ b/test/wasm2js/float_literals-modified.2asm.js
@@ -1,4 +1,5 @@
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -22,6 +23,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0() {
@@ -474,6 +476,786 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$30() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $30() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$31() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $31() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$32() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $32() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$33() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $33() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$34() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $34() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$35() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $35() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$36() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $36() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$37() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $37() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$38() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $38() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$39() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $39() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$40() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $40() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$41() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $41() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$42() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $42() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$43() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $43() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$44() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $44() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$45() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $45() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$46() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $46() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$47() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $47() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$48() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $48() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$49() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $49() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$50() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $50() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$51() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $51() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$52() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $52() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$53() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $53() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$54() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $54() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$55() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $55() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$56() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $56() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$57() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $57() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$58() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $58() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$59() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $59() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
f32_nan: $0,
@@ -506,41 +1288,41 @@ function asmFunc(global, env, buffer) {
f32_dec_max_subnormal: $27,
f32_dec_max_finite: $28,
f32_dec_trailing_dot: $29,
- f64_nan: $30,
- f64_positive_nan: $31,
- f64_negative_nan: $32,
- f64_plain_nan: $33,
- f64_informally_known_as_plain_snan: $34,
- f64_all_ones_nan: $35,
- f64_misc_nan: $36,
- f64_misc_positive_nan: $37,
- f64_misc_negative_nan: $38,
- f64_infinity: $39,
- f64_positive_infinity: $40,
- f64_negative_infinity: $41,
- f64_zero: $42,
- f64_positive_zero: $43,
- f64_negative_zero: $44,
- f64_misc: $45,
- f64_min_positive: $46,
- f64_min_normal: $47,
- f64_max_subnormal: $48,
- f64_max_finite: $49,
- f64_trailing_dot: $50,
- f64_dec_zero: $51,
- f64_dec_positive_zero: $52,
- f64_dec_negative_zero: $53,
- f64_dec_misc: $54,
- f64_dec_min_positive: $55,
- f64_dec_min_normal: $56,
- f64_dec_max_subnormal: $57,
- f64_dec_max_finite: $58,
- f64_dec_trailing_dot: $59
+ f64_nan: legalstub$30,
+ f64_positive_nan: legalstub$31,
+ f64_negative_nan: legalstub$32,
+ f64_plain_nan: legalstub$33,
+ f64_informally_known_as_plain_snan: legalstub$34,
+ f64_all_ones_nan: legalstub$35,
+ f64_misc_nan: legalstub$36,
+ f64_misc_positive_nan: legalstub$37,
+ f64_misc_negative_nan: legalstub$38,
+ f64_infinity: legalstub$39,
+ f64_positive_infinity: legalstub$40,
+ f64_negative_infinity: legalstub$41,
+ f64_zero: legalstub$42,
+ f64_positive_zero: legalstub$43,
+ f64_negative_zero: legalstub$44,
+ f64_misc: legalstub$45,
+ f64_min_positive: legalstub$46,
+ f64_min_normal: legalstub$47,
+ f64_max_subnormal: legalstub$48,
+ f64_max_finite: legalstub$49,
+ f64_trailing_dot: legalstub$50,
+ f64_dec_zero: legalstub$51,
+ f64_dec_positive_zero: legalstub$52,
+ f64_dec_negative_zero: legalstub$53,
+ f64_dec_misc: legalstub$54,
+ f64_dec_min_positive: legalstub$55,
+ f64_dec_min_normal: legalstub$56,
+ f64_dec_max_subnormal: legalstub$57,
+ f64_dec_max_finite: legalstub$58,
+ f64_dec_trailing_dot: legalstub$59
};
}
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 f32_nan = retasmFunc.f32_nan;
export const f32_positive_nan = retasmFunc.f32_positive_nan;
export const f32_negative_nan = retasmFunc.f32_negative_nan;
diff --git a/test/wasm2js/float_misc.2asm.js b/test/wasm2js/float_misc.2asm.js
index 8f41bb2f6..ad9c34c39 100644
--- a/test/wasm2js/float_misc.2asm.js
+++ b/test/wasm2js/float_misc.2asm.js
@@ -23,7 +23,6 @@ function asmFunc(global, env, buffer) {
var nan = global.NaN;
var infinity = global.Infinity;
var __tempMemory__ = env.__tempMemory__ | 0;
- var i64toi32_i32$HIGH_BITS = 0;
function $0(x, y) {
x = Math_fround(x);
y = Math_fround(y);
@@ -210,6 +209,83 @@ function asmFunc(global, env, buffer) {
return +Math_max(x, y);
}
+ function legalstub$0($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($0(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$1($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($1(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($2(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($3(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$4($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($4(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$5($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($5(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$6($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($6(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$7($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($7(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$8($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($8(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$9($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($9(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$10($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($10(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$11($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($11(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$12($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($12(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
+ function legalstub$13($0_1, $1_1) {
+ $0_1 = +$0_1;
+ $1_1 = +$1_1;
+ return +(+Math_fround($13(Math_fround(Math_fround($0_1)), Math_fround(Math_fround($1_1)))));
+ }
+
function __wasm_nearest_f32(var$0) {
var$0 = Math_fround(var$0);
var var$1 = Math_fround(0), var$2 = Math_fround(0), wasm2js_f32$0 = Math_fround(0), wasm2js_f32$1 = Math_fround(0), wasm2js_i32$0 = 0;
@@ -260,20 +336,20 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
- f32_add: $0,
- f32_sub: $1,
- f32_mul: $2,
- f32_div: $3,
- f32_sqrt: $4,
- f32_abs: $5,
- f32_neg: $6,
- f32_copysign: $7,
- f32_ceil: $8,
- f32_floor: $9,
- f32_trunc: $10,
- f32_nearest: $11,
- f32_min: $12,
- f32_max: $13,
+ f32_add: legalstub$0,
+ f32_sub: legalstub$1,
+ f32_mul: legalstub$2,
+ f32_div: legalstub$3,
+ f32_sqrt: legalstub$4,
+ f32_abs: legalstub$5,
+ f32_neg: legalstub$6,
+ f32_copysign: legalstub$7,
+ f32_ceil: legalstub$8,
+ f32_floor: legalstub$9,
+ f32_trunc: legalstub$10,
+ f32_nearest: legalstub$11,
+ f32_min: legalstub$12,
+ f32_max: legalstub$13,
f64_add: $14,
f64_sub: $15,
f64_mul: $16,
diff --git a/test/wasm2js/forward.2asm.js b/test/wasm2js/forward.2asm.js
index ae609f5fe..5c91c545d 100644
--- a/test/wasm2js/forward.2asm.js
+++ b/test/wasm2js/forward.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function even(n) {
n = n | 0;
var $6 = 0;
diff --git a/test/wasm2js/func-ptr-offset.2asm.js b/test/wasm2js/func-ptr-offset.2asm.js
index 4fdbab2ee..3e1865dae 100644
--- a/test/wasm2js/func-ptr-offset.2asm.js
+++ b/test/wasm2js/func-ptr-offset.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function t1() {
return 1 | 0;
}
diff --git a/test/wasm2js/func.2asm.js b/test/wasm2js/func.2asm.js
index a0b4eb39a..81a4682bc 100644
--- a/test/wasm2js/func.2asm.js
+++ b/test/wasm2js/func.2asm.js
@@ -1,3 +1,4 @@
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -21,113 +22,20 @@ 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 dummy() {
}
- function $1() {
-
- }
-
function $2() {
}
- function f() {
-
- }
-
function h() {
}
- function $5() {
-
- }
-
- function $6() {
-
- }
-
- function $7() {
-
- }
-
- function $8() {
-
- }
-
- function $9() {
-
- }
-
- function $10() {
-
- }
-
- function $11() {
-
- }
-
- function $12() {
-
- }
-
- function $13() {
-
- }
-
- function $14($0) {
- $0 = $0 | 0;
- }
-
- function $15(x) {
- x = x | 0;
- }
-
- function $16($0, $1_1, $2_1, $2$hi) {
- $0 = $0 | 0;
- $1_1 = +$1_1;
- $2_1 = $2_1 | 0;
- $2$hi = $2$hi | 0;
- }
-
- function $17($0, $1_1) {
- $0 = $0 | 0;
- $1_1 = +$1_1;
- }
-
- function $18($0, $1_1, x, x$hi, $3, $4) {
- $0 = $0 | 0;
- $1_1 = Math_fround($1_1);
- x = x | 0;
- x$hi = x$hi | 0;
- $3 = $3 | 0;
- $4 = +$4;
- }
-
- function $19() {
- return abort() | 0;
- }
-
- function $20() {
-
- }
-
- function complex($0, $1_1, x, x$hi, $3) {
- $0 = $0 | 0;
- $1_1 = Math_fround($1_1);
- x = x | 0;
- x$hi = x$hi | 0;
- $3 = $3 | 0;
- return abort() | 0;
- }
-
- function complex_sig() {
- abort();
- }
-
function $23() {
var $0 = 0;
return $0 | 0;
@@ -151,43 +59,43 @@ function asmFunc(global, env, buffer) {
}
function $27() {
- var $1_1 = 0;
- return $1_1 | 0;
+ var $1 = 0;
+ return $1 | 0;
}
function $28() {
- var i64toi32_i32$0 = 0, $1$hi = 0, $1_1 = 0;
+ var i64toi32_i32$0 = 0, $1$hi = 0, $1 = 0;
i64toi32_i32$0 = $1$hi;
i64toi32_i32$HIGH_BITS = i64toi32_i32$0;
- return $1_1 | 0;
+ return $1 | 0;
}
function $29() {
- var $1_1 = Math_fround(0);
- return Math_fround($1_1);
+ var $1 = Math_fround(0);
+ return Math_fround($1);
}
function $30() {
- var $1_1 = 0.0;
- return +$1_1;
+ var $1 = 0.0;
+ return +$1;
}
function $31() {
- var i64toi32_i32$0 = 0, $4 = 0.0, $0 = Math_fround(0), x = 0, $2$hi = 0, $2_1 = 0, $3 = 0, $5_1 = 0;
+ var i64toi32_i32$0 = 0, $4 = 0.0, $0 = Math_fround(0), x = 0, $2$hi = 0, $2_1 = 0, $3 = 0, $5 = 0;
i64toi32_i32$0 = $2$hi;
return +$4;
}
- function $32($0, $1_1) {
+ function $32($0, $1) {
$0 = $0 | 0;
- $1_1 = $1_1 | 0;
+ $1 = $1 | 0;
return $0 | 0;
}
- function $33($0, $0$hi, $1_1, $1$hi) {
+ function $33($0, $0$hi, $1, $1$hi) {
$0 = $0 | 0;
$0$hi = $0$hi | 0;
- $1_1 = $1_1 | 0;
+ $1 = $1 | 0;
$1$hi = $1$hi | 0;
var i64toi32_i32$0 = 0;
i64toi32_i32$0 = $0$hi;
@@ -195,55 +103,55 @@ function asmFunc(global, env, buffer) {
return $0 | 0;
}
- function $34($0, $1_1) {
+ function $34($0, $1) {
$0 = Math_fround($0);
- $1_1 = Math_fround($1_1);
+ $1 = Math_fround($1);
return Math_fround($0);
}
- function $35($0, $1_1) {
+ function $35($0, $1) {
$0 = +$0;
- $1_1 = +$1_1;
+ $1 = +$1;
return +$0;
}
- function $36($0, $1_1) {
+ function $36($0, $1) {
$0 = $0 | 0;
- $1_1 = $1_1 | 0;
- return $1_1 | 0;
+ $1 = $1 | 0;
+ return $1 | 0;
}
- function $37($0, $0$hi, $1_1, $1$hi) {
+ function $37($0, $0$hi, $1, $1$hi) {
$0 = $0 | 0;
$0$hi = $0$hi | 0;
- $1_1 = $1_1 | 0;
+ $1 = $1 | 0;
$1$hi = $1$hi | 0;
var i64toi32_i32$0 = 0;
i64toi32_i32$0 = $1$hi;
i64toi32_i32$HIGH_BITS = i64toi32_i32$0;
- return $1_1 | 0;
+ return $1 | 0;
}
- function $38($0, $1_1) {
+ function $38($0, $1) {
$0 = Math_fround($0);
- $1_1 = Math_fround($1_1);
- return Math_fround($1_1);
+ $1 = Math_fround($1);
+ return Math_fround($1);
}
- function $39($0, $1_1) {
+ function $39($0, $1) {
$0 = +$0;
- $1_1 = +$1_1;
- return +$1_1;
+ $1 = +$1;
+ return +$1;
}
- function $40($0, $1_1, x, x$hi, $3, $4, $5_1) {
+ function $40($0, $1, x, x$hi, $3, $4, $5) {
$0 = Math_fround($0);
- $1_1 = $1_1 | 0;
+ $1 = $1 | 0;
x = x | 0;
x$hi = x$hi | 0;
$3 = $3 | 0;
$4 = +$4;
- $5_1 = $5_1 | 0;
+ $5 = $5 | 0;
var i64toi32_i32$0 = 0;
i64toi32_i32$0 = x$hi;
return +$4;
@@ -454,50 +362,36 @@ function asmFunc(global, env, buffer) {
}
- function complex_sig_1($0, $1_1, $1$hi, $2_1, $3, $3$hi, $4, $5_1, $5$hi, $6_1, $7_1) {
+ function complex_sig_1($0, $1, $1$hi, $2_1, $3, $3$hi, $4, $5, $5$hi, $6, $7) {
$0 = +$0;
- $1_1 = $1_1 | 0;
+ $1 = $1 | 0;
$1$hi = $1$hi | 0;
$2_1 = +$2_1;
$3 = $3 | 0;
$3$hi = $3$hi | 0;
$4 = +$4;
- $5_1 = $5_1 | 0;
+ $5 = $5 | 0;
$5$hi = $5$hi | 0;
- $6_1 = Math_fround($6_1);
- $7_1 = $7_1 | 0;
+ $6 = Math_fround($6);
+ $7 = $7 | 0;
}
function empty_sig_2() {
}
- function complex_sig_2($0, $1_1, $1$hi, $2_1, $3, $3$hi, $4, $5_1, $5$hi, $6_1, $7_1) {
- $0 = +$0;
- $1_1 = $1_1 | 0;
- $1$hi = $1$hi | 0;
- $2_1 = +$2_1;
- $3 = $3 | 0;
- $3$hi = $3$hi | 0;
- $4 = +$4;
- $5_1 = $5_1 | 0;
- $5$hi = $5$hi | 0;
- $6_1 = Math_fround($6_1);
- $7_1 = $7_1 | 0;
- }
-
- function complex_sig_3($0, $1_1, $1$hi, $2_1, $3, $3$hi, $4, $5_1, $5$hi, $6_1, $7_1) {
+ function complex_sig_3($0, $1, $1$hi, $2_1, $3, $3$hi, $4, $5, $5$hi, $6, $7) {
$0 = +$0;
- $1_1 = $1_1 | 0;
+ $1 = $1 | 0;
$1$hi = $1$hi | 0;
$2_1 = +$2_1;
$3 = $3 | 0;
$3$hi = $3$hi | 0;
$4 = +$4;
- $5_1 = $5_1 | 0;
+ $5 = $5 | 0;
$5$hi = $5$hi | 0;
- $6_1 = Math_fround($6_1);
- $7_1 = $7_1 | 0;
+ $6 = Math_fround($6);
+ $7 = $7 | 0;
}
function $76() {
@@ -583,46 +477,449 @@ function asmFunc(global, env, buffer) {
FUNCTION_TABLE[wasm2js_i32$0](+wasm2js_f64$0, wasm2js_i32$1 | 0, wasm2js_i32$2 | 0, +wasm2js_f64$1, wasm2js_i32$3 | 0, wasm2js_i32$4 | 0, +wasm2js_f64$2, wasm2js_i32$5 | 0, wasm2js_i32$6 | 0, Math_fround(wasm2js_f32$0), wasm2js_i32$7 | 0);
}
+ function legalstub$24() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $24() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$25() {
+ return +(+Math_fround($25()));
+ }
+
+ function legalstub$28() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $28() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$29() {
+ return +(+Math_fround($29()));
+ }
+
+ function legalstub$33($0, $1, $2_1, $3) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ $2_1 = $2_1 | 0;
+ $3 = $3 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21 = 0, $22 = 0, $23_1 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12 = 0, $12$hi = 0, $15$hi = 0, $16 = 0, $16$hi = 0, $4 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6 = $0;
+ $6$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $21 = 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;
+ $21 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12 = $2_1;
+ $12$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ i64toi32_i32$1 = $3;
+ 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;
+ $22 = 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;
+ $22 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $33($10 | 0, i64toi32_i32$1 | 0, $16 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4 | 0;
+ }
+
+ function legalstub$34($0, $1) {
+ $0 = +$0;
+ $1 = +$1;
+ return +(+Math_fround($34(Math_fround(Math_fround($0)), Math_fround(Math_fround($1)))));
+ }
+
+ function legalstub$37($0, $1, $2_1, $3) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ $2_1 = $2_1 | 0;
+ $3 = $3 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21 = 0, $22 = 0, $23_1 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12 = 0, $12$hi = 0, $15$hi = 0, $16 = 0, $16$hi = 0, $4 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6 = $0;
+ $6$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $21 = 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;
+ $21 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12 = $2_1;
+ $12$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ i64toi32_i32$1 = $3;
+ 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;
+ $22 = 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;
+ $22 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $37($10 | 0, i64toi32_i32$1 | 0, $16 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4 | 0;
+ }
+
+ function legalstub$38($0, $1) {
+ $0 = +$0;
+ $1 = +$1;
+ return +(+Math_fround($38(Math_fround(Math_fround($0)), Math_fround(Math_fround($1)))));
+ }
+
+ function legalstub$40($0, $1, $2_1, $3, $4, $5, $6) {
+ $0 = +$0;
+ $1 = $1 | 0;
+ $2_1 = $2_1 | 0;
+ $3 = $3 | 0;
+ $4 = $4 | 0;
+ $5 = +$5;
+ $6 = $6 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $17 = 0, $8 = Math_fround(0), $9 = 0, $11 = 0, $11$hi = 0, $14$hi = 0;
+ $8 = Math_fround($0);
+ $9 = $1;
+ i64toi32_i32$0 = 0;
+ $11 = $2_1;
+ $11$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $3;
+ 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;
+ $17 = 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;
+ $17 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $11$hi;
+ i64toi32_i32$0 = $11;
+ i64toi32_i32$2 = $14$hi;
+ i64toi32_i32$3 = $17;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+$40(Math_fround($8), $9 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, $4 | 0, +$5, $6 | 0));
+ }
+
+ function legalstub$44() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $44() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$45() {
+ return +(+Math_fround($45()));
+ }
+
+ function legalstub$51() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $51() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$52() {
+ return +(+Math_fround($52()));
+ }
+
+ function legalstub$57() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $57() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$58() {
+ return +(+Math_fround($58()));
+ }
+
+ function legalstub$68() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7 = 0, $0 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $68() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0 | 0;
+ }
+
+ function legalstub$69() {
+ return +(+Math_fround($69()));
+ }
+
var FUNCTION_TABLE = [complex_sig_3, empty_sig_2, complex_sig_1, complex_sig_3, empty_sig_1];
return {
f: $2,
g: h,
local_first_i32: $23,
- local_first_i64: $24,
- local_first_f32: $25,
+ local_first_i64: legalstub$24,
+ local_first_f32: legalstub$25,
local_first_f64: $26,
local_second_i32: $27,
- local_second_i64: $28,
- local_second_f32: $29,
+ local_second_i64: legalstub$28,
+ local_second_f32: legalstub$29,
local_second_f64: $30,
local_mixed: $31,
param_first_i32: $32,
- param_first_i64: $33,
- param_first_f32: $34,
+ param_first_i64: legalstub$33,
+ param_first_f32: legalstub$34,
param_first_f64: $35,
param_second_i32: $36,
- param_second_i64: $37,
- param_second_f32: $38,
+ param_second_i64: legalstub$37,
+ param_second_f32: legalstub$38,
param_second_f64: $39,
- param_mixed: $40,
+ param_mixed: legalstub$40,
empty: $41,
value_void: $42,
value_i32: $43,
- value_i64: $44,
- value_f32: $45,
+ value_i64: legalstub$44,
+ value_f32: legalstub$45,
value_f64: $46,
value_block_void: $47,
value_block_i32: $48,
return_empty: $49,
return_i32: $50,
- return_i64: $51,
- return_f32: $52,
+ return_i64: legalstub$51,
+ return_f32: legalstub$52,
return_f64: $53,
return_block_i32: $54,
break_empty: $55,
break_i32: $56,
- break_i64: $57,
- break_f32: $58,
+ break_i64: legalstub$57,
+ break_f32: legalstub$58,
break_f64: $59,
break_block_i32: $60,
break_br_if_empty: $61,
@@ -632,8 +929,8 @@ function asmFunc(global, env, buffer) {
break_br_table_nested_empty: $65,
break_br_table_nested_num: $66,
init_local_i32: $67,
- init_local_i64: $68,
- init_local_f32: $69,
+ init_local_i64: legalstub$68,
+ init_local_f32: legalstub$69,
init_local_f64: $70,
signature_explicit_reused: $76,
signature_implicit_reused: $77,
@@ -643,7 +940,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 f = retasmFunc.f;
export const g = retasmFunc.g;
export const local_first_i32 = retasmFunc.local_first_i32;
diff --git a/test/wasm2js/func_ptrs.2asm.js b/test/wasm2js/func_ptrs.2asm.js
index 1f07975b2..9798a0622 100644
--- a/test/wasm2js/func_ptrs.2asm.js
+++ b/test/wasm2js/func_ptrs.2asm.js
@@ -23,15 +23,6 @@ function asmFunc(global, env, buffer) {
var nan = global.NaN;
var infinity = global.Infinity;
var print = env.print;
- var i64toi32_i32$HIGH_BITS = 0;
- function $1() {
-
- }
-
- function $2() {
-
- }
-
function $3() {
return 13 | 0;
}
@@ -89,7 +80,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function t1() {
return 1 | 0;
}
@@ -160,7 +150,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function t1() {
return 1 | 0;
}
diff --git a/test/wasm2js/get-set-local.2asm.js b/test/wasm2js/get-set-local.2asm.js
index 7ab39e474..c3f1a9986 100644
--- a/test/wasm2js/get-set-local.2asm.js
+++ b/test/wasm2js/get-set-local.2asm.js
@@ -21,11 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
- function dummy() {
-
- }
-
function $1($0, r, r$hi) {
$0 = $0 | 0;
r = r | 0;
@@ -39,9 +34,43 @@ function asmFunc(global, env, buffer) {
return ($0 | 0) == (r | 0) & (i64toi32_i32$0 | 0) == (r$hi | 0) | 0 | 0;
}
+ function legalstub$1($0, $1_1, $2) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2 = $2 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $12 = 0, $3 = 0, $5 = 0, $5$hi = 0, $8$hi = 0;
+ $3 = $0;
+ i64toi32_i32$0 = 0;
+ $5 = $1_1;
+ $5$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $2;
+ 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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return $1($3 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- check_extend_ui32: $1
+ check_extend_ui32: legalstub$1
};
}
diff --git a/test/wasm2js/get_local.2asm.js b/test/wasm2js/get_local.2asm.js
index fe57868fe..29039b679 100644
--- a/test/wasm2js/get_local.2asm.js
+++ b/test/wasm2js/get_local.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() {
var $0_1 = 0;
@@ -102,23 +104,183 @@ function asmFunc(global, env, buffer) {
return +($10 + (+$1_1 + ($2_1 + (+($3_1 >>> 0) + (+($4_1 | 0) + (+Math_fround(5.5) + ($21 + (+(i64toi32_i32$1 >>> 0) + 4294967296.0 * +(i64toi32_i32$0 >>> 0) + 8.0))))))));
}
+ function legalstub$1() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $1() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$2() {
+ return +(+Math_fround($2()));
+ }
+
+ function legalstub$5($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $5(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$6($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($6(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$8($0_1, $1_1, $2_1, $3_1, $4_1, $5_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = +$2_1;
+ $3_1 = +$3_1;
+ $4_1 = $4_1 | 0;
+ $5_1 = $5_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $14 = 0, $7_1 = 0, $7$hi = 0, $10$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7_1 = $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;
+ $14 = 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;
+ $14 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $10$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $7$hi;
+ i64toi32_i32$0 = $7_1;
+ i64toi32_i32$2 = $10$hi;
+ i64toi32_i32$3 = $14;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $8(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround(Math_fround($2_1)), +$3_1, $4_1 | 0, $5_1 | 0);
+ }
+
+ function legalstub$9($0_1, $1_1, $2_1, $3_1, $4_1, $5_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = +$2_1;
+ $3_1 = +$3_1;
+ $4_1 = $4_1 | 0;
+ $5_1 = $5_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $14 = 0, $7_1 = 0, $7$hi = 0, $10$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7_1 = $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;
+ $14 = 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;
+ $14 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $10$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $7$hi;
+ i64toi32_i32$0 = $7_1;
+ i64toi32_i32$2 = $10$hi;
+ i64toi32_i32$3 = $14;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+$9(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround(Math_fround($2_1)), +$3_1, $4_1 | 0, $5_1 | 0));
+ }
+
var FUNCTION_TABLE = [];
return {
type_local_i32: $0,
- type_local_i64: $1,
- type_local_f32: $2,
+ type_local_i64: legalstub$1,
+ type_local_f32: legalstub$2,
type_local_f64: $3,
type_param_i32: $4,
- type_param_i64: $5,
- type_param_f32: $6,
+ type_param_i64: legalstub$5,
+ type_param_f32: legalstub$6,
type_param_f64: $7,
- type_mixed: $8,
- read: $9
+ type_mixed: legalstub$8,
+ read: legalstub$9
};
}
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 type_local_i32 = retasmFunc.type_local_i32;
export const type_local_i64 = retasmFunc.type_local_i64;
export const type_local_f32 = retasmFunc.type_local_f32;
diff --git a/test/wasm2js/global_i64.2asm.js b/test/wasm2js/global_i64.2asm.js
index cd7f2573b..1e94245b1 100644
--- a/test/wasm2js/global_i64.2asm.js
+++ b/test/wasm2js/global_i64.2asm.js
@@ -22,10 +22,7 @@ function asmFunc(global, env, buffer) {
var nan = global.NaN;
var infinity = global.Infinity;
var f = 2882400175;
- var g = f;
var f$hi = 305419896;
- var g$hi = f$hi;
- var i64toi32_i32$HIGH_BITS = 0;
function call($0, $0$hi) {
$0 = $0 | 0;
$0$hi = $0$hi | 0;
diff --git a/test/wasm2js/grow-memory-tricky.2asm.js b/test/wasm2js/grow-memory-tricky.2asm.js
index 41de59007..1775db6d4 100644
--- a/test/wasm2js/grow-memory-tricky.2asm.js
+++ b/test/wasm2js/grow-memory-tricky.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0() {
var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0;
wasm2js_i32$0 = 0;
diff --git a/test/wasm2js/grow_memory.2asm.js b/test/wasm2js/grow_memory.2asm.js
index b867d39f6..ffcd34061 100644
--- a/test/wasm2js/grow_memory.2asm.js
+++ b/test/wasm2js/grow_memory.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0(var$0) {
var$0 = var$0 | 0;
return __wasm_grow_memory(var$0 | 0) | 0;
diff --git a/test/wasm2js/hello_world.2asm.js b/test/wasm2js/hello_world.2asm.js
index 38dfc7c88..3d8a4c308 100644
--- a/test/wasm2js/hello_world.2asm.js
+++ b/test/wasm2js/hello_world.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function add(x, y) {
x = x | 0;
y = y | 0;
@@ -34,6 +33,6 @@ function asmFunc(global, env, buffer) {
};
}
-const memasmFunc = new ArrayBuffer(16777216);
+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);
export const add = retasmFunc.add;
diff --git a/test/wasm2js/i32.2asm.js b/test/wasm2js/i32.2asm.js
index dd6dbef81..08080e7c6 100644
--- a/test/wasm2js/i32.2asm.js
+++ b/test/wasm2js/i32.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0(x, y) {
x = x | 0;
y = y | 0;
diff --git a/test/wasm2js/i64-add-sub.2asm.js b/test/wasm2js/i64-add-sub.2asm.js
index d32ca6528..f9590aa75 100644
--- a/test/wasm2js/i64-add-sub.2asm.js
+++ b/test/wasm2js/i64-add-sub.2asm.js
@@ -21,11 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
- function dummy() {
-
- }
-
function $1($0, $0$hi, $1_1, $1$hi, r, r$hi) {
$0 = $0 | 0;
$0$hi = $0$hi | 0;
@@ -71,10 +66,200 @@ function asmFunc(global, env, buffer) {
return (i64toi32_i32$0 | 0) == (i64toi32_i32$3 | 0) & (i64toi32_i32$5 | 0) == (i64toi32_i32$2 | 0) | 0 | 0;
}
+ function legalstub$1($0, $1_1, $2_1, $3, $4, $5) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3 = $3 | 0;
+ $4 = $4 | 0;
+ $5 = $5 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $26 = 0, $27 = 0, $28 = 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, $19 = 0, $19$hi = 0, $22$hi = 0, $23 = 0, $23$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7 = $0;
+ $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;
+ $26 = 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;
+ $26 = 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 = $26;
+ 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;
+ 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;
+ $27 = 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;
+ $27 = 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 = $27;
+ 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 = 0;
+ $19 = $4;
+ $19$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = 0;
+ i64toi32_i32$0 = $5;
+ 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 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ $28 = 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0;
+ $28 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ }
+ }
+ $22$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = $19$hi;
+ i64toi32_i32$1 = $19;
+ i64toi32_i32$0 = $22$hi;
+ i64toi32_i32$3 = $28;
+ i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0;
+ $23 = i64toi32_i32$1 | i64toi32_i32$3 | 0;
+ $23$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$1 = $17$hi;
+ i64toi32_i32$2 = $23$hi;
+ return $1($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$2($0, $1_1, $2_1, $3, $4, $5) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3 = $3 | 0;
+ $4 = $4 | 0;
+ $5 = $5 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $26 = 0, $27 = 0, $28 = 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, $19 = 0, $19$hi = 0, $22$hi = 0, $23 = 0, $23$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7 = $0;
+ $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;
+ $26 = 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;
+ $26 = 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 = $26;
+ 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;
+ 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;
+ $27 = 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;
+ $27 = 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 = $27;
+ 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 = 0;
+ $19 = $4;
+ $19$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = 0;
+ i64toi32_i32$0 = $5;
+ 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 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ $28 = 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0;
+ $28 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ }
+ }
+ $22$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = $19$hi;
+ i64toi32_i32$1 = $19;
+ i64toi32_i32$0 = $22$hi;
+ i64toi32_i32$3 = $28;
+ i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0;
+ $23 = i64toi32_i32$1 | i64toi32_i32$3 | 0;
+ $23$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$1 = $17$hi;
+ i64toi32_i32$2 = $23$hi;
+ return $2($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- check_add_i64: $1,
- check_sub_i64: $2
+ check_add_i64: legalstub$1,
+ check_sub_i64: legalstub$2
};
}
diff --git a/test/wasm2js/i64-ctz.2asm.js b/test/wasm2js/i64-ctz.2asm.js
index ea615315b..91303043c 100644
--- a/test/wasm2js/i64-ctz.2asm.js
+++ b/test/wasm2js/i64-ctz.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 popcnt64($0, $0$hi) {
$0 = $0 | 0;
@@ -44,6 +46,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$0 | 0;
}
+ function legalstub$popcnt64($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = popcnt64(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
+ function legalstub$ctz64($0, $1) {
+ $0 = $0 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = ctz64(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
function __wasm_ctz_i64(var$0, var$0$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -148,12 +256,12 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
- a: popcnt64,
- b: ctz64
+ a: legalstub$popcnt64,
+ b: legalstub$ctz64
};
}
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 a = retasmFunc.a;
export const b = retasmFunc.b;
diff --git a/test/wasm2js/i64-lowering.2asm.js b/test/wasm2js/i64-lowering.2asm.js
index 941381665..e11d8ae42 100644
--- a/test/wasm2js/i64-lowering.2asm.js
+++ b/test/wasm2js/i64-lowering.2asm.js
@@ -21,11 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
- function dummy() {
-
- }
-
function $1($0, $0$hi, $1_1, $1$hi) {
$0 = $0 | 0;
$0$hi = $0$hi | 0;
@@ -234,18 +229,668 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$0 >>> 0 < $1$hi >>> 0 | ((i64toi32_i32$0 | 0) == ($1$hi | 0) & $0 >>> 0 < $1_1 >>> 0 | 0) | 0 | 0;
}
+ function legalstub$1($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $1($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$2($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $2($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$3($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $3($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$4($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $4($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$5($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $5($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$6($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $6($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$7($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $7($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$8($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $8($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$9($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $9($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$10($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $10($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- eq_i64: $1,
- ne_i64: $2,
- ge_s_i64: $3,
- gt_s_i64: $4,
- le_s_i64: $5,
- lt_s_i64: $6,
- ge_u_i64: $7,
- gt_u_i64: $8,
- le_u_i64: $9,
- lt_u_i64: $10
+ eq_i64: legalstub$1,
+ ne_i64: legalstub$2,
+ ge_s_i64: legalstub$3,
+ gt_s_i64: legalstub$4,
+ le_s_i64: legalstub$5,
+ lt_s_i64: legalstub$6,
+ ge_u_i64: legalstub$7,
+ gt_u_i64: legalstub$8,
+ le_u_i64: legalstub$9,
+ lt_u_i64: legalstub$10
};
}
diff --git a/test/wasm2js/i64-rotate.2asm.js b/test/wasm2js/i64-rotate.2asm.js
index b7684673a..4506e8e35 100644
--- a/test/wasm2js/i64-rotate.2asm.js
+++ b/test/wasm2js/i64-rotate.2asm.js
@@ -22,10 +22,6 @@ function asmFunc(global, env, buffer) {
var nan = global.NaN;
var infinity = global.Infinity;
var i64toi32_i32$HIGH_BITS = 0;
- function dummy() {
-
- }
-
function $1($0, $0$hi, $1_1, $1$hi, $2_1, $2$hi) {
$0 = $0 | 0;
$0$hi = $0$hi | 0;
@@ -70,6 +66,196 @@ function asmFunc(global, env, buffer) {
return (i64toi32_i32$2 | 0) == ($2_1 | 0) & (i64toi32_i32$0 | 0) == (i64toi32_i32$1 | 0) | 0 | 0;
}
+ function legalstub$1($0, $1_1, $2_1, $3, $4, $5) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3 = $3 | 0;
+ $4 = $4 | 0;
+ $5 = $5 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $26 = 0, $27 = 0, $28 = 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, $19 = 0, $19$hi = 0, $22$hi = 0, $23 = 0, $23$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7 = $0;
+ $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;
+ $26 = 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;
+ $26 = 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 = $26;
+ 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;
+ 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;
+ $27 = 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;
+ $27 = 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 = $27;
+ 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 = 0;
+ $19 = $4;
+ $19$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = 0;
+ i64toi32_i32$0 = $5;
+ 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 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ $28 = 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0;
+ $28 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ }
+ }
+ $22$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = $19$hi;
+ i64toi32_i32$1 = $19;
+ i64toi32_i32$0 = $22$hi;
+ i64toi32_i32$3 = $28;
+ i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0;
+ $23 = i64toi32_i32$1 | i64toi32_i32$3 | 0;
+ $23$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$1 = $17$hi;
+ i64toi32_i32$2 = $23$hi;
+ return $1($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$2($0, $1_1, $2_1, $3, $4, $5) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3 = $3 | 0;
+ $4 = $4 | 0;
+ $5 = $5 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $26 = 0, $27 = 0, $28 = 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, $19 = 0, $19$hi = 0, $22$hi = 0, $23 = 0, $23$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7 = $0;
+ $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;
+ $26 = 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;
+ $26 = 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 = $26;
+ 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;
+ 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;
+ $27 = 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;
+ $27 = 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 = $27;
+ 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 = 0;
+ $19 = $4;
+ $19$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = 0;
+ i64toi32_i32$0 = $5;
+ 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 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ $28 = 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0;
+ $28 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ }
+ }
+ $22$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = $19$hi;
+ i64toi32_i32$1 = $19;
+ i64toi32_i32$0 = $22$hi;
+ i64toi32_i32$3 = $28;
+ i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0;
+ $23 = i64toi32_i32$1 | i64toi32_i32$3 | 0;
+ $23$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$1 = $17$hi;
+ i64toi32_i32$2 = $23$hi;
+ return $2($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
function __wasm_rotl_i64(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -316,8 +502,8 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
- rotl: $1,
- rotr: $2
+ rotl: legalstub$1,
+ rotr: legalstub$2
};
}
diff --git a/test/wasm2js/i64-select.2asm.js b/test/wasm2js/i64-select.2asm.js
index dc6889683..a88a82e9e 100644
--- a/test/wasm2js/i64-select.2asm.js
+++ b/test/wasm2js/i64-select.2asm.js
@@ -21,39 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
- function p(i) {
- i = i | 0;
- return i | 0;
- }
-
- function $1($0) {
- $0 = $0 | 0;
- var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0;
- return (wasm2js_i32$0 = p(4294967295 | 0) | 0, wasm2js_i32$1 = p(0 | 0) | 0, wasm2js_i32$2 = 1, wasm2js_i32$2 ? wasm2js_i32$0 : wasm2js_i32$1) | 0;
- }
-
- function $2() {
- var i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, i64toi32_i32$2 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0;
- i64toi32_i32$4 = 1;
- i64toi32_i32$3 = (wasm2js_i32$0 = 4294967295, wasm2js_i32$1 = 0, wasm2js_i32$2 = i64toi32_i32$4, wasm2js_i32$2 ? wasm2js_i32$0 : wasm2js_i32$1);
- i64toi32_i32$2 = (wasm2js_i32$0 = 4294967295, wasm2js_i32$1 = 0, wasm2js_i32$2 = i64toi32_i32$4, wasm2js_i32$2 ? wasm2js_i32$0 : wasm2js_i32$1);
- i64toi32_i32$HIGH_BITS = i64toi32_i32$2;
- return i64toi32_i32$3 | 0;
- }
-
- function unreachable_select_i64() {
- return abort() | 0;
- }
-
- function unreachable_select_i64_b() {
- return abort() | 0;
- }
-
- function unreachable_select_i64_c() {
- return abort() | 0;
- }
-
var FUNCTION_TABLE = [];
return {
diff --git a/test/wasm2js/i64-shifts.2asm.js b/test/wasm2js/i64-shifts.2asm.js
index 7d4970860..8392bf3fc 100644
--- a/test/wasm2js/i64-shifts.2asm.js
+++ b/test/wasm2js/i64-shifts.2asm.js
@@ -21,11 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
- function dummy() {
-
- }
-
function $1($0, $0$hi, $1_1, $1$hi, $2_1, $2$hi) {
$0 = $0 | 0;
$0$hi = $0$hi | 0;
@@ -96,10 +91,200 @@ function asmFunc(global, env, buffer) {
return (i64toi32_i32$0 | 0) == (i64toi32_i32$3 | 0) & (i64toi32_i32$1 | 0) == ($2$hi | 0) | 0 | 0;
}
+ function legalstub$1($0, $1_1, $2_1, $3, $4, $5) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3 = $3 | 0;
+ $4 = $4 | 0;
+ $5 = $5 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $26 = 0, $27 = 0, $28 = 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, $19 = 0, $19$hi = 0, $22$hi = 0, $23 = 0, $23$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7 = $0;
+ $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;
+ $26 = 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;
+ $26 = 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 = $26;
+ 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;
+ 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;
+ $27 = 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;
+ $27 = 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 = $27;
+ 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 = 0;
+ $19 = $4;
+ $19$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = 0;
+ i64toi32_i32$0 = $5;
+ 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 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ $28 = 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0;
+ $28 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ }
+ }
+ $22$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = $19$hi;
+ i64toi32_i32$1 = $19;
+ i64toi32_i32$0 = $22$hi;
+ i64toi32_i32$3 = $28;
+ i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0;
+ $23 = i64toi32_i32$1 | i64toi32_i32$3 | 0;
+ $23$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$1 = $17$hi;
+ i64toi32_i32$2 = $23$hi;
+ return $1($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$2($0, $1_1, $2_1, $3, $4, $5) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3 = $3 | 0;
+ $4 = $4 | 0;
+ $5 = $5 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $26 = 0, $27 = 0, $28 = 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, $19 = 0, $19$hi = 0, $22$hi = 0, $23 = 0, $23$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7 = $0;
+ $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;
+ $26 = 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;
+ $26 = 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 = $26;
+ 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;
+ 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;
+ $27 = 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;
+ $27 = 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 = $27;
+ 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 = 0;
+ $19 = $4;
+ $19$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = 0;
+ i64toi32_i32$0 = $5;
+ 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 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ $28 = 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = ((1 << i64toi32_i32$4 | 0) - 1 | 0) & (i64toi32_i32$0 >>> (32 - i64toi32_i32$4 | 0) | 0) | 0 | (i64toi32_i32$1 << i64toi32_i32$4 | 0) | 0;
+ $28 = i64toi32_i32$0 << i64toi32_i32$4 | 0;
+ }
+ }
+ $22$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = $19$hi;
+ i64toi32_i32$1 = $19;
+ i64toi32_i32$0 = $22$hi;
+ i64toi32_i32$3 = $28;
+ i64toi32_i32$0 = i64toi32_i32$2 | i64toi32_i32$0 | 0;
+ $23 = i64toi32_i32$1 | i64toi32_i32$3 | 0;
+ $23$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$1 = $17$hi;
+ i64toi32_i32$2 = $23$hi;
+ return $2($11 | 0, i64toi32_i32$0 | 0, $17 | 0, i64toi32_i32$1 | 0, $23 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- shl_i64: $1,
- shr_i64: $2
+ shl_i64: legalstub$1,
+ shr_i64: legalstub$2
};
}
diff --git a/test/wasm2js/i64.2asm.js b/test/wasm2js/i64.2asm.js
index b20523a0d..bafb0da5b 100644
--- a/test/wasm2js/i64.2asm.js
+++ b/test/wasm2js/i64.2asm.js
@@ -1,4 +1,5 @@
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -22,6 +23,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x, x$hi, y, y$hi) {
@@ -564,6 +566,2137 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$0 >>> 0 > y$hi >>> 0 | ((i64toi32_i32$0 | 0) == (y$hi | 0) & x >>> 0 >= y >>> 0 | 0) | 0 | 0;
}
+ function legalstub$0($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $0($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$1($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $1($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$2($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $2($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $3($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$4($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $4($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$5($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $5($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$6($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $6($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$7($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $7($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$8($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $8($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$9($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $9($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$10($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $10($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$11($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $11($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$12($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $12($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$13($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $13($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$14($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21_1 = 0, $22_1 = 0, $23_1 = 0, $6_1 = 0, $6$hi = 0, $9$hi = 0, $10_1 = 0, $10$hi = 0, $12_1 = 0, $12$hi = 0, $15$hi = 0, $16_1 = 0, $16$hi = 0, $4_1 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6_1 = $0_1;
+ $6$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;
+ $21_1 = 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;
+ $21_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6_1;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12_1 = $2_1;
+ $12$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;
+ $22_1 = 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;
+ $22_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12_1;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $14($10_1 | 0, i64toi32_i32$1 | 0, $16_1 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4_1 = i64toi32_i32$2;
+ $4$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;
+ $23_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23_1 = (((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($23_1 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4_1 | 0;
+ }
+
+ function legalstub$15($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $15(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$16($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $16(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$17($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $17(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$18($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10_1 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0_1;
+ $3$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;
+ $10_1 = 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;
+ $10_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return $18(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$19($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $19($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$20($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $20($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$21($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $21($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$22($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $22($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$23($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $23($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$24($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $24($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$25($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $25($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$26($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $26($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$27($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $27($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$28($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19_1 = 0, $20_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11_1 = 0, $11$hi = 0, $14$hi = 0, $15_1 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0_1;
+ $5$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;
+ $19_1 = 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;
+ $19_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11_1 = $2_1;
+ $11$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;
+ $20_1 = 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;
+ $20_1 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11_1;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20_1;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15_1 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $28($9_1 | 0, i64toi32_i32$1 | 0, $15_1 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -1807,40 +3940,40 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
- add: $0,
- sub: $1,
- mul: $2,
- div_s: $3,
- div_u: $4,
- rem_s: $5,
- rem_u: $6,
- and: $7,
- or: $8,
- xor: $9,
- shl: $10,
- shr_s: $11,
- shr_u: $12,
- rotl: $13,
- rotr: $14,
- clz: $15,
- ctz: $16,
- popcnt: $17,
- eqz: $18,
- eq: $19,
- ne: $20,
- lt_s: $21,
- lt_u: $22,
- le_s: $23,
- le_u: $24,
- gt_s: $25,
- gt_u: $26,
- ge_s: $27,
- ge_u: $28
+ add: legalstub$0,
+ sub: legalstub$1,
+ mul: legalstub$2,
+ div_s: legalstub$3,
+ div_u: legalstub$4,
+ rem_s: legalstub$5,
+ rem_u: legalstub$6,
+ and: legalstub$7,
+ or: legalstub$8,
+ xor: legalstub$9,
+ shl: legalstub$10,
+ shr_s: legalstub$11,
+ shr_u: legalstub$12,
+ rotl: legalstub$13,
+ rotr: legalstub$14,
+ clz: legalstub$15,
+ ctz: legalstub$16,
+ popcnt: legalstub$17,
+ eqz: legalstub$18,
+ eq: legalstub$19,
+ ne: legalstub$20,
+ lt_s: legalstub$21,
+ lt_u: legalstub$22,
+ le_s: legalstub$23,
+ le_u: legalstub$24,
+ gt_s: legalstub$25,
+ gt_u: legalstub$26,
+ ge_s: legalstub$27,
+ ge_u: legalstub$28
};
}
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 add = retasmFunc.add;
export const sub = retasmFunc.sub;
export const mul = retasmFunc.mul;
diff --git a/test/wasm2js/if_unreachable.2asm.js b/test/wasm2js/if_unreachable.2asm.js
index f2921d3f5..a88a82e9e 100644
--- a/test/wasm2js/if_unreachable.2asm.js
+++ b/test/wasm2js/if_unreachable.2asm.js
@@ -21,27 +21,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
- function $0($0_1, $1, $2, $3, $4, $5) {
- $0_1 = $0_1 | 0;
- $1 = $1 | 0;
- $2 = $2 | 0;
- $3 = $3 | 0;
- $4 = $4 | 0;
- $5 = $5 | 0;
- if ((0 | 0) != (48 | 0)) {
- label$2 : {
- if (0) {
- break label$2
- }
- abort();
- }
- } else {
- abort()
- }
- abort();
- }
-
+ var FUNCTION_TABLE = [];
return {
};
diff --git a/test/wasm2js/int_exprs.2asm.js b/test/wasm2js/int_exprs.2asm.js
index 8dbfd0338..5d62f4637 100644
--- a/test/wasm2js/int_exprs.2asm.js
+++ b/test/wasm2js/int_exprs.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0(x, y) {
x = x | 0;
y = y | 0;
@@ -121,12 +120,142 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$4 >>> 0 < i64toi32_i32$0 >>> 0 | ((i64toi32_i32$4 | 0) == (i64toi32_i32$0 | 0) & i64toi32_i32$5 >>> 0 < i64toi32_i32$3 >>> 0 | 0) | 0 | 0;
}
+ function legalstub$2($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5 = 0, $5$hi = 0, $8$hi = 0, $9 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5 = $0_1;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $2($9 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5 = 0, $5$hi = 0, $8$hi = 0, $9 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5 = $0_1;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $3($9 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
i32_no_fold_cmp_s_offset: $0,
i32_no_fold_cmp_u_offset: $1,
- i64_no_fold_cmp_s_offset: $2,
- i64_no_fold_cmp_u_offset: $3
+ i64_no_fold_cmp_s_offset: legalstub$2,
+ i64_no_fold_cmp_u_offset: legalstub$3
};
}
@@ -136,6 +265,7 @@ export const i32_no_fold_cmp_s_offset = retasmFunc.i32_no_fold_cmp_s_offset;
export const i32_no_fold_cmp_u_offset = retasmFunc.i32_no_fold_cmp_u_offset;
export const i64_no_fold_cmp_s_offset = retasmFunc.i64_no_fold_cmp_s_offset;
export const i64_no_fold_cmp_u_offset = retasmFunc.i64_no_fold_cmp_u_offset;
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -159,6 +289,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(x, x$hi) {
x = x | 0;
@@ -171,15 +302,69 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$0($0_1, $1) {
+ $0_1 = $0_1 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $0(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- i64_no_fold_wrap_extend_s: $0
+ i64_no_fold_wrap_extend_s: legalstub$0
};
}
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 i64_no_fold_wrap_extend_s = retasmFunc.i64_no_fold_wrap_extend_s;
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -203,6 +388,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(x, x$hi) {
x = x | 0;
@@ -214,15 +400,69 @@ function asmFunc(global, env, buffer) {
return x | 0;
}
+ function legalstub$0($0_1, $1) {
+ $0_1 = $0_1 | 0;
+ $1 = $1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $0(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- i64_no_fold_wrap_extend_u: $0
+ i64_no_fold_wrap_extend_u: legalstub$0
};
}
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 i64_no_fold_wrap_extend_u = retasmFunc.i64_no_fold_wrap_extend_u;
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -246,6 +486,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(x) {
x = x | 0;
@@ -337,21 +578,128 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$0 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
i32_no_fold_shl_shr_s: $0,
i32_no_fold_shl_shr_u: $1,
- i64_no_fold_shl_shr_s: $2,
- i64_no_fold_shl_shr_u: $3
+ i64_no_fold_shl_shr_s: legalstub$2,
+ i64_no_fold_shl_shr_u: legalstub$3
};
}
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 i32_no_fold_shl_shr_s = retasmFunc.i32_no_fold_shl_shr_s;
export const i32_no_fold_shl_shr_u = retasmFunc.i32_no_fold_shl_shr_u;
export const i64_no_fold_shl_shr_s = retasmFunc.i64_no_fold_shl_shr_s;
export const i64_no_fold_shl_shr_u = retasmFunc.i64_no_fold_shl_shr_u;
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -375,6 +723,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(x) {
x = x | 0;
@@ -466,22 +815,129 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$0 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
i32_no_fold_shr_s_shl: $0,
i32_no_fold_shr_u_shl: $1,
- i64_no_fold_shr_s_shl: $2,
- i64_no_fold_shr_u_shl: $3
+ i64_no_fold_shr_s_shl: legalstub$2,
+ i64_no_fold_shr_u_shl: legalstub$3
};
}
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 i32_no_fold_shr_s_shl = retasmFunc.i32_no_fold_shr_s_shl;
export const i32_no_fold_shr_u_shl = retasmFunc.i32_no_fold_shr_u_shl;
export const i64_no_fold_shr_s_shl = retasmFunc.i64_no_fold_shr_s_shl;
export const i64_no_fold_shr_u_shl = retasmFunc.i64_no_fold_shr_u_shl;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -505,6 +961,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -549,6 +1006,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -1311,18 +1874,19 @@ function asmFunc(global, env, buffer) {
return {
i32_no_fold_div_s_mul: $0,
i32_no_fold_div_u_mul: $1,
- i64_no_fold_div_s_mul: $2,
- i64_no_fold_div_u_mul: $3
+ i64_no_fold_div_s_mul: legalstub$2,
+ i64_no_fold_div_u_mul: legalstub$3
};
}
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 i32_no_fold_div_s_mul = retasmFunc.i32_no_fold_div_s_mul;
export const i32_no_fold_div_u_mul = retasmFunc.i32_no_fold_div_u_mul;
export const i64_no_fold_div_s_mul = retasmFunc.i64_no_fold_div_s_mul;
export const i64_no_fold_div_u_mul = retasmFunc.i64_no_fold_div_u_mul;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -1346,6 +1910,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -1390,6 +1955,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -2152,18 +2823,19 @@ function asmFunc(global, env, buffer) {
return {
i32_no_fold_mul_div_s: $0,
i32_no_fold_mul_div_u: $1,
- i64_no_fold_mul_div_s: $2,
- i64_no_fold_mul_div_u: $3
+ i64_no_fold_mul_div_s: legalstub$2,
+ i64_no_fold_mul_div_u: legalstub$3
};
}
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 i32_no_fold_mul_div_s = retasmFunc.i32_no_fold_mul_div_s;
export const i32_no_fold_mul_div_u = retasmFunc.i32_no_fold_mul_div_u;
export const i64_no_fold_mul_div_s = retasmFunc.i64_no_fold_mul_div_s;
export const i64_no_fold_mul_div_u = retasmFunc.i64_no_fold_mul_div_u;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -2187,6 +2859,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -2206,6 +2879,59 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$1($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $1(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -2869,15 +3595,16 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
i32_no_fold_div_s_2: $0,
- i64_no_fold_div_s_2: $1
+ i64_no_fold_div_s_2: legalstub$1
};
}
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 i32_no_fold_div_s_2 = retasmFunc.i32_no_fold_div_s_2;
export const i64_no_fold_div_s_2 = retasmFunc.i64_no_fold_div_s_2;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -2901,6 +3628,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -2920,6 +3648,59 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$1($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $1(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -3562,15 +4343,16 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
i32_no_fold_rem_s_2: $0,
- i64_no_fold_rem_s_2: $1
+ i64_no_fold_rem_s_2: legalstub$1
};
}
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 i32_no_fold_rem_s_2 = retasmFunc.i32_no_fold_rem_s_2;
export const i64_no_fold_rem_s_2 = retasmFunc.i64_no_fold_rem_s_2;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -3594,6 +4376,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -3630,6 +4413,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -4294,18 +5183,19 @@ function asmFunc(global, env, buffer) {
return {
i32_div_s_3: $0,
i32_div_u_3: $1,
- i64_div_s_3: $2,
- i64_div_u_3: $3
+ i64_div_s_3: legalstub$2,
+ i64_div_u_3: legalstub$3
};
}
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 i32_div_s_3 = retasmFunc.i32_div_s_3;
export const i32_div_u_3 = retasmFunc.i32_div_u_3;
export const i64_div_s_3 = retasmFunc.i64_div_s_3;
export const i64_div_u_3 = retasmFunc.i64_div_u_3;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -4329,6 +5219,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -4365,6 +5256,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -5029,18 +6026,19 @@ function asmFunc(global, env, buffer) {
return {
i32_div_s_3: $0,
i32_div_u_3: $1,
- i64_div_s_3: $2,
- i64_div_u_3: $3
+ i64_div_s_3: legalstub$2,
+ i64_div_u_3: legalstub$3
};
}
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 i32_div_s_3 = retasmFunc.i32_div_s_3;
export const i32_div_u_3 = retasmFunc.i32_div_u_3;
export const i64_div_s_3 = retasmFunc.i64_div_s_3;
export const i64_div_u_3 = retasmFunc.i64_div_u_3;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -5064,6 +6062,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -5100,6 +6099,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -5764,18 +6869,19 @@ function asmFunc(global, env, buffer) {
return {
i32_div_s_5: $0,
i32_div_u_5: $1,
- i64_div_s_5: $2,
- i64_div_u_5: $3
+ i64_div_s_5: legalstub$2,
+ i64_div_u_5: legalstub$3
};
}
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 i32_div_s_5 = retasmFunc.i32_div_s_5;
export const i32_div_u_5 = retasmFunc.i32_div_u_5;
export const i64_div_s_5 = retasmFunc.i64_div_s_5;
export const i64_div_u_5 = retasmFunc.i64_div_u_5;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -5799,6 +6905,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -5835,6 +6942,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -6499,18 +7712,19 @@ function asmFunc(global, env, buffer) {
return {
i32_div_s_7: $0,
i32_div_u_7: $1,
- i64_div_s_7: $2,
- i64_div_u_7: $3
+ i64_div_s_7: legalstub$2,
+ i64_div_u_7: legalstub$3
};
}
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 i32_div_s_7 = retasmFunc.i32_div_s_7;
export const i32_div_u_7 = retasmFunc.i32_div_u_7;
export const i64_div_s_7 = retasmFunc.i64_div_s_7;
export const i64_div_u_7 = retasmFunc.i64_div_u_7;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -6534,6 +7748,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -6570,6 +7785,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -7213,18 +8534,19 @@ function asmFunc(global, env, buffer) {
return {
i32_rem_s_3: $0,
i32_rem_u_3: $1,
- i64_rem_s_3: $2,
- i64_rem_u_3: $3
+ i64_rem_s_3: legalstub$2,
+ i64_rem_u_3: legalstub$3
};
}
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 i32_rem_s_3 = retasmFunc.i32_rem_s_3;
export const i32_rem_u_3 = retasmFunc.i32_rem_u_3;
export const i64_rem_s_3 = retasmFunc.i64_rem_s_3;
export const i64_rem_u_3 = retasmFunc.i64_rem_u_3;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -7248,6 +8570,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -7284,6 +8607,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -7927,18 +9356,19 @@ function asmFunc(global, env, buffer) {
return {
i32_rem_s_5: $0,
i32_rem_u_5: $1,
- i64_rem_s_5: $2,
- i64_rem_u_5: $3
+ i64_rem_s_5: legalstub$2,
+ i64_rem_u_5: legalstub$3
};
}
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 i32_rem_s_5 = retasmFunc.i32_rem_s_5;
export const i32_rem_u_5 = retasmFunc.i32_rem_u_5;
export const i64_rem_s_5 = retasmFunc.i64_rem_s_5;
export const i64_rem_u_5 = retasmFunc.i64_rem_u_5;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -7962,6 +9392,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x) {
@@ -7998,6 +9429,112 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -8641,13 +10178,13 @@ function asmFunc(global, env, buffer) {
return {
i32_rem_s_7: $0,
i32_rem_u_7: $1,
- i64_rem_s_7: $2,
- i64_rem_u_7: $3
+ i64_rem_s_7: legalstub$2,
+ i64_rem_u_7: legalstub$3
};
}
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 i32_rem_s_7 = retasmFunc.i32_rem_s_7;
export const i32_rem_u_7 = retasmFunc.i32_rem_u_7;
export const i64_rem_s_7 = retasmFunc.i64_rem_s_7;
diff --git a/test/wasm2js/int_literals.2asm.js b/test/wasm2js/int_literals.2asm.js
index 72d6c1a76..48adc55e4 100644
--- a/test/wasm2js/int_literals.2asm.js
+++ b/test/wasm2js/int_literals.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() {
return 195940365 | 0;
@@ -128,6 +130,292 @@ function asmFunc(global, env, buffer) {
return 42 | 0;
}
+ function legalstub$11() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $11() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$12() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $12() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$13() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $13() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$14() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $14() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$15() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $15() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$16() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $16() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$17() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $17() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$18() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $18() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$19() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $19() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$20() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $20() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$21() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $21() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
i32_test: $0,
@@ -141,22 +429,22 @@ function asmFunc(global, env, buffer) {
i32_not_octal: $8,
i32_unsigned_decimal: $9,
i32_plus_sign: $10,
- i64_test: $11,
- i64_umax: $12,
- i64_smax: $13,
- i64_neg_smax: $14,
- i64_smin: $15,
- i64_alt_smin: $16,
- i64_inc_smin: $17,
- i64_neg_zero: $18,
- i64_not_octal: $19,
- i64_unsigned_decimal: $20,
- i64_plus_sign: $21
+ i64_test: legalstub$11,
+ i64_umax: legalstub$12,
+ i64_smax: legalstub$13,
+ i64_neg_smax: legalstub$14,
+ i64_smin: legalstub$15,
+ i64_alt_smin: legalstub$16,
+ i64_inc_smin: legalstub$17,
+ i64_neg_zero: legalstub$18,
+ i64_not_octal: legalstub$19,
+ i64_unsigned_decimal: legalstub$20,
+ i64_plus_sign: legalstub$21
};
}
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 i32_test = retasmFunc.i32_test;
export const i32_umax = retasmFunc.i32_umax;
export const i32_smax = retasmFunc.i32_smax;
diff --git a/test/wasm2js/labels.2asm.js b/test/wasm2js/labels.2asm.js
index f51e8b813..7d1cc825d 100644
--- a/test/wasm2js/labels.2asm.js
+++ b/test/wasm2js/labels.2asm.js
@@ -21,7 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
function $0() {
var $0_1 = 0;
exit : {
diff --git a/test/wasm2js/left-to-right.2asm.js b/test/wasm2js/left-to-right.2asm.js
index 59f10260d..78e903396 100644
--- a/test/wasm2js/left-to-right.2asm.js
+++ b/test/wasm2js/left-to-right.2asm.js
@@ -121,15 +121,6 @@ function asmFunc(global, env, buffer) {
return 1 | 0;
}
- function i32_another() {
- var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0;
- bump();
- wasm2js_i32$0 = 8;
- wasm2js_i32$1 = 3;
- HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1;
- return 1 | 0;
- }
-
function i32_callee() {
var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0;
bump();
@@ -170,17 +161,6 @@ function asmFunc(global, env, buffer) {
return 1 | 0;
}
- function i64_another() {
- var i64toi32_i32$0 = 0, wasm2js_i32$0 = 0, wasm2js_i32$1 = 0;
- bump();
- wasm2js_i32$0 = 8;
- wasm2js_i32$1 = 3;
- HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1;
- i64toi32_i32$0 = 0;
- i64toi32_i32$HIGH_BITS = i64toi32_i32$0;
- return 1 | 0;
- }
-
function i64_callee() {
var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0;
bump();
@@ -217,15 +197,6 @@ function asmFunc(global, env, buffer) {
return Math_fround(Math_fround(1.0));
}
- function f32_another() {
- var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0;
- bump();
- wasm2js_i32$0 = 8;
- wasm2js_i32$1 = 3;
- HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1;
- return Math_fround(Math_fround(1.0));
- }
-
function f32_callee() {
var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0;
bump();
@@ -262,15 +233,6 @@ function asmFunc(global, env, buffer) {
return +(1.0);
}
- function f64_another() {
- var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0;
- bump();
- wasm2js_i32$0 = 8;
- wasm2js_i32$1 = 3;
- HEAP8[wasm2js_i32$0 >> 0] = wasm2js_i32$1;
- return +(1.0);
- }
-
function f64_callee() {
var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0;
bump();
diff --git a/test/wasm2js/loop.2asm.js b/test/wasm2js/loop.2asm.js
index 1753f86a1..84646905b 100644
--- a/test/wasm2js/loop.2asm.js
+++ b/test/wasm2js/loop.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 dummy() {
@@ -488,6 +490,118 @@ function asmFunc(global, env, buffer) {
return Math_fround($3_1);
}
+ function legalstub$16($0, $1_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0;
+ $4$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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $16(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$17($0, $1_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12_1 = 0, $13_1 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0;
+ $4$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;
+ $12_1 = 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;
+ $12_1 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12_1;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $17(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13_1 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13_1 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$18($0, $1_1) {
+ $0 = +$0;
+ $1_1 = +$1_1;
+ return +(+Math_fround($18(Math_fround(Math_fround($0)), Math_fround(Math_fround($1_1)))));
+ }
+
function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -611,14 +725,14 @@ function asmFunc(global, env, buffer) {
break_inner: $13,
cont_inner: $14,
effects: fx,
- while_: $16,
- for_: $17,
- nesting: $18
+ while_: legalstub$16,
+ for_: legalstub$17,
+ nesting: legalstub$18
};
}
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 empty = retasmFunc.empty;
export const singular = retasmFunc.singular;
export const multi = retasmFunc.multi;
diff --git a/test/wasm2js/nested-selects.2asm.js b/test/wasm2js/nested-selects.2asm.js
index cfcfe66e0..b38cd6313 100644
--- a/test/wasm2js/nested-selects.2asm.js
+++ b/test/wasm2js/nested-selects.2asm.js
@@ -21,11 +21,6 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
- var i64toi32_i32$HIGH_BITS = 0;
- function dummy() {
-
- }
-
function $1($0) {
$0 = $0 | 0;
var wasm2js_i32$0 = 0, wasm2js_i32$1 = 0, wasm2js_i32$2 = 0, wasm2js_i32$3 = 0, wasm2js_i32$4 = 0, wasm2js_i32$5 = 0;
diff --git a/test/wasm2js/reinterpret.2asm.js b/test/wasm2js/reinterpret.2asm.js
index 24e32d3e9..018de2245 100644
--- a/test/wasm2js/reinterpret.2asm.js
+++ b/test/wasm2js/reinterpret.2asm.js
@@ -23,11 +23,6 @@ function asmFunc(global, env, buffer) {
var nan = global.NaN;
var infinity = global.Infinity;
var __tempMemory__ = env.__tempMemory__ | 0;
- var i64toi32_i32$HIGH_BITS = 0;
- function dummy() {
-
- }
-
function $1($0) {
$0 = $0 | 0;
return ((HEAPF32[0] = (HEAP32[0] = $0, HEAPF32[0]), HEAP32[0] | 0) | 0) == ($0 | 0) | 0;
@@ -54,10 +49,42 @@ function asmFunc(global, env, buffer) {
return (HEAP32[__tempMemory__ >> 2] | 0 | 0) == ($0 | 0) & (i64toi32_i32$0 | 0) == ($0$hi | 0) | 0 | 0;
}
+ function legalstub$2($0, $1_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10 = 0, $3 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3 = $0;
+ $3$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;
+ $10 = 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;
+ $10 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
i32_roundtrip: $1,
- i64_roundtrip: $2
+ i64_roundtrip: legalstub$2
};
}
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;
diff --git a/test/wasm2js/set_local.2asm.js b/test/wasm2js/set_local.2asm.js
index bf3e08754..e277f5a07 100644
--- a/test/wasm2js/set_local.2asm.js
+++ b/test/wasm2js/set_local.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() {
@@ -105,6 +107,136 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$5($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0_1;
+ $3$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;
+ $10 = 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;
+ $10 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $5(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0);
+ }
+
+ function legalstub$6($0_1) {
+ $0_1 = +$0_1;
+ $6(Math_fround(Math_fround($0_1)));
+ }
+
+ function legalstub$8($0_1, $1_1, $2_1, $3_1, $4_1, $5_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = +$2_1;
+ $3_1 = +$3_1;
+ $4_1 = $4_1 | 0;
+ $5_1 = $5_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $14 = 0, $7_1 = 0, $7$hi = 0, $10$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7_1 = $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;
+ $14 = 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;
+ $14 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $10$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $7$hi;
+ i64toi32_i32$0 = $7_1;
+ i64toi32_i32$2 = $10$hi;
+ i64toi32_i32$3 = $14;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $8(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround(Math_fround($2_1)), +$3_1, $4_1 | 0, $5_1 | 0);
+ }
+
+ function legalstub$9($0_1, $1_1, $2_1, $3_1, $4_1, $5_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = +$2_1;
+ $3_1 = +$3_1;
+ $4_1 = $4_1 | 0;
+ $5_1 = $5_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $16 = 0, $17 = 0, $8_1 = 0, $8$hi = 0, $11$hi = 0, $6_1 = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $8_1 = $0_1;
+ $8$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;
+ $16 = 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;
+ $16 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $11$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $8$hi;
+ i64toi32_i32$0 = $8_1;
+ i64toi32_i32$2 = $11$hi;
+ i64toi32_i32$3 = $16;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $9(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround(Math_fround($2_1)), +$3_1, $4_1 | 0, $5_1 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $6_1 = i64toi32_i32$2;
+ $6$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $17 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $17 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($17 | 0);
+ i64toi32_i32$2 = $6$hi;
+ return $6_1 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
type_local_i32: $0,
@@ -112,16 +244,16 @@ function asmFunc(global, env, buffer) {
type_local_f32: $2,
type_local_f64: $3,
type_param_i32: $4,
- type_param_i64: $5,
- type_param_f32: $6,
+ type_param_i64: legalstub$5,
+ type_param_f32: legalstub$6,
type_param_f64: $7,
- type_mixed: $8,
- write: $9
+ type_mixed: legalstub$8,
+ write: legalstub$9
};
}
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 type_local_i32 = retasmFunc.type_local_i32;
export const type_local_i64 = retasmFunc.type_local_i64;
export const type_local_f32 = retasmFunc.type_local_f32;
diff --git a/test/wasm2js/stack-modified.2asm.js b/test/wasm2js/stack-modified.2asm.js
index b10a7da45..defb8f461 100644
--- a/test/wasm2js/stack-modified.2asm.js
+++ b/test/wasm2js/stack-modified.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(var$0, var$0$hi) {
var$0 = var$0 | 0;
@@ -262,6 +264,271 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$3 | 0;
}
+ function legalstub$0($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $0(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$1($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $1(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$2($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $2(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $3(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$4($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $4(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -362,16 +629,16 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
- fac_expr: $0,
- fac_stack: $1,
- fac_stack_raw: $2,
- fac_mixed: $3,
- fac_mixed_raw: $4
+ fac_expr: legalstub$0,
+ fac_stack: legalstub$1,
+ fac_stack_raw: legalstub$2,
+ fac_mixed: legalstub$3,
+ fac_mixed_raw: legalstub$4
};
}
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 fac_expr = retasmFunc.fac_expr;
export const fac_stack = retasmFunc.fac_stack;
export const fac_stack_raw = retasmFunc.fac_stack_raw;
diff --git a/test/wasm2js/switch.2asm.js b/test/wasm2js/switch.2asm.js
index 7d6a14485..70eeab365 100644
--- a/test/wasm2js/switch.2asm.js
+++ b/test/wasm2js/switch.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(i) {
i = i | 0;
@@ -183,17 +185,70 @@ function asmFunc(global, env, buffer) {
return 1 | 0;
}
+ function legalstub$1($0_2, $1_2) {
+ $0_2 = $0_2 | 0;
+ $1_2 = $1_2 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_2 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_2;
+ $4$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $1_2;
+ 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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $1(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_2 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_2 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
stmt: $0,
- expr: $1,
+ expr: legalstub$1,
arg: $2,
corner: $3
};
}
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 stmt = retasmFunc.stmt;
export const expr = retasmFunc.expr;
export const arg = retasmFunc.arg;
diff --git a/test/wasm2js/tee_local.2asm.js b/test/wasm2js/tee_local.2asm.js
index c01df10b1..31bf18881 100644
--- a/test/wasm2js/tee_local.2asm.js
+++ b/test/wasm2js/tee_local.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() {
return 0 | 0;
@@ -140,24 +142,241 @@ function asmFunc(global, env, buffer) {
return +($10_1 + (+Math_fround(2.0) + (3.3 + (+(4 >>> 0) + (+(5 | 0) + (+Math_fround(5.5) + ($21 + (+(i64toi32_i32$1 >>> 0) + 4294967296.0 * +(i64toi32_i32$0 >>> 0) + 8.0))))))));
}
+ function legalstub$1() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $1() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$2() {
+ return +(+Math_fround($2()));
+ }
+
+ function legalstub$5($0_1, $1_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $12 = 0, $13 = 0, $4_1 = 0, $4$hi = 0, $7$hi = 0, $2_1 = 0, $2$hi = 0;
+ i64toi32_i32$0 = 0;
+ $4_1 = $0_1;
+ $4$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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $7$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $4$hi;
+ i64toi32_i32$0 = $4_1;
+ i64toi32_i32$2 = $7$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $5(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $2_1 = i64toi32_i32$2;
+ $2$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $13 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $13 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($13 | 0);
+ i64toi32_i32$2 = $2$hi;
+ return $2_1 | 0;
+ }
+
+ function legalstub$6($0_1) {
+ $0_1 = +$0_1;
+ return +(+Math_fround($6(Math_fround(Math_fround($0_1)))));
+ }
+
+ function legalstub$8($0_1, $1_1, $2_1, $3_1, $4_1, $5_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = +$2_1;
+ $3_1 = +$3_1;
+ $4_1 = $4_1 | 0;
+ $5_1 = $5_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $14 = 0, $7_1 = 0, $7$hi = 0, $10$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7_1 = $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;
+ $14 = 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;
+ $14 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $10$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $7$hi;
+ i64toi32_i32$0 = $7_1;
+ i64toi32_i32$2 = $10$hi;
+ i64toi32_i32$3 = $14;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $8(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround(Math_fround($2_1)), +$3_1, $4_1 | 0, $5_1 | 0);
+ }
+
+ function legalstub$9($0_1, $1_1, $2_1, $3_1, $4_1, $5_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = +$2_1;
+ $3_1 = +$3_1;
+ $4_1 = $4_1 | 0;
+ $5_1 = $5_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $16 = 0, $17 = 0, $8_1 = 0, $8$hi = 0, $11$hi = 0, $6_1 = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $8_1 = $0_1;
+ $8$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;
+ $16 = 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;
+ $16 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $11$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $8$hi;
+ i64toi32_i32$0 = $8_1;
+ i64toi32_i32$2 = $11$hi;
+ i64toi32_i32$3 = $16;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ i64toi32_i32$2 = $9(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround(Math_fround($2_1)), +$3_1, $4_1 | 0, $5_1 | 0) | 0;
+ i64toi32_i32$0 = i64toi32_i32$HIGH_BITS;
+ $6_1 = i64toi32_i32$2;
+ $6$hi = i64toi32_i32$0;
+ i64toi32_i32$1 = 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;
+ $17 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$0 >>> i64toi32_i32$4 | 0;
+ $17 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$0 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$1 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($17 | 0);
+ i64toi32_i32$2 = $6$hi;
+ return $6_1 | 0;
+ }
+
+ function legalstub$10($0_1, $1_1, $2_1, $3_1, $4_1, $5_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = +$2_1;
+ $3_1 = +$3_1;
+ $4_1 = $4_1 | 0;
+ $5_1 = $5_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $14 = 0, $7_1 = 0, $7$hi = 0, $10$hi = 0;
+ i64toi32_i32$0 = 0;
+ $7_1 = $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;
+ $14 = 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;
+ $14 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $10$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $7$hi;
+ i64toi32_i32$0 = $7_1;
+ i64toi32_i32$2 = $10$hi;
+ i64toi32_i32$3 = $14;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return +(+$10(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0, Math_fround(Math_fround($2_1)), +$3_1, $4_1 | 0, $5_1 | 0));
+ }
+
var FUNCTION_TABLE = [];
return {
type_local_i32: $0,
- type_local_i64: $1,
- type_local_f32: $2,
+ type_local_i64: legalstub$1,
+ type_local_f32: legalstub$2,
type_local_f64: $3,
type_param_i32: $4,
- type_param_i64: $5,
- type_param_f32: $6,
+ type_param_i64: legalstub$5,
+ type_param_f32: legalstub$6,
type_param_f64: $7,
- type_mixed: $8,
- write: $9,
- result: $10
+ type_mixed: legalstub$8,
+ write: legalstub$9,
+ result: legalstub$10
};
}
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 type_local_i32 = retasmFunc.type_local_i32;
export const type_local_i64 = retasmFunc.type_local_i64;
export const type_local_f32 = retasmFunc.type_local_f32;
diff --git a/test/wasm2js/traps.2asm.js b/test/wasm2js/traps.2asm.js
index 4cc5b54ea..63a027e9f 100644
--- a/test/wasm2js/traps.2asm.js
+++ b/test/wasm2js/traps.2asm.js
@@ -1,4 +1,5 @@
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -22,6 +23,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x, y) {
@@ -68,6 +70,178 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21 = 0, $22 = 0, $23 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12 = 0, $12$hi = 0, $15$hi = 0, $16 = 0, $16$hi = 0, $4 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6 = $0_1;
+ $6$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;
+ $21 = 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;
+ $21 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12 = $2_1;
+ $12$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;
+ $22 = 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;
+ $22 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $2($10 | 0, i64toi32_i32$1 | 0, $16 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4 = i64toi32_i32$2;
+ $4$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;
+ $23 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23 = (((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($23 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21 = 0, $22 = 0, $23 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12 = 0, $12$hi = 0, $15$hi = 0, $16 = 0, $16$hi = 0, $4 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6 = $0_1;
+ $6$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;
+ $21 = 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;
+ $21 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12 = $2_1;
+ $12$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;
+ $22 = 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;
+ $22 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $3($10 | 0, i64toi32_i32$1 | 0, $16 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4 = i64toi32_i32$2;
+ $4$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;
+ $23 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23 = (((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($23 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Div3div17he78fc483e41d7ec7E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -732,18 +906,19 @@ function asmFunc(global, env, buffer) {
return {
no_dce_i32_div_s: $0,
no_dce_i32_div_u: $1,
- no_dce_i64_div_s: $2,
- no_dce_i64_div_u: $3
+ no_dce_i64_div_s: legalstub$2,
+ no_dce_i64_div_u: legalstub$3
};
}
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 no_dce_i32_div_s = retasmFunc.no_dce_i32_div_s;
export const no_dce_i32_div_u = retasmFunc.no_dce_i32_div_u;
export const no_dce_i64_div_s = retasmFunc.no_dce_i64_div_s;
export const no_dce_i64_div_u = retasmFunc.no_dce_i64_div_u;
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -767,6 +942,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0(x, y) {
@@ -813,6 +989,178 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$1 | 0;
}
+ function legalstub$2($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21 = 0, $22 = 0, $23 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12 = 0, $12$hi = 0, $15$hi = 0, $16 = 0, $16$hi = 0, $4 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6 = $0_1;
+ $6$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;
+ $21 = 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;
+ $21 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12 = $2_1;
+ $12$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;
+ $22 = 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;
+ $22 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $2($10 | 0, i64toi32_i32$1 | 0, $16 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4 = i64toi32_i32$2;
+ $4$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;
+ $23 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23 = (((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($23 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4 | 0;
+ }
+
+ function legalstub$3($0_1, $1_1, $2_1, $3_1) {
+ $0_1 = $0_1 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$0 = 0, i64toi32_i32$3 = 0, $21 = 0, $22 = 0, $23 = 0, $6 = 0, $6$hi = 0, $9$hi = 0, $10 = 0, $10$hi = 0, $12 = 0, $12$hi = 0, $15$hi = 0, $16 = 0, $16$hi = 0, $4 = 0, $4$hi = 0;
+ i64toi32_i32$0 = 0;
+ $6 = $0_1;
+ $6$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;
+ $21 = 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;
+ $21 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $9$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $6$hi;
+ i64toi32_i32$0 = $6;
+ i64toi32_i32$2 = $9$hi;
+ i64toi32_i32$3 = $21;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $10 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $10$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $12 = $2_1;
+ $12$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;
+ $22 = 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;
+ $22 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $15$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $12$hi;
+ i64toi32_i32$2 = $12;
+ i64toi32_i32$1 = $15$hi;
+ i64toi32_i32$3 = $22;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $16 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $16$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $10$hi;
+ i64toi32_i32$2 = $16$hi;
+ i64toi32_i32$2 = $3($10 | 0, i64toi32_i32$1 | 0, $16 | 0, i64toi32_i32$2 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $4 = i64toi32_i32$2;
+ $4$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;
+ $23 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$2 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $23 = (((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($23 | 0);
+ i64toi32_i32$2 = $4$hi;
+ return $4 | 0;
+ }
+
function _ZN17compiler_builtins3int4sdiv3Mod4mod_17h2cbb7bbf36e41d68E(var$0, var$0$hi, var$1, var$1$hi) {
var$0 = var$0 | 0;
var$0$hi = var$0$hi | 0;
@@ -1456,17 +1804,18 @@ function asmFunc(global, env, buffer) {
return {
no_dce_i32_rem_s: $0,
no_dce_i32_rem_u: $1,
- no_dce_i64_rem_s: $2,
- no_dce_i64_rem_u: $3
+ no_dce_i64_rem_s: legalstub$2,
+ no_dce_i64_rem_u: legalstub$3
};
}
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 no_dce_i32_rem_s = retasmFunc.no_dce_i32_rem_s;
export const no_dce_i32_rem_u = retasmFunc.no_dce_i32_rem_u;
export const no_dce_i64_rem_s = retasmFunc.no_dce_i64_rem_s;
export const no_dce_i64_rem_u = retasmFunc.no_dce_i64_rem_u;
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -1490,6 +1839,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(x) {
x = Math_fround(x);
@@ -1599,21 +1949,139 @@ function asmFunc(global, env, buffer) {
return i64toi32_i32$2 | 0;
}
+ function legalstub$0($0_1) {
+ $0_1 = +$0_1;
+ return $0(Math_fround(Math_fround($0_1))) | 0 | 0;
+ }
+
+ function legalstub$1($0_1) {
+ $0_1 = +$0_1;
+ return $1(Math_fround(Math_fround($0_1))) | 0 | 0;
+ }
+
+ function legalstub$4($0_1) {
+ $0_1 = +$0_1;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $4(Math_fround(Math_fround($0_1))) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$5($0_1) {
+ $0_1 = +$0_1;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $5(Math_fround(Math_fround($0_1))) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$6($0_1) {
+ $0_1 = +$0_1;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $6(+$0_1) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$7($0_1) {
+ $0_1 = +$0_1;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $7(+$0_1) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
var FUNCTION_TABLE = [];
return {
- no_dce_i32_trunc_s_f32: $0,
- no_dce_i32_trunc_u_f32: $1,
+ no_dce_i32_trunc_s_f32: legalstub$0,
+ no_dce_i32_trunc_u_f32: legalstub$1,
no_dce_i32_trunc_s_f64: $2,
no_dce_i32_trunc_u_f64: $3,
- no_dce_i64_trunc_s_f32: $4,
- no_dce_i64_trunc_u_f32: $5,
- no_dce_i64_trunc_s_f64: $6,
- no_dce_i64_trunc_u_f64: $7
+ no_dce_i64_trunc_s_f32: legalstub$4,
+ no_dce_i64_trunc_u_f32: legalstub$5,
+ no_dce_i64_trunc_s_f64: legalstub$6,
+ no_dce_i64_trunc_u_f64: legalstub$7
};
}
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 no_dce_i32_trunc_s_f32 = retasmFunc.no_dce_i32_trunc_s_f32;
export const no_dce_i32_trunc_u_f32 = retasmFunc.no_dce_i32_trunc_u_f32;
export const no_dce_i32_trunc_s_f64 = retasmFunc.no_dce_i32_trunc_s_f64;
@@ -1622,6 +2090,7 @@ export const no_dce_i64_trunc_s_f32 = retasmFunc.no_dce_i64_trunc_s_f32;
export const no_dce_i64_trunc_u_f32 = retasmFunc.no_dce_i64_trunc_u_f32;
export const no_dce_i64_trunc_s_f64 = retasmFunc.no_dce_i64_trunc_s_f64;
export const no_dce_i64_trunc_u_f64 = retasmFunc.no_dce_i64_trunc_u_f64;
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -1645,6 +2114,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(i) {
i = i | 0;
@@ -1671,6 +2141,38 @@ function asmFunc(global, env, buffer) {
return +(+HEAPF64[i >> 3]);
}
+ function legalstub$1($0_1) {
+ $0_1 = $0_1 | 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $8 = 0, $1_1 = 0, $1$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $1($0_1 | 0) | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $1_1 = i64toi32_i32$0;
+ $1$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $8 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $8 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($8 | 0);
+ i64toi32_i32$0 = $1$hi;
+ return $1_1 | 0;
+ }
+
+ function legalstub$2($0_1) {
+ $0_1 = $0_1 | 0;
+ return +(+Math_fround($2($0_1 | 0)));
+ }
+
var FUNCTION_TABLE = [];
function __wasm_grow_memory(pagesToAdd) {
pagesToAdd = pagesToAdd | 0;
@@ -1701,14 +2203,14 @@ function asmFunc(global, env, buffer) {
return {
no_dce_i32_load: $0,
- no_dce_i64_load: $1,
- no_dce_f32_load: $2,
+ no_dce_i64_load: legalstub$1,
+ no_dce_f32_load: legalstub$2,
no_dce_f64_load: $3
};
}
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 no_dce_i32_load = retasmFunc.no_dce_i32_load;
export const no_dce_i64_load = retasmFunc.no_dce_i64_load;
export const no_dce_f32_load = retasmFunc.no_dce_f32_load;
diff --git a/test/wasm2js/unaligned.2asm.js b/test/wasm2js/unaligned.2asm.js
index d9268bcd6..fceb55a3e 100644
--- a/test/wasm2js/unaligned.2asm.js
+++ b/test/wasm2js/unaligned.2asm.js
@@ -1,4 +1,5 @@
import { __tempMemory__ } from 'env';
+import { setTempRet0 } from 'env';
function asmFunc(global, env, buffer) {
"almost asm";
@@ -22,6 +23,7 @@ function asmFunc(global, env, buffer) {
var abort = env.abort;
var nan = global.NaN;
var infinity = global.Infinity;
+ var setTempRet0 = env.setTempRet0;
var __tempMemory__ = env.__tempMemory__ | 0;
var i64toi32_i32$HIGH_BITS = 0;
function $0() {
@@ -96,11 +98,41 @@ function asmFunc(global, env, buffer) {
(wasm2js_i32$2 = wasm2js_i32$0, wasm2js_i32$3 = wasm2js_i32$1), ((HEAP8[(wasm2js_i32$2 + 4 | 0) >> 0] = wasm2js_i32$3 & 255 | 0, HEAP8[(wasm2js_i32$2 + 5 | 0) >> 0] = (wasm2js_i32$3 >>> 8 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 6 | 0) >> 0] = (wasm2js_i32$3 >>> 16 | 0) & 255 | 0), HEAP8[(wasm2js_i32$2 + 7 | 0) >> 0] = (wasm2js_i32$3 >>> 24 | 0) & 255 | 0;
}
+ function legalstub$1() {
+ var i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$1 = 0, i64toi32_i32$3 = 0, $7_1 = 0, $0_1 = 0, $0$hi = 0, i64toi32_i32$2 = 0;
+ i64toi32_i32$0 = $1() | 0;
+ i64toi32_i32$1 = i64toi32_i32$HIGH_BITS;
+ $0_1 = i64toi32_i32$0;
+ $0$hi = i64toi32_i32$1;
+ i64toi32_i32$2 = i64toi32_i32$0;
+ 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 = 0;
+ $7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ }
+ } else {
+ {
+ i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
+ $7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
+ }
+ }
+ setTempRet0($7_1 | 0);
+ i64toi32_i32$0 = $0$hi;
+ return $0_1 | 0;
+ }
+
+ function legalstub$2() {
+ return +(+Math_fround($2()));
+ }
+
var FUNCTION_TABLE = [];
return {
i32_load: $0,
- i64_load: $1,
- f32_load: $2,
+ i64_load: legalstub$1,
+ f32_load: legalstub$2,
f64_load: $3,
i32_store: $4,
i64_store: $5,
@@ -110,7 +142,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 i32_load = retasmFunc.i32_load;
export const i64_load = retasmFunc.i64_load;
export const f32_load = retasmFunc.f32_load;
diff --git a/test/wasm2js/unary-ops.2asm.js b/test/wasm2js/unary-ops.2asm.js
index 7534f9ea3..a6fbe4b7c 100644
--- a/test/wasm2js/unary-ops.2asm.js
+++ b/test/wasm2js/unary-ops.2asm.js
@@ -22,10 +22,6 @@ function asmFunc(global, env, buffer) {
var nan = global.NaN;
var infinity = global.Infinity;
var i64toi32_i32$HIGH_BITS = 0;
- function dummy() {
-
- }
-
function $1($0) {
$0 = $0 | 0;
return __wasm_popcnt_i32($0 | 0) | 0 | 0;
@@ -133,6 +129,301 @@ function asmFunc(global, env, buffer) {
return (i64toi32_i32$2 | 0) == (r | 0) & (i64toi32_i32$1 | 0) == (i64toi32_i32$0 | 0) | 0 | 0;
}
+ function legalstub$2($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $2($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$3($0, $1_1, $2_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $12 = 0, $3_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0;
+ $3_1 = $0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $1_1;
+ $5$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $2_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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return $3($3_1 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$4($0, $1_1, $2_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $12 = 0, $3_1 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0;
+ $3_1 = $0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $1_1;
+ $5$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = 0;
+ i64toi32_i32$2 = $2_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;
+ $12 = 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;
+ $12 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $12;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return $4($3_1 | 0, i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$5($0, $1_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $10 = 0, $3_1 = 0, $3$hi = 0, $6$hi = 0;
+ i64toi32_i32$0 = 0;
+ $3_1 = $0;
+ $3$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;
+ $10 = 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;
+ $10 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $6$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $3$hi;
+ i64toi32_i32$0 = $3_1;
+ i64toi32_i32$2 = $6$hi;
+ i64toi32_i32$3 = $10;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ return $5(i64toi32_i32$0 | i64toi32_i32$3 | 0 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$8($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $8($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
+ function legalstub$9($0, $1_1, $2_1, $3_1) {
+ $0 = $0 | 0;
+ $1_1 = $1_1 | 0;
+ $2_1 = $2_1 | 0;
+ $3_1 = $3_1 | 0;
+ var i64toi32_i32$2 = 0, i64toi32_i32$1 = 0, i64toi32_i32$0 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, $19 = 0, $20 = 0, $5_1 = 0, $5$hi = 0, $8$hi = 0, $9_1 = 0, $9$hi = 0, $11 = 0, $11$hi = 0, $14$hi = 0, $15 = 0, $15$hi = 0;
+ i64toi32_i32$0 = 0;
+ $5_1 = $0;
+ $5$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;
+ $19 = 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;
+ $19 = i64toi32_i32$2 << i64toi32_i32$4 | 0;
+ }
+ }
+ $8$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $5$hi;
+ i64toi32_i32$0 = $5_1;
+ i64toi32_i32$2 = $8$hi;
+ i64toi32_i32$3 = $19;
+ i64toi32_i32$2 = i64toi32_i32$1 | i64toi32_i32$2 | 0;
+ $9_1 = i64toi32_i32$0 | i64toi32_i32$3 | 0;
+ $9$hi = i64toi32_i32$2;
+ i64toi32_i32$2 = 0;
+ $11 = $2_1;
+ $11$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;
+ $20 = 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;
+ $20 = i64toi32_i32$1 << i64toi32_i32$4 | 0;
+ }
+ }
+ $14$hi = i64toi32_i32$0;
+ i64toi32_i32$0 = $11$hi;
+ i64toi32_i32$2 = $11;
+ i64toi32_i32$1 = $14$hi;
+ i64toi32_i32$3 = $20;
+ i64toi32_i32$1 = i64toi32_i32$0 | i64toi32_i32$1 | 0;
+ $15 = i64toi32_i32$2 | i64toi32_i32$3 | 0;
+ $15$hi = i64toi32_i32$1;
+ i64toi32_i32$1 = $9$hi;
+ i64toi32_i32$2 = $15$hi;
+ return $9($9_1 | 0, i64toi32_i32$1 | 0, $15 | 0, i64toi32_i32$2 | 0) | 0 | 0;
+ }
+
function __wasm_ctz_i32(var$0) {
var$0 = var$0 | 0;
if (var$0) {
@@ -264,14 +555,14 @@ function asmFunc(global, env, buffer) {
var FUNCTION_TABLE = [];
return {
i32_popcnt: $1,
- check_popcnt_i64: $2,
- check_extend_ui32: $3,
- check_extend_si32: $4,
- check_eqz_i64: $5,
+ check_popcnt_i64: legalstub$2,
+ check_extend_ui32: legalstub$3,
+ check_extend_si32: legalstub$4,
+ check_eqz_i64: legalstub$5,
i32_clz: $6,
i32_ctz: $7,
- check_clz_i64: $8,
- check_ctz_i64: $9
+ check_clz_i64: legalstub$8,
+ check_ctz_i64: legalstub$9
};
}