summaryrefslogtreecommitdiff
path: root/test/wasm2js
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2023-08-09 10:31:48 -0700
committerGitHub <noreply@github.com>2023-08-09 10:31:48 -0700
commitd0bdf202463323a0b9f3be95fe2c64765a84a4b7 (patch)
treec4142a82fe8d1fe2451745b5068cadae4e063af9 /test/wasm2js
parent0fc7b883d373924717ceccf71a6a759c97a8fb08 (diff)
downloadbinaryen-d0bdf202463323a0b9f3be95fe2c64765a84a4b7.tar.gz
binaryen-d0bdf202463323a0b9f3be95fe2c64765a84a4b7.tar.bz2
binaryen-d0bdf202463323a0b9f3be95fe2c64765a84a4b7.zip
LinearExecutionWalker: Optionally connect blocks for Br and BrOn (#5869)
Br and BrOn can consider the code before and after them connected if it might be reached (which is the case if the Br has a condition, which BrOn always has). The wasm2js changes may look a little odd as some of them have this: i64toi32_i32$1 = i64toi32_i32$2; i64toi32_i32$1 = i64toi32_i32$2; I looked into that and the reason is that those outputs are not optimized, and also even in unoptimized wasm2js we do run simplify-locals once (to try to reduce the downsides of flatten). As a result, this PR makes a difference there, and that difference can lead to such odd duplicated code after other operations. However, there are no changes to optimized wasm2js outputs, so there is no actual problem. Followup to #5860.
Diffstat (limited to 'test/wasm2js')
-rw-r--r--test/wasm2js/i64-ctz.2asm.js3
-rw-r--r--test/wasm2js/int_exprs.2asm.js84
-rw-r--r--test/wasm2js/left-to-right.2asm.js6
-rw-r--r--test/wasm2js/traps.2asm.js12
-rw-r--r--test/wasm2js/unary-ops.2asm.js3
5 files changed, 53 insertions, 55 deletions
diff --git a/test/wasm2js/i64-ctz.2asm.js b/test/wasm2js/i64-ctz.2asm.js
index 5bd8cfc9b..fc8c52a54 100644
--- a/test/wasm2js/i64-ctz.2asm.js
+++ b/test/wasm2js/i64-ctz.2asm.js
@@ -176,7 +176,7 @@ function asmFunc(imports) {
function __wasm_popcnt_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$2 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, var$1$hi = 0, var$1 = 0, $5 = 0, $5$hi = 0, $4 = 0, $9$hi = 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, var$1$hi = 0, var$1 = 0, $4 = 0, $5 = 0, $5$hi = 0, $9$hi = 0;
label$1 : {
label$2 : while (1) {
i64toi32_i32$0 = var$1$hi;
@@ -188,7 +188,6 @@ function asmFunc(imports) {
if ($4) {
break label$1
}
- i64toi32_i32$0 = $5$hi;
i64toi32_i32$0 = var$0$hi;
i64toi32_i32$2 = var$0;
i64toi32_i32$1 = 0;
diff --git a/test/wasm2js/int_exprs.2asm.js b/test/wasm2js/int_exprs.2asm.js
index 041e556b7..824e3313c 100644
--- a/test/wasm2js/int_exprs.2asm.js
+++ b/test/wasm2js/int_exprs.2asm.js
@@ -1154,8 +1154,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -1185,7 +1184,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -1886,8 +1886,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -1917,7 +1916,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -2582,8 +2582,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -2613,7 +2612,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -3378,8 +3378,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -3409,7 +3408,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -4064,8 +4064,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -4095,7 +4094,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -4694,8 +4694,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -4725,7 +4724,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -5392,8 +5392,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -5423,7 +5422,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -6108,8 +6108,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -6139,7 +6138,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -6824,8 +6824,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -6855,7 +6854,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -7540,8 +7540,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -7571,7 +7570,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -8236,8 +8236,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -8267,7 +8266,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -8934,8 +8934,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -8965,7 +8964,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -9632,8 +9632,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -9663,7 +9662,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -10304,8 +10304,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -10335,7 +10334,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
diff --git a/test/wasm2js/left-to-right.2asm.js b/test/wasm2js/left-to-right.2asm.js
index 5bb552f34..0ee715b2d 100644
--- a/test/wasm2js/left-to-right.2asm.js
+++ b/test/wasm2js/left-to-right.2asm.js
@@ -1621,8 +1621,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -1652,7 +1651,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
diff --git a/test/wasm2js/traps.2asm.js b/test/wasm2js/traps.2asm.js
index ee38b6055..f7a469ebe 100644
--- a/test/wasm2js/traps.2asm.js
+++ b/test/wasm2js/traps.2asm.js
@@ -305,8 +305,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -336,7 +335,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
@@ -1015,8 +1015,7 @@ function asmFunc(imports) {
if (!var$3) {
break label$11
}
- i64toi32_i32$1 = var$1$hi;
- i64toi32_i32$0 = var$1;
+ i64toi32_i32$0 = var$3;
i64toi32_i32$2 = 0;
i64toi32_i32$3 = 32;
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
@@ -1046,7 +1045,8 @@ function asmFunc(imports) {
}
i64toi32_i32$1 = var$0$hi;
var$2 = var$0;
- i64toi32_i32$1 = var$1$hi;
+ i64toi32_i32$1 = i64toi32_i32$2;
+ i64toi32_i32$1 = i64toi32_i32$2;
var$3 = var$1;
var$2 = (var$2 >>> 0) / (var$3 >>> 0) | 0;
i64toi32_i32$1 = 0;
diff --git a/test/wasm2js/unary-ops.2asm.js b/test/wasm2js/unary-ops.2asm.js
index 90b030e45..9adfe581b 100644
--- a/test/wasm2js/unary-ops.2asm.js
+++ b/test/wasm2js/unary-ops.2asm.js
@@ -452,7 +452,7 @@ function asmFunc(imports) {
function __wasm_popcnt_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$2 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, var$1$hi = 0, var$1 = 0, $5_1 = 0, $5$hi = 0, $4_1 = 0, $9$hi = 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$2 = 0, i64toi32_i32$5 = 0, i64toi32_i32$4 = 0, i64toi32_i32$3 = 0, i64toi32_i32$1 = 0, var$1$hi = 0, var$1 = 0, $4_1 = 0, $5_1 = 0, $5$hi = 0, $9$hi = 0;
label$1 : {
label$2 : while (1) {
i64toi32_i32$0 = var$1$hi;
@@ -464,7 +464,6 @@ function asmFunc(imports) {
if ($4_1) {
break label$1
}
- i64toi32_i32$0 = $5$hi;
i64toi32_i32$0 = var$0$hi;
i64toi32_i32$2 = var$0;
i64toi32_i32$1 = 0;