summaryrefslogtreecommitdiff
path: root/test/wasm2js
diff options
context:
space:
mode:
Diffstat (limited to 'test/wasm2js')
-rw-r--r--test/wasm2js/conversions-modified.2asm.js.opt22
-rw-r--r--test/wasm2js/i64-add-sub.2asm.js.opt22
-rw-r--r--test/wasm2js/i64-ctz.2asm.js.opt70
-rw-r--r--test/wasm2js/i64-rotate.2asm.js.opt148
-rw-r--r--test/wasm2js/i64-shifts.2asm.js.opt50
-rw-r--r--test/wasm2js/reinterpret.2asm.js.opt14
-rw-r--r--test/wasm2js/stack-modified.2asm.js.opt57
-rw-r--r--test/wasm2js/unaligned.2asm.js.opt20
-rw-r--r--test/wasm2js/unary-ops.2asm.js.opt113
9 files changed, 213 insertions, 303 deletions
diff --git a/test/wasm2js/conversions-modified.2asm.js.opt b/test/wasm2js/conversions-modified.2asm.js.opt
index 499b78c5b..26480d72b 100644
--- a/test/wasm2js/conversions-modified.2asm.js.opt
+++ b/test/wasm2js/conversions-modified.2asm.js.opt
@@ -66,18 +66,6 @@ function asmFunc(env) {
return ~~$0 >>> 0 | 0;
}
- function $7($0) {
- $0 = Math_fround($0);
- i64toi32_i32$HIGH_BITS = Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 * Math_fround(2.3283064365386963e-10)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) * Math_fround(2.3283064365386963e-10)))) >>> 0) : 0;
- return ~~$0 >>> 0 | 0;
- }
-
- function $9($0) {
- $0 = +$0;
- i64toi32_i32$HIGH_BITS = Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 * 2.3283064365386963e-10), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) * 2.3283064365386963e-10) >>> 0) : 0;
- return ~~$0 >>> 0 | 0;
- }
-
function $11($0) {
$0 = $0 | 0;
return Math_fround(Math_fround($0 | 0));
@@ -135,17 +123,15 @@ function asmFunc(env) {
}
function legalstub$7($0) {
- var $1 = 0;
- $1 = $7($0);
+ i64toi32_i32$HIGH_BITS = Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 * Math_fround(2.3283064365386963e-10)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) * Math_fround(2.3283064365386963e-10)))) >>> 0) : 0;
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
- return $1;
+ return ~~$0 >>> 0;
}
function legalstub$9($0) {
- var $1 = 0;
- $1 = $9($0);
+ i64toi32_i32$HIGH_BITS = Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 * 2.3283064365386963e-10), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) * 2.3283064365386963e-10) >>> 0) : 0;
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
- return $1;
+ return ~~$0 >>> 0;
}
function legalstub$12($0, $1) {
diff --git a/test/wasm2js/i64-add-sub.2asm.js.opt b/test/wasm2js/i64-add-sub.2asm.js.opt
index ccbcf0126..62f464829 100644
--- a/test/wasm2js/i64-add-sub.2asm.js.opt
+++ b/test/wasm2js/i64-add-sub.2asm.js.opt
@@ -13,25 +13,15 @@ function asmFunc(env) {
var abort = env.abort;
var nan = NaN;
var infinity = Infinity;
- function $1($0, $1_1, $2, $3, $4, $5) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- $2 = $2 | 0;
- $3 = $3 | 0;
- $4 = $4 | 0;
- $5 = $5 | 0;
- $1_1 = $1_1 + $3 | 0;
+ function legalstub$1($0, $1, $2, $3, $4, $5) {
+ $1 = $1 + $3 | 0;
$0 = $0 + $2 | 0;
- $1_1 = $2 >>> 0 > $0 >>> 0 ? $1_1 + 1 | 0 : $1_1;
- return ($0 | 0) == ($4 | 0) & ($1_1 | 0) == ($5 | 0);
+ $1 = $2 >>> 0 > $0 >>> 0 ? $1 + 1 | 0 : $1;
+ return ($0 | 0) == ($4 | 0) & ($1 | 0) == ($5 | 0);
}
- function legalstub$1($0, $1_1, $2, $3, $4, $5) {
- return $1($0, $1_1, $2, $3, $4, $5);
- }
-
- function legalstub$2($0, $1_1, $2, $3, $4, $5) {
- return ($4 | 0) == ($0 - $2 | 0) & ($5 | 0) == ($1_1 - (($0 >>> 0 < $2 >>> 0) + $3 | 0) | 0);
+ function legalstub$2($0, $1, $2, $3, $4, $5) {
+ return ($4 | 0) == ($0 - $2 | 0) & ($5 | 0) == ($1 - (($0 >>> 0 < $2 >>> 0) + $3 | 0) | 0);
}
return {
diff --git a/test/wasm2js/i64-ctz.2asm.js.opt b/test/wasm2js/i64-ctz.2asm.js.opt
index 5fe370d39..fc2e030b9 100644
--- a/test/wasm2js/i64-ctz.2asm.js.opt
+++ b/test/wasm2js/i64-ctz.2asm.js.opt
@@ -17,52 +17,48 @@ function asmFunc(env) {
var setTempRet0 = env.setTempRet0;
var i64toi32_i32$HIGH_BITS = 0;
function legalstub$popcnt64($0, $1) {
- $0 = __wasm_popcnt_i64($0, $1);
+ var $2 = 0, $3 = 0, $4 = 0, $5 = 0;
+ $2 = $1;
+ while (1) {
+ $1 = $3;
+ $5 = $4;
+ if ($0 | $2) {
+ $1 = $0;
+ $0 = $0 - 1 & $0;
+ $2 = $2 - ($1 >>> 0 < 1) & $2;
+ $3 = $3 + 1 | 0;
+ $4 = $3 >>> 0 < 1 ? $4 + 1 | 0 : $4;
+ continue;
+ }
+ break;
+ };
+ i64toi32_i32$HIGH_BITS = $5;
+ $0 = $1;
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
return $0;
}
function legalstub$ctz64($0, $1) {
- $0 = __wasm_ctz_i64($0, $1);
- setTempRet0(i64toi32_i32$HIGH_BITS | 0);
- return $0;
- }
-
- function __wasm_ctz_i64($0, $1) {
- var $2 = 0, $3 = 0;
- if ($0 | $1) {
- $2 = $1 - 1 | 0;
- $3 = $0 - 1 | 0;
- $2 = ($3 | 0) != -1 ? $2 + 1 | 0 : $2;
- $3 = Math_clz32($0 ^ $3) + 32 | 0;
- $0 = Math_clz32($1 ^ $2);
- $0 = ($0 | 0) == 32 ? $3 : $0;
- $1 = 63 - $0 | 0;
- i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0;
- return $1;
- }
- i64toi32_i32$HIGH_BITS = 0;
- return 64;
- }
-
- function __wasm_popcnt_i64($0, $1) {
var $2 = 0, $3 = 0, $4 = 0, $5 = 0;
- while (1) {
- $5 = $4;
- $2 = $3;
+ __inlined_func$__wasm_ctz_i64 : {
if ($0 | $1) {
- $2 = $0;
- $0 = $2 - 1 & $2;
- $1 = $1 - ($2 >>> 0 < 1) & $1;
- $2 = $4 + 1 | 0;
- $3 = $2 >>> 0 < 1 ? $3 + 1 | 0 : $3;
+ $2 = $1 - 1 | 0;
+ $3 = $2 + 1 | 0;
$4 = $2;
- continue;
+ $2 = $0 - 1 | 0;
+ $5 = Math_clz32($0 ^ $2) + 32 | 0;
+ $0 = Math_clz32($1 ^ (($2 | 0) != -1 ? $3 : $4));
+ $0 = ($0 | 0) == 32 ? $5 : $0;
+ $1 = 63 - $0 | 0;
+ i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0;
+ $0 = $1;
+ break __inlined_func$__wasm_ctz_i64;
}
- break;
- };
- i64toi32_i32$HIGH_BITS = $2;
- return $5;
+ i64toi32_i32$HIGH_BITS = 0;
+ $0 = 64;
+ }
+ setTempRet0(i64toi32_i32$HIGH_BITS | 0);
+ return $0;
}
return {
diff --git a/test/wasm2js/i64-rotate.2asm.js.opt b/test/wasm2js/i64-rotate.2asm.js.opt
index b74f97053..ecffd160a 100644
--- a/test/wasm2js/i64-rotate.2asm.js.opt
+++ b/test/wasm2js/i64-rotate.2asm.js.opt
@@ -15,104 +15,100 @@ function asmFunc(env) {
var infinity = Infinity;
var i64toi32_i32$HIGH_BITS = 0;
function legalstub$1($0, $1, $2, $3, $4, $5) {
- return (__wasm_rotl_i64($0, $1, $2) | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0);
- }
-
- function legalstub$2($0, $1, $2, $3, $4, $5) {
- return (__wasm_rotr_i64($0, $1, $2) | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0);
- }
-
- function __wasm_rotl_i64($0, $1, $2) {
- var $3 = 0, $4 = 0, $5 = 0, $6 = 0;
- $6 = $2 & 63;
- $5 = $6;
- $3 = $5 & 31;
- if ($5 >>> 0 >= 32) {
- $3 = -1 >>> $3 | 0
+ var $6 = 0, $7 = 0, $8 = 0;
+ $3 = $0;
+ $8 = $2 & 63;
+ $6 = $8;
+ $0 = $6 & 31;
+ if ($6 >>> 0 >= 32) {
+ $0 = -1 >>> $0 | 0
} else {
- $4 = -1 >>> $3 | 0;
- $3 = (1 << $3) - 1 << 32 - $3 | -1 >>> $3;
+ $7 = -1 >>> $0 | 0;
+ $0 = (1 << $0) - 1 << 32 - $0 | -1 >>> $0;
}
- $5 = $3 & $0;
- $3 = $1 & $4;
- $4 = $6 & 31;
- if ($6 >>> 0 >= 32) {
- $3 = $5 << $4;
- $6 = 0;
+ $6 = $0 & $3;
+ $0 = $1 & $7;
+ $7 = $8 & 31;
+ if ($8 >>> 0 >= 32) {
+ $0 = $6 << $7;
+ $8 = 0;
} else {
- $3 = (1 << $4) - 1 & $5 >>> 32 - $4 | $3 << $4;
- $6 = $5 << $4;
+ $0 = (1 << $7) - 1 & $6 >>> 32 - $7 | $0 << $7;
+ $8 = $6 << $7;
}
- $5 = $3;
- $4 = 0 - $2 & 63;
- $3 = $4;
- $2 = $3 & 31;
- if ($3 >>> 0 >= 32) {
- $3 = -1 << $2;
+ $7 = $0;
+ $6 = 0 - $2 & 63;
+ $0 = $6;
+ $2 = $0 & 31;
+ if ($0 >>> 0 >= 32) {
+ $0 = -1 << $2;
$2 = 0;
} else {
- $3 = (1 << $2) - 1 & -1 >>> 32 - $2 | -1 << $2;
+ $0 = (1 << $2) - 1 & -1 >>> 32 - $2 | -1 << $2;
$2 = -1 << $2;
}
- $0 = $2 & $0;
- $3 = $1 & $3;
- $1 = $4 & 31;
- if ($4 >>> 0 >= 32) {
+ $3 = $2 & $3;
+ $1 = $0 & $1;
+ $0 = $6 & 31;
+ if ($6 >>> 0 >= 32) {
$2 = 0;
- $0 = $3 >>> $1 | 0;
+ $0 = $1 >>> $0 | 0;
} else {
- $2 = $3 >>> $1 | 0;
- $0 = ((1 << $1) - 1 & $3) << 32 - $1 | $0 >>> $1;
+ $2 = $1 >>> $0 | 0;
+ $0 = ((1 << $0) - 1 & $1) << 32 - $0 | $3 >>> $0;
}
- $0 = $0 | $6;
- i64toi32_i32$HIGH_BITS = $2 | $5;
- return $0;
+ $0 = $0 | $8;
+ i64toi32_i32$HIGH_BITS = $2 | $7;
+ return ($0 | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0);
}
- function __wasm_rotr_i64($0, $1, $2) {
- var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
- $6 = $2 & 63;
- $3 = $6 & 31;
- if ($6 >>> 0 >= 32) {
- $4 = -1 << $3;
- $7 = 0;
+ function legalstub$2($0, $1, $2, $3, $4, $5) {
+ var $6 = 0, $7 = 0, $8 = 0, $9 = 0;
+ $3 = $0;
+ $8 = $2 & 63;
+ $0 = $8;
+ $6 = $0 & 31;
+ if ($0 >>> 0 >= 32) {
+ $0 = -1 << $6;
+ $6 = 0;
} else {
- $4 = (1 << $3) - 1 & -1 >>> 32 - $3 | -1 << $3;
- $7 = -1 << $3;
+ $0 = (1 << $6) - 1 & -1 >>> 32 - $6 | -1 << $6;
+ $6 = -1 << $6;
}
- $7 = $7 & $0;
- $3 = $1 & $4;
- $5 = $6 & 31;
- if ($6 >>> 0 >= 32) {
- $4 = 0;
- $6 = $3 >>> $5 | 0;
+ $9 = $6 & $3;
+ $7 = $0 & $1;
+ $6 = $8 & 31;
+ if ($8 >>> 0 >= 32) {
+ $0 = 0;
+ $8 = $7 >>> $6 | 0;
} else {
- $4 = $3 >>> $5 | 0;
- $6 = ((1 << $5) - 1 & $3) << 32 - $5 | $7 >>> $5;
+ $0 = $7 >>> $6 | 0;
+ $8 = ((1 << $6) - 1 & $7) << 32 - $6 | $9 >>> $6;
}
- $7 = $4;
- $3 = 0 - $2 & 63;
- $5 = $3 & 31;
- if ($3 >>> 0 >= 32) {
- $4 = 0;
- $2 = -1 >>> $5 | 0;
+ $6 = $0;
+ $7 = 0 - $2 & 63;
+ $0 = $7;
+ $2 = $0 & 31;
+ if ($0 >>> 0 >= 32) {
+ $0 = 0;
+ $2 = -1 >>> $2 | 0;
} else {
- $4 = -1 >>> $5 | 0;
- $2 = (1 << $5) - 1 << 32 - $5 | -1 >>> $5;
+ $0 = -1 >>> $2 | 0;
+ $2 = (1 << $2) - 1 << 32 - $2 | -1 >>> $2;
}
- $0 = $2 & $0;
- $1 = $1 & $4;
- $4 = $3 & 31;
- if ($3 >>> 0 >= 32) {
- $2 = $0 << $4;
+ $2 = $2 & $3;
+ $1 = $0 & $1;
+ $0 = $7 & 31;
+ if ($7 >>> 0 >= 32) {
+ $1 = $2 << $0;
$0 = 0;
} else {
- $2 = (1 << $4) - 1 & $0 >>> 32 - $4 | $1 << $4;
- $0 = $0 << $4;
+ $1 = (1 << $0) - 1 & $2 >>> 32 - $0 | $1 << $0;
+ $0 = $2 << $0;
}
- $0 = $0 | $6;
- i64toi32_i32$HIGH_BITS = $2 | $7;
- return $0;
+ $0 = $0 | $8;
+ i64toi32_i32$HIGH_BITS = $1 | $6;
+ return ($0 | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0);
}
return {
diff --git a/test/wasm2js/i64-shifts.2asm.js.opt b/test/wasm2js/i64-shifts.2asm.js.opt
index 488263496..3bc6cac10 100644
--- a/test/wasm2js/i64-shifts.2asm.js.opt
+++ b/test/wasm2js/i64-shifts.2asm.js.opt
@@ -13,48 +13,28 @@ function asmFunc(env) {
var abort = env.abort;
var nan = NaN;
var infinity = Infinity;
- function $1($0, $1_1, $2_1, $3, $4) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- $2_1 = $2_1 | 0;
- $3 = $3 | 0;
- $4 = $4 | 0;
- var $5 = 0;
- $5 = $2_1 & 31;
- if (($2_1 & 63) >>> 0 >= 32) {
- $1_1 = $0 << $5;
+ function legalstub$1($0, $1, $2, $3, $4, $5) {
+ $3 = $2 & 31;
+ if (($2 & 63) >>> 0 >= 32) {
+ $1 = $0 << $3;
$0 = 0;
} else {
- $1_1 = (1 << $5) - 1 & $0 >>> 32 - $5 | $1_1 << $5;
- $0 = $0 << $5;
+ $1 = (1 << $3) - 1 & $0 >>> 32 - $3 | $1 << $3;
+ $0 = $0 << $3;
}
- return ($0 | 0) == ($3 | 0) & ($1_1 | 0) == ($4 | 0);
+ return ($0 | 0) == ($4 | 0) & ($1 | 0) == ($5 | 0);
}
- function $2($0, $1_1, $2_1, $3, $4) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- $2_1 = $2_1 | 0;
- $3 = $3 | 0;
- $4 = $4 | 0;
- var $5 = 0;
- $5 = $2_1 & 31;
- if (($2_1 & 63) >>> 0 >= 32) {
- $2_1 = $1_1 >> 31;
- $0 = $1_1 >> $5;
+ function legalstub$2($0, $1, $2, $3, $4, $5) {
+ $3 = $2 & 31;
+ if (($2 & 63) >>> 0 >= 32) {
+ $2 = $1 >> 31;
+ $0 = $1 >> $3;
} else {
- $2_1 = $1_1 >> $5;
- $0 = ((1 << $5) - 1 & $1_1) << 32 - $5 | $0 >>> $5;
+ $2 = $1 >> $3;
+ $0 = ((1 << $3) - 1 & $1) << 32 - $3 | $0 >>> $3;
}
- return ($0 | 0) == ($3 | 0) & ($2_1 | 0) == ($4 | 0);
- }
-
- function legalstub$1($0, $1_1, $2_1, $3, $4, $5) {
- return $1($0, $1_1, $2_1, $4, $5);
- }
-
- function legalstub$2($0, $1_1, $2_1, $3, $4, $5) {
- return $2($0, $1_1, $2_1, $4, $5);
+ return ($0 | 0) == ($4 | 0) & ($2 | 0) == ($5 | 0);
}
return {
diff --git a/test/wasm2js/reinterpret.2asm.js.opt b/test/wasm2js/reinterpret.2asm.js.opt
index ffb64c1fa..cc5d4e984 100644
--- a/test/wasm2js/reinterpret.2asm.js.opt
+++ b/test/wasm2js/reinterpret.2asm.js.opt
@@ -48,19 +48,13 @@ function asmFunc(env) {
return ((wasm2js_scratch_store_f32((wasm2js_scratch_store_i32(2, $0), wasm2js_scratch_load_f32())), wasm2js_scratch_load_i32(2)) | 0) == ($0 | 0) | 0;
}
- function $2($0, $1_1) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- var $2_1 = 0;
+ function legalstub$2($0, $1_1) {
+ var $2 = 0;
wasm2js_scratch_store_i32(0, $0 | 0);
wasm2js_scratch_store_i32(1, $1_1 | 0);
wasm2js_scratch_store_f64(+wasm2js_scratch_load_f64());
- $2_1 = wasm2js_scratch_load_i32(1) | 0;
- return (wasm2js_scratch_load_i32(0) | 0) == ($0 | 0) & ($1_1 | 0) == ($2_1 | 0);
- }
-
- function legalstub$2($0, $1_1) {
- return $2($0, $1_1);
+ $2 = wasm2js_scratch_load_i32(1) | 0;
+ return (wasm2js_scratch_load_i32(0) | 0) == ($0 | 0) & ($1_1 | 0) == ($2 | 0);
}
return {
diff --git a/test/wasm2js/stack-modified.2asm.js.opt b/test/wasm2js/stack-modified.2asm.js.opt
index 60758cce0..f08671743 100644
--- a/test/wasm2js/stack-modified.2asm.js.opt
+++ b/test/wasm2js/stack-modified.2asm.js.opt
@@ -16,47 +16,34 @@ function asmFunc(env) {
var infinity = Infinity;
var setTempRet0 = env.setTempRet0;
var i64toi32_i32$HIGH_BITS = 0;
- function $0($0_1, $1) {
- $0_1 = $0_1 | 0;
- $1 = $1 | 0;
- var $2 = 0, $3 = 0, $4 = 0;
- $2 = $1;
- $3 = 1;
+ function legalstub$0($0, $1) {
+ var $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
+ $4 = $1;
+ $2 = 1;
while (1) {
- if ($0_1 | $2) {
- $3 = _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE($0_1, $2, $3, $4);
- $4 = i64toi32_i32$HIGH_BITS;
- $1 = $0_1;
- $0_1 = $0_1 - 1 | 0;
- $2 = $2 - ($1 >>> 0 < 1) | 0;
+ if ($0 | $4) {
+ $1 = $2 >>> 16 | 0;
+ $3 = $0 >>> 16 | 0;
+ $9 = Math_imul($1, $3);
+ $5 = $2 & 65535;
+ $6 = $0 & 65535;
+ $7 = Math_imul($5, $6);
+ $3 = ($7 >>> 16 | 0) + Math_imul($3, $5) | 0;
+ $1 = ($3 & 65535) + Math_imul($1, $6) | 0;
+ i64toi32_i32$HIGH_BITS = (Math_imul($2, $4) + $9 | 0) + Math_imul($0, $8) + ($3 >>> 16) + ($1 >>> 16) | 0;
+ $2 = $7 & 65535 | $1 << 16;
+ $8 = i64toi32_i32$HIGH_BITS;
+ $1 = $0;
+ $0 = $1 - 1 | 0;
+ $4 = $4 - ($1 >>> 0 < 1) | 0;
continue;
}
break;
};
- i64toi32_i32$HIGH_BITS = $4;
- return $3 | 0;
- }
-
- function legalstub$0($0_1, $1) {
- $0_1 = $0($0_1, $1);
+ i64toi32_i32$HIGH_BITS = $8;
+ $0 = $2;
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
- return $0_1;
- }
-
- function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE($0_1, $1, $2, $3) {
- var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
- $4 = $2 >>> 16 | 0;
- $5 = $0_1 >>> 16 | 0;
- $9 = Math_imul($4, $5);
- $6 = $2 & 65535;
- $7 = $0_1 & 65535;
- $8 = Math_imul($6, $7);
- $5 = ($8 >>> 16 | 0) + Math_imul($5, $6) | 0;
- $4 = ($5 & 65535) + Math_imul($4, $7) | 0;
- $0_1 = (Math_imul($1, $2) + $9 | 0) + Math_imul($0_1, $3) + ($5 >>> 16) + ($4 >>> 16) | 0;
- $1 = $8 & 65535 | $4 << 16;
- i64toi32_i32$HIGH_BITS = $0_1;
- return $1;
+ return $0;
}
return {
diff --git a/test/wasm2js/unaligned.2asm.js.opt b/test/wasm2js/unaligned.2asm.js.opt
index e5005fef5..1f0fd6f4c 100644
--- a/test/wasm2js/unaligned.2asm.js.opt
+++ b/test/wasm2js/unaligned.2asm.js.opt
@@ -56,11 +56,6 @@ function asmFunc(env) {
return HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24);
}
- function $1() {
- i64toi32_i32$HIGH_BITS = HEAPU8[4] | HEAPU8[5] << 8 | (HEAPU8[6] << 16 | HEAPU8[7] << 24);
- return HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24);
- }
-
function $2() {
return Math_fround((wasm2js_scratch_store_i32(2, HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24)), wasm2js_scratch_load_f32()));
}
@@ -92,14 +87,14 @@ function asmFunc(env) {
}
function $7() {
- var $0_1 = 0, $1_1 = 0;
+ var $0_1 = 0, $1 = 0;
wasm2js_scratch_store_f64(0.0);
$0_1 = wasm2js_scratch_load_i32(1) | 0;
- $1_1 = wasm2js_scratch_load_i32(0) | 0;
- HEAP8[0] = $1_1;
- HEAP8[1] = $1_1 >>> 8;
- HEAP8[2] = $1_1 >>> 16;
- HEAP8[3] = $1_1 >>> 24;
+ $1 = wasm2js_scratch_load_i32(0) | 0;
+ HEAP8[0] = $1;
+ HEAP8[1] = $1 >>> 8;
+ HEAP8[2] = $1 >>> 16;
+ HEAP8[3] = $1 >>> 24;
HEAP8[4] = $0_1;
HEAP8[5] = $0_1 >>> 8;
HEAP8[6] = $0_1 >>> 16;
@@ -108,7 +103,8 @@ function asmFunc(env) {
function legalstub$1() {
var $0_1 = 0;
- $0_1 = $1();
+ i64toi32_i32$HIGH_BITS = HEAPU8[4] | HEAPU8[5] << 8 | (HEAPU8[6] << 16 | HEAPU8[7] << 24);
+ $0_1 = HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24);
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
return $0_1;
}
diff --git a/test/wasm2js/unary-ops.2asm.js.opt b/test/wasm2js/unary-ops.2asm.js.opt
index cb37b0099..027c9164d 100644
--- a/test/wasm2js/unary-ops.2asm.js.opt
+++ b/test/wasm2js/unary-ops.2asm.js.opt
@@ -16,7 +16,17 @@ function asmFunc(env) {
var i64toi32_i32$HIGH_BITS = 0;
function $1($0) {
$0 = $0 | 0;
- return __wasm_popcnt_i32($0) | 0;
+ var $1_1 = 0, $2 = 0;
+ while (1) {
+ $2 = $1_1;
+ if ($0) {
+ $0 = $0 - 1 & $0;
+ $1_1 = $1_1 + 1 | 0;
+ continue;
+ }
+ break;
+ };
+ return $2 | 0;
}
function $6($0) {
@@ -34,19 +44,25 @@ function asmFunc(env) {
return $0 | 0;
}
- function $8($0, $1_1, $2, $3) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- $2 = $2 | 0;
- $3 = $3 | 0;
- var $4 = 0;
- $4 = Math_clz32($0) + 32 | 0;
- $0 = Math_clz32($1_1);
- return !$3 & ($2 | 0) == ((($0 | 0) == 32 ? $4 : $0) | 0);
- }
-
function legalstub$2($0, $1_1, $2, $3) {
- return (__wasm_popcnt_i64($0, $1_1) | 0) == ($2 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0);
+ var $4 = 0, $5 = 0, $6_1 = 0, $7_1 = 0;
+ $7_1 = $2;
+ $4 = $1_1;
+ while (1) {
+ $2 = $5;
+ $1_1 = $6_1;
+ if ($0 | $4) {
+ $1_1 = $0;
+ $0 = $1_1 - 1 & $1_1;
+ $4 = $4 - ($1_1 >>> 0 < 1) & $4;
+ $5 = $5 + 1 | 0;
+ $6_1 = $5 >>> 0 < 1 ? $6_1 + 1 | 0 : $6_1;
+ continue;
+ }
+ break;
+ };
+ i64toi32_i32$HIGH_BITS = $1_1;
+ return ($2 | 0) == ($7_1 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0);
}
function legalstub$3($0, $1_1, $2) {
@@ -62,62 +78,31 @@ function asmFunc(env) {
}
function legalstub$8($0, $1_1, $2, $3) {
- return $8($0, $1_1, $2, $3);
+ var $4 = 0;
+ $4 = Math_clz32($0) + 32 | 0;
+ $0 = Math_clz32($1_1);
+ return !$3 & ($2 | 0) == ((($0 | 0) == 32 ? $4 : $0) | 0);
}
function legalstub$9($0, $1_1, $2, $3) {
- return (__wasm_ctz_i64($0, $1_1) | 0) == ($2 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0);
- }
-
- function __wasm_ctz_i64($0, $1_1) {
- var $2 = 0, $3 = 0;
- if ($0 | $1_1) {
- $2 = $1_1 - 1 | 0;
- $3 = $0 - 1 | 0;
- $2 = ($3 | 0) != -1 ? $2 + 1 | 0 : $2;
- $3 = Math_clz32($0 ^ $3) + 32 | 0;
- $0 = Math_clz32($1_1 ^ $2);
- $0 = ($0 | 0) == 32 ? $3 : $0;
- $1_1 = 63 - $0 | 0;
- i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0;
- return $1_1;
- }
- i64toi32_i32$HIGH_BITS = 0;
- return 64;
- }
-
- function __wasm_popcnt_i32($0) {
- var $1_1 = 0, $2 = 0;
- while (1) {
- $2 = $1_1;
- if ($0) {
- $0 = $0 - 1 & $0;
- $1_1 = $1_1 + 1 | 0;
- continue;
- }
- break;
- };
- return $2;
- }
-
- function __wasm_popcnt_i64($0, $1_1) {
- var $2 = 0, $3 = 0, $4 = 0, $5 = 0;
- while (1) {
- $5 = $4;
- $2 = $3;
+ var $4 = 0, $5 = 0, $6_1 = 0, $7_1 = 0;
+ __inlined_func$__wasm_ctz_i64 : {
if ($0 | $1_1) {
- $2 = $0;
- $0 = $2 - 1 & $2;
- $1_1 = $1_1 - ($2 >>> 0 < 1) & $1_1;
- $2 = $4 + 1 | 0;
- $3 = $2 >>> 0 < 1 ? $3 + 1 | 0 : $3;
- $4 = $2;
- continue;
+ $4 = $1_1 - 1 | 0;
+ $5 = $4 + 1 | 0;
+ $6_1 = $4;
+ $4 = $0 - 1 | 0;
+ $7_1 = Math_clz32($0 ^ $4) + 32 | 0;
+ $0 = Math_clz32($1_1 ^ (($4 | 0) != -1 ? $5 : $6_1));
+ $0 = ($0 | 0) == 32 ? $7_1 : $0;
+ $1_1 = 63 - $0 | 0;
+ i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0;
+ break __inlined_func$__wasm_ctz_i64;
}
- break;
- };
- i64toi32_i32$HIGH_BITS = $2;
- return $5;
+ i64toi32_i32$HIGH_BITS = 0;
+ $1_1 = 64;
+ }
+ return ($1_1 | 0) == ($2 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0);
}
return {