summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-04-06 15:37:24 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-04-06 15:37:24 -0700
commita3279d60a87539301186f0558231f726dc905cdc (patch)
tree75cebfc73fd2097bb89b2db6e4adb039a9c2f55b
parent265225f703a6d94dd20d42c322233b52d73f22f8 (diff)
downloadbinaryen-a3279d60a87539301186f0558231f726dc905cdc.tar.gz
binaryen-a3279d60a87539301186f0558231f726dc905cdc.tar.bz2
binaryen-a3279d60a87539301186f0558231f726dc905cdc.zip
optimize if-eqz
-rw-r--r--CMakeLists.txt2
-rwxr-xr-xbuild.sh2
-rw-r--r--src/asm2wasm.h1
-rw-r--r--src/binaryen-shell.cpp1
-rw-r--r--src/passes/OptimizeInstructions.cpp43
-rw-r--r--test/emcc_O2_hello_world.fromasm920
-rw-r--r--test/emcc_O2_hello_world.fromasm.imprecise920
-rw-r--r--test/memorygrowth.fromasm1710
-rw-r--r--test/memorygrowth.fromasm.imprecise1710
-rw-r--r--test/passes/optimize-instructions.txt23
-rw-r--r--test/passes/optimize-instructions.wast26
-rw-r--r--test/two_sides.fromasm16
-rw-r--r--test/two_sides.fromasm.imprecise16
13 files changed, 2509 insertions, 2881 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d434e221d..e0ee31f11 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -84,6 +84,7 @@ SET(binaryen-shell_SOURCES
src/passes/LowerIfElse.cpp
src/passes/MergeBlocks.cpp
src/passes/NameManager.cpp
+ src/passes/OptimizeInstructions.cpp
src/passes/PostEmscripten.cpp
src/passes/Print.cpp
src/passes/RemoveImports.cpp
@@ -104,6 +105,7 @@ SET(asm2wasm_SOURCES
src/asm2wasm-main.cpp
src/pass.cpp
src/passes/MergeBlocks.cpp
+ src/passes/OptimizeInstructions.cpp
src/passes/PostEmscripten.cpp
src/passes/Print.cpp
src/passes/RemoveUnusedBrs.cpp
diff --git a/build.sh b/build.sh
index 6a35eb597..38392e6e2 100755
--- a/build.sh
+++ b/build.sh
@@ -11,7 +11,7 @@ make -j
#echo "building s2wasm"
#g++ -O2 -std=c++11 src/s2wasm-main.cpp src/support/command-line.cpp src/support/file.cpp src/support/colors.cpp -Isrc/ -o bin/s2wasm
echo "building wasm.js"
-em++ -std=c++11 src/wasm-js.cpp src/pass.cpp src/passes/MergeBlocks.cpp src/passes/Print.cpp src/passes/RemoveUnusedBrs.cpp src/passes/RemoveUnusedNames.cpp src/passes/PostEmscripten.cpp src/passes/SimplifyLocals.cpp src/passes/ReorderLocals.cpp src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp src/support/colors.cpp src/support/safe_integer.cpp src/support/bits.cpp -Isrc/ -o bin/wasm.js -s MODULARIZE=1 -s 'EXPORT_NAME="WasmJS"' --memory-init-file 0 -Oz -s ALLOW_MEMORY_GROWTH=1 -profiling -s DEMANGLE_SUPPORT=1 #-DWASM_JS_DEBUG -DWASM_INTERPRETER_DEBUG=2
+em++ -std=c++11 src/wasm-js.cpp src/pass.cpp src/passes/MergeBlocks.cpp src/passes/Print.cpp src/passes/OptimizeInstructions.cpp src/passes/RemoveUnusedBrs.cpp src/passes/RemoveUnusedNames.cpp src/passes/PostEmscripten.cpp src/passes/SimplifyLocals.cpp src/passes/ReorderLocals.cpp src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp src/support/colors.cpp src/support/safe_integer.cpp src/support/bits.cpp -Isrc/ -o bin/wasm.js -s MODULARIZE=1 -s 'EXPORT_NAME="WasmJS"' --memory-init-file 0 -Oz -s ALLOW_MEMORY_GROWTH=1 -profiling -s DEMANGLE_SUPPORT=1 #-DWASM_JS_DEBUG -DWASM_INTERPRETER_DEBUG=2
echo "building binaryen.js"
python ~/Dev/emscripten/tools/webidl_binder.py src/js/binaryen.idl glue
em++ -std=c++11 src/binaryen-js.cpp src/pass.cpp src/passes/MergeBlocks.cpp src/passes/Print.cpp src/passes/RemoveUnusedBrs.cpp src/passes/RemoveUnusedNames.cpp src/passes/PostEmscripten.cpp src/passes/SimplifyLocals.cpp src/passes/ReorderLocals.cpp src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp src/support/colors.cpp src/support/safe_integer.cpp src/support/bits.cpp -Isrc/ -o bin/binaryen.js -s MODULARIZE=1 -s 'EXPORT_NAME="Binaryen"' --memory-init-file 0 -Oz -s ALLOW_MEMORY_GROWTH=1 -profiling -s DEMANGLE_SUPPORT=1 -s INVOKE_RUN=0 --post-js glue.js
diff --git a/src/asm2wasm.h b/src/asm2wasm.h
index e4bfdc341..2f18b98f1 100644
--- a/src/asm2wasm.h
+++ b/src/asm2wasm.h
@@ -1603,6 +1603,7 @@ void Asm2WasmBuilder::optimize() {
passRunner.add("remove-unused-brs");
passRunner.add("remove-unused-names");
passRunner.add("merge-blocks");
+ passRunner.add("optimize-instructions");
passRunner.add("simplify-locals");
passRunner.add("reorder-locals");
if (maxGlobal < 1024) {
diff --git a/src/binaryen-shell.cpp b/src/binaryen-shell.cpp
index 72fad992b..14cc66406 100644
--- a/src/binaryen-shell.cpp
+++ b/src/binaryen-shell.cpp
@@ -176,6 +176,7 @@ int main(int argc, const char* argv[]) {
static const char* default_passes[] = {"remove-unused-brs",
"remove-unused-names", "merge-blocks",
+ "optimize-instructions",
"simplify-locals", "reorder-locals"};
Options options("binaryen-shell", "Execute .wast files");
diff --git a/src/passes/OptimizeInstructions.cpp b/src/passes/OptimizeInstructions.cpp
new file mode 100644
index 000000000..638977353
--- /dev/null
+++ b/src/passes/OptimizeInstructions.cpp
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2016 WebAssembly Community Group participants
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Optimize combinations of instructions
+//
+
+#include <algorithm>
+
+#include <wasm.h>
+#include <pass.h>
+
+namespace wasm {
+
+struct OptimizeInstructions : public WalkerPass<WasmWalker<OptimizeInstructions>> {
+ void visitIf(If* curr) {
+ // flip branches to get rid of an i32.eqz
+ if (curr->ifFalse) {
+ auto condition = curr->condition->dyn_cast<Unary>();
+ if (condition && condition->op == EqZ && condition->value->type == i32) {
+ curr->condition = condition->value;
+ std::swap(curr->ifTrue, curr->ifFalse);
+ }
+ }
+ }
+};
+
+static RegisterPass<OptimizeInstructions> registerPass("optimize-instructions", "optimizes instruction combinations");
+
+} // namespace wasm
diff --git a/test/emcc_O2_hello_world.fromasm b/test/emcc_O2_hello_world.fromasm
index f0a74eb1e..329833970 100644
--- a/test/emcc_O2_hello_world.fromasm
+++ b/test/emcc_O2_hello_world.fromasm
@@ -862,7 +862,8 @@
)
)
(if
- (i32.eqz
+ (get_local $i10)
+ (set_local $i23
(get_local $i10)
)
(block
@@ -872,7 +873,8 @@
)
)
(if
- (i32.eqz
+ (get_local $i15)
+ (set_local $i23
(get_local $i15)
)
(block
@@ -884,14 +886,8 @@
)
(br $while-out$6)
)
- (set_local $i23
- (get_local $i15)
- )
)
)
- (set_local $i23
- (get_local $i10)
- )
)
(set_local $i10
(i32.sub
@@ -983,8 +979,14 @@
)
)
(if
- (i32.eqz
- (get_local $i17)
+ (get_local $i17)
+ (block
+ (set_local $i25
+ (get_local $i17)
+ )
+ (set_local $i26
+ (get_local $i14)
+ )
)
(block
(set_local $i15
@@ -999,15 +1001,7 @@
)
)
(if
- (i32.eqz
- (get_local $i10)
- )
- (block
- (set_local $i24
- (i32.const 0)
- )
- (br $do-once$8)
- )
+ (get_local $i10)
(block
(set_local $i25
(get_local $i10)
@@ -1016,14 +1010,12 @@
(get_local $i15)
)
)
- )
- )
- (block
- (set_local $i25
- (get_local $i17)
- )
- (set_local $i26
- (get_local $i14)
+ (block
+ (set_local $i24
+ (i32.const 0)
+ )
+ (br $do-once$8)
+ )
)
)
)
@@ -1063,8 +1055,14 @@
)
)
(if
- (i32.eqz
- (get_local $i17)
+ (get_local $i17)
+ (block
+ (set_local $i25
+ (get_local $i17)
+ )
+ (set_local $i26
+ (get_local $i14)
+ )
)
(block
(set_local $i27
@@ -1075,14 +1073,6 @@
)
(br $while-out$10)
)
- (block
- (set_local $i25
- (get_local $i17)
- )
- (set_local $i26
- (get_local $i14)
- )
- )
)
(br $while-in$11)
)
@@ -1688,23 +1678,7 @@
)
(block $label$break$L123
(if
- (i32.eqz
- (get_local $i4)
- )
- (block
- (set_local $i33
- (get_local $i14)
- )
- (set_local $i34
- (i32.const 0)
- )
- (set_local $i35
- (i32.const 0)
- )
- (set_local $i36
- (i32.const 86)
- )
- )
+ (get_local $i4)
(block
(set_local $i12
(get_local $i14)
@@ -1883,6 +1857,20 @@
(br $while-in$18)
)
)
+ (block
+ (set_local $i33
+ (get_local $i14)
+ )
+ (set_local $i34
+ (i32.const 0)
+ )
+ (set_local $i35
+ (i32.const 0)
+ )
+ (set_local $i36
+ (i32.const 86)
+ )
+ )
)
)
(if
@@ -2045,17 +2033,7 @@
)
)
(if
- (i32.eqz
- (get_local $i42)
- )
- (block
- (set_local $i43
- (get_local $i33)
- )
- (set_local $i44
- (get_local $i35)
- )
- )
+ (get_local $i42)
(block
(set_local $i37
(get_local $i33)
@@ -2070,6 +2048,14 @@
(i32.const 90)
)
)
+ (block
+ (set_local $i43
+ (get_local $i33)
+ )
+ (set_local $i44
+ (get_local $i35)
+ )
+ )
)
)
)
@@ -2142,28 +2128,26 @@
)
)
(if
- (i32.eqz
- (get_local $i38)
- )
+ (get_local $i38)
(block
- (set_local $i43
+ (set_local $i37
(get_local $i3)
)
- (set_local $i44
+ (set_local $i39
(get_local $i8)
)
- (br $while-out$19)
+ (set_local $i36
+ (i32.const 90)
+ )
)
(block
- (set_local $i37
+ (set_local $i43
(get_local $i3)
)
- (set_local $i39
+ (set_local $i44
(get_local $i8)
)
- (set_local $i36
- (i32.const 90)
- )
+ (br $while-out$19)
)
)
(br $while-in$20)
@@ -2241,8 +2225,14 @@
)
)
(if
- (i32.eqz
- (get_local $i14)
+ (get_local $i14)
+ (block
+ (set_local $i46
+ (get_local $i14)
+ )
+ (set_local $i47
+ (get_local $i2)
+ )
)
(block
(set_local $i4
@@ -2257,15 +2247,7 @@
)
)
(if
- (i32.eqz
- (get_local $i10)
- )
- (block
- (set_local $i45
- (i32.const 0)
- )
- (br $do-once$21)
- )
+ (get_local $i10)
(block
(set_local $i46
(get_local $i10)
@@ -2274,14 +2256,12 @@
(get_local $i4)
)
)
- )
- )
- (block
- (set_local $i46
- (get_local $i14)
- )
- (set_local $i47
- (get_local $i2)
+ (block
+ (set_local $i45
+ (i32.const 0)
+ )
+ (br $do-once$21)
+ )
)
)
)
@@ -2321,8 +2301,14 @@
)
)
(if
- (i32.eqz
- (get_local $i14)
+ (get_local $i14)
+ (block
+ (set_local $i46
+ (get_local $i14)
+ )
+ (set_local $i47
+ (get_local $i2)
+ )
)
(block
(set_local $i48
@@ -2333,14 +2319,6 @@
)
(br $while-out$23)
)
- (block
- (set_local $i46
- (get_local $i14)
- )
- (set_local $i47
- (get_local $i2)
- )
- )
)
(br $while-in$24)
)
@@ -2974,8 +2952,17 @@
)
)
(if
- (i32.eqz
- (get_local $i2)
+ (get_local $i2)
+ (block
+ (set_local $i4
+ (i32.shl
+ (get_local $i4)
+ (i32.const 1)
+ )
+ )
+ (set_local $i7
+ (get_local $i2)
+ )
)
(block
(set_local $i54
@@ -2989,17 +2976,6 @@
)
(br $while-out$31)
)
- (block
- (set_local $i4
- (i32.shl
- (get_local $i4)
- (i32.const 1)
- )
- )
- (set_local $i7
- (get_local $i2)
- )
- )
)
(br $while-in$32)
)
@@ -3345,15 +3321,14 @@
)
)
(if
- (i32.eqz
- (i32.and
- (i32.add
- (get_local $i53)
- (i32.const -1)
- )
+ (i32.and
+ (i32.add
(get_local $i53)
+ (i32.const -1)
)
+ (get_local $i53)
)
+ (call_import $_abort)
(block
(i32.store
(i32.const 656)
@@ -3393,7 +3368,6 @@
)
(br $do-once$33)
)
- (call_import $_abort)
)
)
)
@@ -3494,13 +3468,14 @@
)
(block $label$break$L257
(if
- (i32.eqz
- (i32.and
- (i32.load
- (i32.const 620)
- )
- (i32.const 4)
+ (i32.and
+ (i32.load
+ (i32.const 620)
)
+ (i32.const 4)
+ )
+ (set_local $i36
+ (i32.const 190)
)
(block
(set_local $i52
@@ -3682,14 +3657,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $i45)
- (get_local $i5)
- )
- )
- (set_local $i62
- (get_local $i43)
+ (i32.and
+ (get_local $i45)
+ (get_local $i5)
)
(set_local $i62
(i32.add
@@ -3709,6 +3679,9 @@
)
)
)
+ (set_local $i62
+ (get_local $i43)
+ )
)
(set_local $i50
(i32.load
@@ -3918,9 +3891,6 @@
(i32.const 190)
)
)
- (set_local $i36
- (i32.const 190)
- )
)
)
(if
@@ -4282,13 +4252,14 @@
(i32.const 211)
)
(if
- (i32.eqz
- (i32.and
- (i32.load offset=12
- (get_local $i70)
- )
- (i32.const 8)
+ (i32.and
+ (i32.load offset=12
+ (get_local $i70)
)
+ (i32.const 8)
+ )
+ (set_local $i71
+ (i32.const 624)
)
(block
(i32.store
@@ -4504,8 +4475,14 @@
)
)
(if
- (i32.eqz
- (get_local $i52)
+ (get_local $i52)
+ (block
+ (set_local $i73
+ (get_local $i52)
+ )
+ (set_local $i74
+ (get_local $i5)
+ )
)
(block
(set_local $i50
@@ -4514,15 +4491,7 @@
)
)
(if
- (i32.eqz
- (get_local $i50)
- )
- (block
- (set_local $i72
- (i32.const 0)
- )
- (br $do-once$53)
- )
+ (get_local $i50)
(block
(set_local $i73
(get_local $i50)
@@ -4531,14 +4500,12 @@
(get_local $i45)
)
)
- )
- )
- (block
- (set_local $i73
- (get_local $i52)
- )
- (set_local $i74
- (get_local $i5)
+ (block
+ (set_local $i72
+ (i32.const 0)
+ )
+ (br $do-once$53)
+ )
)
)
)
@@ -4578,8 +4545,14 @@
)
)
(if
- (i32.eqz
- (get_local $i52)
+ (get_local $i52)
+ (block
+ (set_local $i73
+ (get_local $i52)
+ )
+ (set_local $i74
+ (get_local $i5)
+ )
)
(block
(set_local $i75
@@ -4590,14 +4563,6 @@
)
(br $while-out$55)
)
- (block
- (set_local $i73
- (get_local $i52)
- )
- (set_local $i74
- (get_local $i5)
- )
- )
)
(br $while-in$56)
)
@@ -5068,29 +5033,9 @@
)
(block $do-once$65
(if
- (i32.eqz
- (i32.and
- (get_local $i54)
- (get_local $i5)
- )
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (get_local $i54)
- (get_local $i5)
- )
- )
- (set_local $i80
- (i32.add
- (get_local $i62)
- (i32.const 8)
- )
- )
- (set_local $i81
- (get_local $i62)
- )
+ (i32.and
+ (get_local $i54)
+ (get_local $i5)
)
(block
(set_local $i56
@@ -5123,6 +5068,24 @@
)
(call_import $_abort)
)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (get_local $i54)
+ (get_local $i5)
+ )
+ )
+ (set_local $i80
+ (i32.add
+ (get_local $i62)
+ (i32.const 8)
+ )
+ )
+ (set_local $i81
+ (get_local $i62)
+ )
+ )
)
)
(i32.store
@@ -5152,12 +5115,7 @@
)
(block $do-once$67
(if
- (i32.eqz
- (get_local $i5)
- )
- (set_local $i82
- (i32.const 0)
- )
+ (get_local $i5)
(block
(if
(i32.gt_u
@@ -5259,6 +5217,9 @@
)
)
)
+ (set_local $i82
+ (i32.const 0)
+ )
)
)
(set_local $i5
@@ -5399,8 +5360,17 @@
)
)
(if
- (i32.eqz
- (get_local $i57)
+ (get_local $i57)
+ (block
+ (set_local $i50
+ (i32.shl
+ (get_local $i50)
+ (i32.const 1)
+ )
+ )
+ (set_local $i62
+ (get_local $i57)
+ )
)
(block
(set_local $i84
@@ -5414,17 +5384,6 @@
)
(br $while-out$69)
)
- (block
- (set_local $i50
- (i32.shl
- (get_local $i50)
- (i32.const 1)
- )
- )
- (set_local $i62
- (get_local $i57)
- )
- )
)
(br $while-in$70)
)
@@ -5560,9 +5519,6 @@
(get_local $i13)
)
)
- (set_local $i71
- (i32.const 624)
- )
)
)
(loop $while-out$71 $while-in$72
@@ -6190,8 +6146,17 @@
)
)
(if
- (i32.eqz
- (get_local $i57)
+ (get_local $i57)
+ (block
+ (set_local $i5
+ (i32.shl
+ (get_local $i5)
+ (i32.const 1)
+ )
+ )
+ (set_local $i62
+ (get_local $i57)
+ )
)
(block
(set_local $i91
@@ -6205,17 +6170,6 @@
)
(br $while-out$75)
)
- (block
- (set_local $i5
- (i32.shl
- (get_local $i5)
- (i32.const 1)
- )
- )
- (set_local $i62
- (get_local $i57)
- )
- )
)
(br $while-in$76)
)
@@ -6638,10 +6592,16 @@
)
(block $do-once$0
(if
- (i32.eqz
- (i32.and
- (get_local $i4)
- (i32.const 1)
+ (i32.and
+ (get_local $i4)
+ (i32.const 1)
+ )
+ (block
+ (set_local $i12
+ (get_local $i2)
+ )
+ (set_local $i13
+ (get_local $i5)
)
)
(block
@@ -6922,8 +6882,14 @@
)
)
(if
- (i32.eqz
- (get_local $i16)
+ (get_local $i16)
+ (block
+ (set_local $i19
+ (get_local $i16)
+ )
+ (set_local $i20
+ (get_local $i11)
+ )
)
(block
(set_local $i17
@@ -6932,15 +6898,7 @@
)
)
(if
- (i32.eqz
- (get_local $i17)
- )
- (block
- (set_local $i18
- (i32.const 0)
- )
- (br $do-once$2)
- )
+ (get_local $i17)
(block
(set_local $i19
(get_local $i17)
@@ -6949,14 +6907,12 @@
(get_local $i14)
)
)
- )
- )
- (block
- (set_local $i19
- (get_local $i16)
- )
- (set_local $i20
- (get_local $i11)
+ (block
+ (set_local $i18
+ (i32.const 0)
+ )
+ (br $do-once$2)
+ )
)
)
)
@@ -6996,8 +6952,14 @@
)
)
(if
- (i32.eqz
- (get_local $i16)
+ (get_local $i16)
+ (block
+ (set_local $i19
+ (get_local $i16)
+ )
+ (set_local $i20
+ (get_local $i11)
+ )
)
(block
(set_local $i21
@@ -7008,14 +6970,6 @@
)
(br $while-out$4)
)
- (block
- (set_local $i19
- (get_local $i16)
- )
- (set_local $i20
- (get_local $i11)
- )
- )
)
(br $while-in$5)
)
@@ -7307,14 +7261,6 @@
)
)
)
- (block
- (set_local $i12
- (get_local $i2)
- )
- (set_local $i13
- (get_local $i5)
- )
- )
)
)
(if
@@ -7345,10 +7291,34 @@
(call_import $_abort)
)
(if
- (i32.eqz
- (i32.and
- (get_local $i2)
- (i32.const 2)
+ (i32.and
+ (get_local $i2)
+ (i32.const 2)
+ )
+ (block
+ (i32.store
+ (get_local $i5)
+ (i32.and
+ (get_local $i2)
+ (i32.const -2)
+ )
+ )
+ (i32.store offset=4
+ (get_local $i12)
+ (i32.or
+ (get_local $i13)
+ (i32.const 1)
+ )
+ )
+ (i32.store
+ (i32.add
+ (get_local $i12)
+ (get_local $i13)
+ )
+ (get_local $i13)
+ )
+ (set_local $i29
+ (get_local $i13)
)
)
(block
@@ -7501,8 +7471,14 @@
)
)
(if
- (i32.eqz
- (get_local $i15)
+ (get_local $i15)
+ (block
+ (set_local $i24
+ (get_local $i15)
+ )
+ (set_local $i25
+ (get_local $i19)
+ )
)
(block
(set_local $i1
@@ -7511,15 +7487,7 @@
)
)
(if
- (i32.eqz
- (get_local $i1)
- )
- (block
- (set_local $i23
- (i32.const 0)
- )
- (br $do-once$10)
- )
+ (get_local $i1)
(block
(set_local $i24
(get_local $i1)
@@ -7528,14 +7496,12 @@
(get_local $i20)
)
)
- )
- )
- (block
- (set_local $i24
- (get_local $i15)
- )
- (set_local $i25
- (get_local $i19)
+ (block
+ (set_local $i23
+ (i32.const 0)
+ )
+ (br $do-once$10)
+ )
)
)
)
@@ -7575,8 +7541,14 @@
)
)
(if
- (i32.eqz
- (get_local $i15)
+ (get_local $i15)
+ (block
+ (set_local $i24
+ (get_local $i15)
+ )
+ (set_local $i25
+ (get_local $i19)
+ )
)
(block
(set_local $i26
@@ -7587,14 +7559,6 @@
)
(br $while-out$12)
)
- (block
- (set_local $i24
- (get_local $i15)
- )
- (set_local $i25
- (get_local $i19)
- )
- )
)
(br $while-in$13)
)
@@ -8011,32 +7975,6 @@
)
)
)
- (block
- (i32.store
- (get_local $i5)
- (i32.and
- (get_local $i2)
- (i32.const -2)
- )
- )
- (i32.store offset=4
- (get_local $i12)
- (i32.or
- (get_local $i13)
- (i32.const 1)
- )
- )
- (i32.store
- (i32.add
- (get_local $i12)
- (get_local $i13)
- )
- (get_local $i13)
- )
- (set_local $i29
- (get_local $i13)
- )
- )
)
(set_local $i13
(i32.shr_u
@@ -8361,8 +8299,17 @@
)
)
(if
- (i32.eqz
- (get_local $i13)
+ (get_local $i13)
+ (block
+ (set_local $i31
+ (i32.shl
+ (get_local $i31)
+ (i32.const 1)
+ )
+ )
+ (set_local $i2
+ (get_local $i13)
+ )
)
(block
(set_local $i35
@@ -8376,17 +8323,6 @@
)
(br $while-out$18)
)
- (block
- (set_local $i31
- (i32.shl
- (get_local $i31)
- (i32.const 1)
- )
- )
- (set_local $i2
- (get_local $i13)
- )
- )
)
(br $while-in$19)
)
@@ -8525,13 +8461,11 @@
(get_local $i12)
)
(if
- (i32.eqz
- (get_local $i12)
- )
+ (get_local $i12)
+ (return)
(set_local $i37
(i32.const 632)
)
- (return)
)
(loop $while-out$20 $while-in$21
(set_local $i12
@@ -8540,16 +8474,14 @@
)
)
(if
- (i32.eqz
- (get_local $i12)
- )
- (br $while-out$20)
+ (get_local $i12)
(set_local $i37
(i32.add
(get_local $i12)
(i32.const 8)
)
)
+ (br $while-out$20)
)
(br $while-in$21)
)
@@ -8677,68 +8609,66 @@
)
(loop $while-out$0 $while-in$1
(if
- (i32.eqz
- (i32.load
- (i32.const 8)
- )
+ (i32.load
+ (i32.const 8)
)
(block
+ (call_import $_pthread_cleanup_push
+ (i32.const 4)
+ (get_local $i1)
+ )
(i32.store
- (get_local $i5)
+ (get_local $i6)
(i32.load
(get_local $i2)
)
)
(i32.store offset=4
- (get_local $i5)
+ (get_local $i6)
(get_local $i12)
)
(i32.store offset=8
- (get_local $i5)
+ (get_local $i6)
(get_local $i7)
)
- (set_local $i14
+ (set_local $i11
(call $___syscall_ret
(call_import $___syscall146
(i32.const 146)
- (get_local $i5)
+ (get_local $i6)
)
)
)
+ (call_import $_pthread_cleanup_pop
+ (i32.const 0)
+ )
+ (set_local $i14
+ (get_local $i11)
+ )
)
(block
- (call_import $_pthread_cleanup_push
- (i32.const 4)
- (get_local $i1)
- )
(i32.store
- (get_local $i6)
+ (get_local $i5)
(i32.load
(get_local $i2)
)
)
(i32.store offset=4
- (get_local $i6)
+ (get_local $i5)
(get_local $i12)
)
(i32.store offset=8
- (get_local $i6)
+ (get_local $i5)
(get_local $i7)
)
- (set_local $i11
+ (set_local $i14
(call $___syscall_ret
(call_import $___syscall146
(i32.const 146)
- (get_local $i6)
+ (get_local $i5)
)
)
)
- (call_import $_pthread_cleanup_pop
- (i32.const 0)
- )
- (set_local $i14
- (get_local $i11)
- )
)
)
(if
@@ -9011,14 +8941,21 @@
)
)
(if
- (i32.eqz
- (get_local $i5)
+ (get_local $i5)
+ (block
+ (set_local $i6
+ (get_local $i5)
+ )
+ (set_local $i7
+ (i32.const 5)
+ )
)
(if
- (i32.eqz
- (call $___towrite
- (get_local $i3)
- )
+ (call $___towrite
+ (get_local $i3)
+ )
+ (set_local $i8
+ (i32.const 0)
)
(block
(set_local $i6
@@ -9030,17 +8967,6 @@
(i32.const 5)
)
)
- (set_local $i8
- (i32.const 0)
- )
- )
- (block
- (set_local $i6
- (get_local $i5)
- )
- (set_local $i7
- (i32.const 5)
- )
)
)
(block $label$break$L5
@@ -9300,13 +9226,8 @@
)
(block
(if
- (i32.eqz
- (i32.load
- (i32.const 56)
- )
- )
- (set_local $i5
- (i32.const 0)
+ (i32.load
+ (i32.const 56)
)
(set_local $i5
(call $_fflush
@@ -9315,6 +9236,9 @@
)
)
)
+ (set_local $i5
+ (i32.const 0)
+ )
)
(call_import $___lock
(i32.const 36)
@@ -9325,12 +9249,7 @@
)
)
(if
- (i32.eqz
- (get_local $i4)
- )
- (set_local $i6
- (get_local $i5)
- )
+ (get_local $i4)
(block
(set_local $i3
(get_local $i4)
@@ -9388,8 +9307,9 @@
)
)
(if
- (i32.eqz
- (get_local $i3)
+ (get_local $i3)
+ (set_local $i4
+ (get_local $i8)
)
(block
(set_local $i6
@@ -9397,13 +9317,13 @@
)
(br $while-out$2)
)
- (set_local $i4
- (get_local $i8)
- )
)
(br $while-in$3)
)
)
+ (set_local $i6
+ (get_local $i5)
+ )
)
(call_import $___unlock
(i32.const 36)
@@ -9434,19 +9354,9 @@
)
(block $label$break$L1
(if
- (i32.eqz
- (i32.and
- (get_local $i2)
- (i32.const 3)
- )
- )
- (block
- (set_local $i3
- (get_local $i1)
- )
- (set_local $i4
- (i32.const 4)
- )
+ (i32.and
+ (get_local $i2)
+ (i32.const 3)
)
(block
(set_local $i5
@@ -9479,11 +9389,12 @@
(get_local $i8)
)
(if
- (i32.eqz
- (i32.and
- (get_local $i6)
- (i32.const 3)
- )
+ (i32.and
+ (get_local $i6)
+ (i32.const 3)
+ )
+ (set_local $i5
+ (get_local $i8)
)
(block
(set_local $i3
@@ -9494,13 +9405,18 @@
)
(br $while-out$1)
)
- (set_local $i5
- (get_local $i8)
- )
)
(br $while-in$2)
)
)
+ (block
+ (set_local $i3
+ (get_local $i1)
+ )
+ (set_local $i4
+ (i32.const 4)
+ )
+ )
)
)
(if
@@ -9519,25 +9435,17 @@
)
)
(if
- (i32.eqz
- (i32.and
- (i32.xor
- (i32.and
- (get_local $i3)
- (i32.const -2139062144)
- )
- (i32.const -2139062144)
- )
- (i32.add
+ (i32.and
+ (i32.xor
+ (i32.and
(get_local $i3)
- (i32.const -16843009)
+ (i32.const -2139062144)
)
+ (i32.const -2139062144)
)
- )
- (set_local $i4
(i32.add
- (get_local $i4)
- (i32.const 4)
+ (get_local $i3)
+ (i32.const -16843009)
)
)
(block
@@ -9549,24 +9457,25 @@
)
(br $while-out$3)
)
+ (set_local $i4
+ (i32.add
+ (get_local $i4)
+ (i32.const 4)
+ )
+ )
)
(br $while-in$4)
)
(if
- (i32.eqz
- (i32.shr_s
- (i32.shl
- (i32.and
- (get_local $i9)
- (i32.const 255)
- )
- (i32.const 24)
+ (i32.shr_s
+ (i32.shl
+ (i32.and
+ (get_local $i9)
+ (i32.const 255)
)
(i32.const 24)
)
- )
- (set_local $i11
- (get_local $i10)
+ (i32.const 24)
)
(block
(set_local $i9
@@ -9580,10 +9489,11 @@
)
)
(if
- (i32.eqz
- (i32.load8_s
- (get_local $i10)
- )
+ (i32.load8_s
+ (get_local $i10)
+ )
+ (set_local $i9
+ (get_local $i10)
)
(block
(set_local $i11
@@ -9591,13 +9501,13 @@
)
(br $while-out$5)
)
- (set_local $i9
- (get_local $i10)
- )
)
(br $while-in$6)
)
)
+ (set_local $i11
+ (get_local $i10)
+ )
)
(set_local $i7
(get_local $i11)
@@ -9660,14 +9570,21 @@
)
)
(if
- (i32.eqz
- (get_local $i7)
+ (get_local $i7)
+ (block
+ (set_local $i8
+ (get_local $i7)
+ )
+ (set_local $i9
+ (i32.const 4)
+ )
)
(if
- (i32.eqz
- (call $___towrite
- (get_local $i1)
- )
+ (call $___towrite
+ (get_local $i1)
+ )
+ (set_local $i10
+ (i32.const -1)
)
(block
(set_local $i8
@@ -9679,17 +9596,6 @@
(i32.const 4)
)
)
- (set_local $i10
- (i32.const -1)
- )
- )
- (block
- (set_local $i8
- (get_local $i7)
- )
- (set_local $i9
- (i32.const 4)
- )
)
)
(block $do-once$0
@@ -10446,10 +10352,20 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $i3)
- (i32.const 8)
+ (i32.and
+ (get_local $i3)
+ (i32.const 8)
+ )
+ (block
+ (i32.store
+ (get_local $i1)
+ (i32.or
+ (get_local $i3)
+ (i32.const 32)
+ )
+ )
+ (set_local $i4
+ (i32.const -1)
)
)
(block
@@ -10487,18 +10403,6 @@
(i32.const 0)
)
)
- (block
- (i32.store
- (get_local $i1)
- (i32.or
- (get_local $i3)
- (i32.const 32)
- )
- )
- (set_local $i4
- (i32.const -1)
- )
- )
)
(return
(get_local $i4)
@@ -10884,19 +10788,17 @@
(func $___errno_location (result i32)
(local $i1 i32)
(if
- (i32.eqz
- (i32.load
- (i32.const 8)
- )
- )
- (set_local $i1
- (i32.const 60)
+ (i32.load
+ (i32.const 8)
)
(set_local $i1
(i32.load offset=60
(call_import $_pthread_self)
)
)
+ (set_local $i1
+ (i32.const 60)
+ )
)
(return
(get_local $i1)
diff --git a/test/emcc_O2_hello_world.fromasm.imprecise b/test/emcc_O2_hello_world.fromasm.imprecise
index f0a74eb1e..329833970 100644
--- a/test/emcc_O2_hello_world.fromasm.imprecise
+++ b/test/emcc_O2_hello_world.fromasm.imprecise
@@ -862,7 +862,8 @@
)
)
(if
- (i32.eqz
+ (get_local $i10)
+ (set_local $i23
(get_local $i10)
)
(block
@@ -872,7 +873,8 @@
)
)
(if
- (i32.eqz
+ (get_local $i15)
+ (set_local $i23
(get_local $i15)
)
(block
@@ -884,14 +886,8 @@
)
(br $while-out$6)
)
- (set_local $i23
- (get_local $i15)
- )
)
)
- (set_local $i23
- (get_local $i10)
- )
)
(set_local $i10
(i32.sub
@@ -983,8 +979,14 @@
)
)
(if
- (i32.eqz
- (get_local $i17)
+ (get_local $i17)
+ (block
+ (set_local $i25
+ (get_local $i17)
+ )
+ (set_local $i26
+ (get_local $i14)
+ )
)
(block
(set_local $i15
@@ -999,15 +1001,7 @@
)
)
(if
- (i32.eqz
- (get_local $i10)
- )
- (block
- (set_local $i24
- (i32.const 0)
- )
- (br $do-once$8)
- )
+ (get_local $i10)
(block
(set_local $i25
(get_local $i10)
@@ -1016,14 +1010,12 @@
(get_local $i15)
)
)
- )
- )
- (block
- (set_local $i25
- (get_local $i17)
- )
- (set_local $i26
- (get_local $i14)
+ (block
+ (set_local $i24
+ (i32.const 0)
+ )
+ (br $do-once$8)
+ )
)
)
)
@@ -1063,8 +1055,14 @@
)
)
(if
- (i32.eqz
- (get_local $i17)
+ (get_local $i17)
+ (block
+ (set_local $i25
+ (get_local $i17)
+ )
+ (set_local $i26
+ (get_local $i14)
+ )
)
(block
(set_local $i27
@@ -1075,14 +1073,6 @@
)
(br $while-out$10)
)
- (block
- (set_local $i25
- (get_local $i17)
- )
- (set_local $i26
- (get_local $i14)
- )
- )
)
(br $while-in$11)
)
@@ -1688,23 +1678,7 @@
)
(block $label$break$L123
(if
- (i32.eqz
- (get_local $i4)
- )
- (block
- (set_local $i33
- (get_local $i14)
- )
- (set_local $i34
- (i32.const 0)
- )
- (set_local $i35
- (i32.const 0)
- )
- (set_local $i36
- (i32.const 86)
- )
- )
+ (get_local $i4)
(block
(set_local $i12
(get_local $i14)
@@ -1883,6 +1857,20 @@
(br $while-in$18)
)
)
+ (block
+ (set_local $i33
+ (get_local $i14)
+ )
+ (set_local $i34
+ (i32.const 0)
+ )
+ (set_local $i35
+ (i32.const 0)
+ )
+ (set_local $i36
+ (i32.const 86)
+ )
+ )
)
)
(if
@@ -2045,17 +2033,7 @@
)
)
(if
- (i32.eqz
- (get_local $i42)
- )
- (block
- (set_local $i43
- (get_local $i33)
- )
- (set_local $i44
- (get_local $i35)
- )
- )
+ (get_local $i42)
(block
(set_local $i37
(get_local $i33)
@@ -2070,6 +2048,14 @@
(i32.const 90)
)
)
+ (block
+ (set_local $i43
+ (get_local $i33)
+ )
+ (set_local $i44
+ (get_local $i35)
+ )
+ )
)
)
)
@@ -2142,28 +2128,26 @@
)
)
(if
- (i32.eqz
- (get_local $i38)
- )
+ (get_local $i38)
(block
- (set_local $i43
+ (set_local $i37
(get_local $i3)
)
- (set_local $i44
+ (set_local $i39
(get_local $i8)
)
- (br $while-out$19)
+ (set_local $i36
+ (i32.const 90)
+ )
)
(block
- (set_local $i37
+ (set_local $i43
(get_local $i3)
)
- (set_local $i39
+ (set_local $i44
(get_local $i8)
)
- (set_local $i36
- (i32.const 90)
- )
+ (br $while-out$19)
)
)
(br $while-in$20)
@@ -2241,8 +2225,14 @@
)
)
(if
- (i32.eqz
- (get_local $i14)
+ (get_local $i14)
+ (block
+ (set_local $i46
+ (get_local $i14)
+ )
+ (set_local $i47
+ (get_local $i2)
+ )
)
(block
(set_local $i4
@@ -2257,15 +2247,7 @@
)
)
(if
- (i32.eqz
- (get_local $i10)
- )
- (block
- (set_local $i45
- (i32.const 0)
- )
- (br $do-once$21)
- )
+ (get_local $i10)
(block
(set_local $i46
(get_local $i10)
@@ -2274,14 +2256,12 @@
(get_local $i4)
)
)
- )
- )
- (block
- (set_local $i46
- (get_local $i14)
- )
- (set_local $i47
- (get_local $i2)
+ (block
+ (set_local $i45
+ (i32.const 0)
+ )
+ (br $do-once$21)
+ )
)
)
)
@@ -2321,8 +2301,14 @@
)
)
(if
- (i32.eqz
- (get_local $i14)
+ (get_local $i14)
+ (block
+ (set_local $i46
+ (get_local $i14)
+ )
+ (set_local $i47
+ (get_local $i2)
+ )
)
(block
(set_local $i48
@@ -2333,14 +2319,6 @@
)
(br $while-out$23)
)
- (block
- (set_local $i46
- (get_local $i14)
- )
- (set_local $i47
- (get_local $i2)
- )
- )
)
(br $while-in$24)
)
@@ -2974,8 +2952,17 @@
)
)
(if
- (i32.eqz
- (get_local $i2)
+ (get_local $i2)
+ (block
+ (set_local $i4
+ (i32.shl
+ (get_local $i4)
+ (i32.const 1)
+ )
+ )
+ (set_local $i7
+ (get_local $i2)
+ )
)
(block
(set_local $i54
@@ -2989,17 +2976,6 @@
)
(br $while-out$31)
)
- (block
- (set_local $i4
- (i32.shl
- (get_local $i4)
- (i32.const 1)
- )
- )
- (set_local $i7
- (get_local $i2)
- )
- )
)
(br $while-in$32)
)
@@ -3345,15 +3321,14 @@
)
)
(if
- (i32.eqz
- (i32.and
- (i32.add
- (get_local $i53)
- (i32.const -1)
- )
+ (i32.and
+ (i32.add
(get_local $i53)
+ (i32.const -1)
)
+ (get_local $i53)
)
+ (call_import $_abort)
(block
(i32.store
(i32.const 656)
@@ -3393,7 +3368,6 @@
)
(br $do-once$33)
)
- (call_import $_abort)
)
)
)
@@ -3494,13 +3468,14 @@
)
(block $label$break$L257
(if
- (i32.eqz
- (i32.and
- (i32.load
- (i32.const 620)
- )
- (i32.const 4)
+ (i32.and
+ (i32.load
+ (i32.const 620)
)
+ (i32.const 4)
+ )
+ (set_local $i36
+ (i32.const 190)
)
(block
(set_local $i52
@@ -3682,14 +3657,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $i45)
- (get_local $i5)
- )
- )
- (set_local $i62
- (get_local $i43)
+ (i32.and
+ (get_local $i45)
+ (get_local $i5)
)
(set_local $i62
(i32.add
@@ -3709,6 +3679,9 @@
)
)
)
+ (set_local $i62
+ (get_local $i43)
+ )
)
(set_local $i50
(i32.load
@@ -3918,9 +3891,6 @@
(i32.const 190)
)
)
- (set_local $i36
- (i32.const 190)
- )
)
)
(if
@@ -4282,13 +4252,14 @@
(i32.const 211)
)
(if
- (i32.eqz
- (i32.and
- (i32.load offset=12
- (get_local $i70)
- )
- (i32.const 8)
+ (i32.and
+ (i32.load offset=12
+ (get_local $i70)
)
+ (i32.const 8)
+ )
+ (set_local $i71
+ (i32.const 624)
)
(block
(i32.store
@@ -4504,8 +4475,14 @@
)
)
(if
- (i32.eqz
- (get_local $i52)
+ (get_local $i52)
+ (block
+ (set_local $i73
+ (get_local $i52)
+ )
+ (set_local $i74
+ (get_local $i5)
+ )
)
(block
(set_local $i50
@@ -4514,15 +4491,7 @@
)
)
(if
- (i32.eqz
- (get_local $i50)
- )
- (block
- (set_local $i72
- (i32.const 0)
- )
- (br $do-once$53)
- )
+ (get_local $i50)
(block
(set_local $i73
(get_local $i50)
@@ -4531,14 +4500,12 @@
(get_local $i45)
)
)
- )
- )
- (block
- (set_local $i73
- (get_local $i52)
- )
- (set_local $i74
- (get_local $i5)
+ (block
+ (set_local $i72
+ (i32.const 0)
+ )
+ (br $do-once$53)
+ )
)
)
)
@@ -4578,8 +4545,14 @@
)
)
(if
- (i32.eqz
- (get_local $i52)
+ (get_local $i52)
+ (block
+ (set_local $i73
+ (get_local $i52)
+ )
+ (set_local $i74
+ (get_local $i5)
+ )
)
(block
(set_local $i75
@@ -4590,14 +4563,6 @@
)
(br $while-out$55)
)
- (block
- (set_local $i73
- (get_local $i52)
- )
- (set_local $i74
- (get_local $i5)
- )
- )
)
(br $while-in$56)
)
@@ -5068,29 +5033,9 @@
)
(block $do-once$65
(if
- (i32.eqz
- (i32.and
- (get_local $i54)
- (get_local $i5)
- )
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (get_local $i54)
- (get_local $i5)
- )
- )
- (set_local $i80
- (i32.add
- (get_local $i62)
- (i32.const 8)
- )
- )
- (set_local $i81
- (get_local $i62)
- )
+ (i32.and
+ (get_local $i54)
+ (get_local $i5)
)
(block
(set_local $i56
@@ -5123,6 +5068,24 @@
)
(call_import $_abort)
)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (get_local $i54)
+ (get_local $i5)
+ )
+ )
+ (set_local $i80
+ (i32.add
+ (get_local $i62)
+ (i32.const 8)
+ )
+ )
+ (set_local $i81
+ (get_local $i62)
+ )
+ )
)
)
(i32.store
@@ -5152,12 +5115,7 @@
)
(block $do-once$67
(if
- (i32.eqz
- (get_local $i5)
- )
- (set_local $i82
- (i32.const 0)
- )
+ (get_local $i5)
(block
(if
(i32.gt_u
@@ -5259,6 +5217,9 @@
)
)
)
+ (set_local $i82
+ (i32.const 0)
+ )
)
)
(set_local $i5
@@ -5399,8 +5360,17 @@
)
)
(if
- (i32.eqz
- (get_local $i57)
+ (get_local $i57)
+ (block
+ (set_local $i50
+ (i32.shl
+ (get_local $i50)
+ (i32.const 1)
+ )
+ )
+ (set_local $i62
+ (get_local $i57)
+ )
)
(block
(set_local $i84
@@ -5414,17 +5384,6 @@
)
(br $while-out$69)
)
- (block
- (set_local $i50
- (i32.shl
- (get_local $i50)
- (i32.const 1)
- )
- )
- (set_local $i62
- (get_local $i57)
- )
- )
)
(br $while-in$70)
)
@@ -5560,9 +5519,6 @@
(get_local $i13)
)
)
- (set_local $i71
- (i32.const 624)
- )
)
)
(loop $while-out$71 $while-in$72
@@ -6190,8 +6146,17 @@
)
)
(if
- (i32.eqz
- (get_local $i57)
+ (get_local $i57)
+ (block
+ (set_local $i5
+ (i32.shl
+ (get_local $i5)
+ (i32.const 1)
+ )
+ )
+ (set_local $i62
+ (get_local $i57)
+ )
)
(block
(set_local $i91
@@ -6205,17 +6170,6 @@
)
(br $while-out$75)
)
- (block
- (set_local $i5
- (i32.shl
- (get_local $i5)
- (i32.const 1)
- )
- )
- (set_local $i62
- (get_local $i57)
- )
- )
)
(br $while-in$76)
)
@@ -6638,10 +6592,16 @@
)
(block $do-once$0
(if
- (i32.eqz
- (i32.and
- (get_local $i4)
- (i32.const 1)
+ (i32.and
+ (get_local $i4)
+ (i32.const 1)
+ )
+ (block
+ (set_local $i12
+ (get_local $i2)
+ )
+ (set_local $i13
+ (get_local $i5)
)
)
(block
@@ -6922,8 +6882,14 @@
)
)
(if
- (i32.eqz
- (get_local $i16)
+ (get_local $i16)
+ (block
+ (set_local $i19
+ (get_local $i16)
+ )
+ (set_local $i20
+ (get_local $i11)
+ )
)
(block
(set_local $i17
@@ -6932,15 +6898,7 @@
)
)
(if
- (i32.eqz
- (get_local $i17)
- )
- (block
- (set_local $i18
- (i32.const 0)
- )
- (br $do-once$2)
- )
+ (get_local $i17)
(block
(set_local $i19
(get_local $i17)
@@ -6949,14 +6907,12 @@
(get_local $i14)
)
)
- )
- )
- (block
- (set_local $i19
- (get_local $i16)
- )
- (set_local $i20
- (get_local $i11)
+ (block
+ (set_local $i18
+ (i32.const 0)
+ )
+ (br $do-once$2)
+ )
)
)
)
@@ -6996,8 +6952,14 @@
)
)
(if
- (i32.eqz
- (get_local $i16)
+ (get_local $i16)
+ (block
+ (set_local $i19
+ (get_local $i16)
+ )
+ (set_local $i20
+ (get_local $i11)
+ )
)
(block
(set_local $i21
@@ -7008,14 +6970,6 @@
)
(br $while-out$4)
)
- (block
- (set_local $i19
- (get_local $i16)
- )
- (set_local $i20
- (get_local $i11)
- )
- )
)
(br $while-in$5)
)
@@ -7307,14 +7261,6 @@
)
)
)
- (block
- (set_local $i12
- (get_local $i2)
- )
- (set_local $i13
- (get_local $i5)
- )
- )
)
)
(if
@@ -7345,10 +7291,34 @@
(call_import $_abort)
)
(if
- (i32.eqz
- (i32.and
- (get_local $i2)
- (i32.const 2)
+ (i32.and
+ (get_local $i2)
+ (i32.const 2)
+ )
+ (block
+ (i32.store
+ (get_local $i5)
+ (i32.and
+ (get_local $i2)
+ (i32.const -2)
+ )
+ )
+ (i32.store offset=4
+ (get_local $i12)
+ (i32.or
+ (get_local $i13)
+ (i32.const 1)
+ )
+ )
+ (i32.store
+ (i32.add
+ (get_local $i12)
+ (get_local $i13)
+ )
+ (get_local $i13)
+ )
+ (set_local $i29
+ (get_local $i13)
)
)
(block
@@ -7501,8 +7471,14 @@
)
)
(if
- (i32.eqz
- (get_local $i15)
+ (get_local $i15)
+ (block
+ (set_local $i24
+ (get_local $i15)
+ )
+ (set_local $i25
+ (get_local $i19)
+ )
)
(block
(set_local $i1
@@ -7511,15 +7487,7 @@
)
)
(if
- (i32.eqz
- (get_local $i1)
- )
- (block
- (set_local $i23
- (i32.const 0)
- )
- (br $do-once$10)
- )
+ (get_local $i1)
(block
(set_local $i24
(get_local $i1)
@@ -7528,14 +7496,12 @@
(get_local $i20)
)
)
- )
- )
- (block
- (set_local $i24
- (get_local $i15)
- )
- (set_local $i25
- (get_local $i19)
+ (block
+ (set_local $i23
+ (i32.const 0)
+ )
+ (br $do-once$10)
+ )
)
)
)
@@ -7575,8 +7541,14 @@
)
)
(if
- (i32.eqz
- (get_local $i15)
+ (get_local $i15)
+ (block
+ (set_local $i24
+ (get_local $i15)
+ )
+ (set_local $i25
+ (get_local $i19)
+ )
)
(block
(set_local $i26
@@ -7587,14 +7559,6 @@
)
(br $while-out$12)
)
- (block
- (set_local $i24
- (get_local $i15)
- )
- (set_local $i25
- (get_local $i19)
- )
- )
)
(br $while-in$13)
)
@@ -8011,32 +7975,6 @@
)
)
)
- (block
- (i32.store
- (get_local $i5)
- (i32.and
- (get_local $i2)
- (i32.const -2)
- )
- )
- (i32.store offset=4
- (get_local $i12)
- (i32.or
- (get_local $i13)
- (i32.const 1)
- )
- )
- (i32.store
- (i32.add
- (get_local $i12)
- (get_local $i13)
- )
- (get_local $i13)
- )
- (set_local $i29
- (get_local $i13)
- )
- )
)
(set_local $i13
(i32.shr_u
@@ -8361,8 +8299,17 @@
)
)
(if
- (i32.eqz
- (get_local $i13)
+ (get_local $i13)
+ (block
+ (set_local $i31
+ (i32.shl
+ (get_local $i31)
+ (i32.const 1)
+ )
+ )
+ (set_local $i2
+ (get_local $i13)
+ )
)
(block
(set_local $i35
@@ -8376,17 +8323,6 @@
)
(br $while-out$18)
)
- (block
- (set_local $i31
- (i32.shl
- (get_local $i31)
- (i32.const 1)
- )
- )
- (set_local $i2
- (get_local $i13)
- )
- )
)
(br $while-in$19)
)
@@ -8525,13 +8461,11 @@
(get_local $i12)
)
(if
- (i32.eqz
- (get_local $i12)
- )
+ (get_local $i12)
+ (return)
(set_local $i37
(i32.const 632)
)
- (return)
)
(loop $while-out$20 $while-in$21
(set_local $i12
@@ -8540,16 +8474,14 @@
)
)
(if
- (i32.eqz
- (get_local $i12)
- )
- (br $while-out$20)
+ (get_local $i12)
(set_local $i37
(i32.add
(get_local $i12)
(i32.const 8)
)
)
+ (br $while-out$20)
)
(br $while-in$21)
)
@@ -8677,68 +8609,66 @@
)
(loop $while-out$0 $while-in$1
(if
- (i32.eqz
- (i32.load
- (i32.const 8)
- )
+ (i32.load
+ (i32.const 8)
)
(block
+ (call_import $_pthread_cleanup_push
+ (i32.const 4)
+ (get_local $i1)
+ )
(i32.store
- (get_local $i5)
+ (get_local $i6)
(i32.load
(get_local $i2)
)
)
(i32.store offset=4
- (get_local $i5)
+ (get_local $i6)
(get_local $i12)
)
(i32.store offset=8
- (get_local $i5)
+ (get_local $i6)
(get_local $i7)
)
- (set_local $i14
+ (set_local $i11
(call $___syscall_ret
(call_import $___syscall146
(i32.const 146)
- (get_local $i5)
+ (get_local $i6)
)
)
)
+ (call_import $_pthread_cleanup_pop
+ (i32.const 0)
+ )
+ (set_local $i14
+ (get_local $i11)
+ )
)
(block
- (call_import $_pthread_cleanup_push
- (i32.const 4)
- (get_local $i1)
- )
(i32.store
- (get_local $i6)
+ (get_local $i5)
(i32.load
(get_local $i2)
)
)
(i32.store offset=4
- (get_local $i6)
+ (get_local $i5)
(get_local $i12)
)
(i32.store offset=8
- (get_local $i6)
+ (get_local $i5)
(get_local $i7)
)
- (set_local $i11
+ (set_local $i14
(call $___syscall_ret
(call_import $___syscall146
(i32.const 146)
- (get_local $i6)
+ (get_local $i5)
)
)
)
- (call_import $_pthread_cleanup_pop
- (i32.const 0)
- )
- (set_local $i14
- (get_local $i11)
- )
)
)
(if
@@ -9011,14 +8941,21 @@
)
)
(if
- (i32.eqz
- (get_local $i5)
+ (get_local $i5)
+ (block
+ (set_local $i6
+ (get_local $i5)
+ )
+ (set_local $i7
+ (i32.const 5)
+ )
)
(if
- (i32.eqz
- (call $___towrite
- (get_local $i3)
- )
+ (call $___towrite
+ (get_local $i3)
+ )
+ (set_local $i8
+ (i32.const 0)
)
(block
(set_local $i6
@@ -9030,17 +8967,6 @@
(i32.const 5)
)
)
- (set_local $i8
- (i32.const 0)
- )
- )
- (block
- (set_local $i6
- (get_local $i5)
- )
- (set_local $i7
- (i32.const 5)
- )
)
)
(block $label$break$L5
@@ -9300,13 +9226,8 @@
)
(block
(if
- (i32.eqz
- (i32.load
- (i32.const 56)
- )
- )
- (set_local $i5
- (i32.const 0)
+ (i32.load
+ (i32.const 56)
)
(set_local $i5
(call $_fflush
@@ -9315,6 +9236,9 @@
)
)
)
+ (set_local $i5
+ (i32.const 0)
+ )
)
(call_import $___lock
(i32.const 36)
@@ -9325,12 +9249,7 @@
)
)
(if
- (i32.eqz
- (get_local $i4)
- )
- (set_local $i6
- (get_local $i5)
- )
+ (get_local $i4)
(block
(set_local $i3
(get_local $i4)
@@ -9388,8 +9307,9 @@
)
)
(if
- (i32.eqz
- (get_local $i3)
+ (get_local $i3)
+ (set_local $i4
+ (get_local $i8)
)
(block
(set_local $i6
@@ -9397,13 +9317,13 @@
)
(br $while-out$2)
)
- (set_local $i4
- (get_local $i8)
- )
)
(br $while-in$3)
)
)
+ (set_local $i6
+ (get_local $i5)
+ )
)
(call_import $___unlock
(i32.const 36)
@@ -9434,19 +9354,9 @@
)
(block $label$break$L1
(if
- (i32.eqz
- (i32.and
- (get_local $i2)
- (i32.const 3)
- )
- )
- (block
- (set_local $i3
- (get_local $i1)
- )
- (set_local $i4
- (i32.const 4)
- )
+ (i32.and
+ (get_local $i2)
+ (i32.const 3)
)
(block
(set_local $i5
@@ -9479,11 +9389,12 @@
(get_local $i8)
)
(if
- (i32.eqz
- (i32.and
- (get_local $i6)
- (i32.const 3)
- )
+ (i32.and
+ (get_local $i6)
+ (i32.const 3)
+ )
+ (set_local $i5
+ (get_local $i8)
)
(block
(set_local $i3
@@ -9494,13 +9405,18 @@
)
(br $while-out$1)
)
- (set_local $i5
- (get_local $i8)
- )
)
(br $while-in$2)
)
)
+ (block
+ (set_local $i3
+ (get_local $i1)
+ )
+ (set_local $i4
+ (i32.const 4)
+ )
+ )
)
)
(if
@@ -9519,25 +9435,17 @@
)
)
(if
- (i32.eqz
- (i32.and
- (i32.xor
- (i32.and
- (get_local $i3)
- (i32.const -2139062144)
- )
- (i32.const -2139062144)
- )
- (i32.add
+ (i32.and
+ (i32.xor
+ (i32.and
(get_local $i3)
- (i32.const -16843009)
+ (i32.const -2139062144)
)
+ (i32.const -2139062144)
)
- )
- (set_local $i4
(i32.add
- (get_local $i4)
- (i32.const 4)
+ (get_local $i3)
+ (i32.const -16843009)
)
)
(block
@@ -9549,24 +9457,25 @@
)
(br $while-out$3)
)
+ (set_local $i4
+ (i32.add
+ (get_local $i4)
+ (i32.const 4)
+ )
+ )
)
(br $while-in$4)
)
(if
- (i32.eqz
- (i32.shr_s
- (i32.shl
- (i32.and
- (get_local $i9)
- (i32.const 255)
- )
- (i32.const 24)
+ (i32.shr_s
+ (i32.shl
+ (i32.and
+ (get_local $i9)
+ (i32.const 255)
)
(i32.const 24)
)
- )
- (set_local $i11
- (get_local $i10)
+ (i32.const 24)
)
(block
(set_local $i9
@@ -9580,10 +9489,11 @@
)
)
(if
- (i32.eqz
- (i32.load8_s
- (get_local $i10)
- )
+ (i32.load8_s
+ (get_local $i10)
+ )
+ (set_local $i9
+ (get_local $i10)
)
(block
(set_local $i11
@@ -9591,13 +9501,13 @@
)
(br $while-out$5)
)
- (set_local $i9
- (get_local $i10)
- )
)
(br $while-in$6)
)
)
+ (set_local $i11
+ (get_local $i10)
+ )
)
(set_local $i7
(get_local $i11)
@@ -9660,14 +9570,21 @@
)
)
(if
- (i32.eqz
- (get_local $i7)
+ (get_local $i7)
+ (block
+ (set_local $i8
+ (get_local $i7)
+ )
+ (set_local $i9
+ (i32.const 4)
+ )
)
(if
- (i32.eqz
- (call $___towrite
- (get_local $i1)
- )
+ (call $___towrite
+ (get_local $i1)
+ )
+ (set_local $i10
+ (i32.const -1)
)
(block
(set_local $i8
@@ -9679,17 +9596,6 @@
(i32.const 4)
)
)
- (set_local $i10
- (i32.const -1)
- )
- )
- (block
- (set_local $i8
- (get_local $i7)
- )
- (set_local $i9
- (i32.const 4)
- )
)
)
(block $do-once$0
@@ -10446,10 +10352,20 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $i3)
- (i32.const 8)
+ (i32.and
+ (get_local $i3)
+ (i32.const 8)
+ )
+ (block
+ (i32.store
+ (get_local $i1)
+ (i32.or
+ (get_local $i3)
+ (i32.const 32)
+ )
+ )
+ (set_local $i4
+ (i32.const -1)
)
)
(block
@@ -10487,18 +10403,6 @@
(i32.const 0)
)
)
- (block
- (i32.store
- (get_local $i1)
- (i32.or
- (get_local $i3)
- (i32.const 32)
- )
- )
- (set_local $i4
- (i32.const -1)
- )
- )
)
(return
(get_local $i4)
@@ -10884,19 +10788,17 @@
(func $___errno_location (result i32)
(local $i1 i32)
(if
- (i32.eqz
- (i32.load
- (i32.const 8)
- )
- )
- (set_local $i1
- (i32.const 60)
+ (i32.load
+ (i32.const 8)
)
(set_local $i1
(i32.load offset=60
(call_import $_pthread_self)
)
)
+ (set_local $i1
+ (i32.const 60)
+ )
)
(return
(get_local $i1)
diff --git a/test/memorygrowth.fromasm b/test/memorygrowth.fromasm
index f17a8a053..521a533ae 100644
--- a/test/memorygrowth.fromasm
+++ b/test/memorygrowth.fromasm
@@ -657,29 +657,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $e)
- (get_local $g)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $e)
- (get_local $g)
- )
- )
- (set_local $w
- (i32.add
- (get_local $f)
- (i32.const 8)
- )
- )
- (set_local $x
- (get_local $f)
- )
+ (i32.and
+ (get_local $e)
+ (get_local $g)
)
(block
(set_local $g
@@ -711,6 +691,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $e)
+ (get_local $g)
+ )
+ )
+ (set_local $w
+ (i32.add
+ (get_local $f)
+ (i32.const 8)
+ )
+ )
+ (set_local $x
+ (get_local $f)
+ )
+ )
)
(i32.store
(get_local $w)
@@ -756,12 +754,7 @@
)
)
(if
- (i32.eqz
- (get_local $t)
- )
- (set_local $y
- (get_local $d)
- )
+ (get_local $t)
(block
(set_local $i
(i32.add
@@ -897,7 +890,8 @@
)
)
(if
- (i32.eqz
+ (get_local $j)
+ (set_local $B
(get_local $j)
)
(block
@@ -907,7 +901,8 @@
)
)
(if
- (i32.eqz
+ (get_local $f)
+ (set_local $B
(get_local $f)
)
(block
@@ -919,14 +914,8 @@
)
(br $while-out$6)
)
- (set_local $B
- (get_local $f)
- )
)
)
- (set_local $B
- (get_local $j)
- )
)
(set_local $j
(i32.sub
@@ -1018,8 +1007,14 @@
)
)
(if
- (i32.eqz
- (get_local $u)
+ (get_local $u)
+ (block
+ (set_local $D
+ (get_local $u)
+ )
+ (set_local $E
+ (get_local $q)
+ )
)
(block
(set_local $f
@@ -1034,15 +1029,7 @@
)
)
(if
- (i32.eqz
- (get_local $j)
- )
- (block
- (set_local $C
- (i32.const 0)
- )
- (br $do-once$8)
- )
+ (get_local $j)
(block
(set_local $D
(get_local $j)
@@ -1051,14 +1038,12 @@
(get_local $f)
)
)
- )
- )
- (block
- (set_local $D
- (get_local $u)
- )
- (set_local $E
- (get_local $q)
+ (block
+ (set_local $C
+ (i32.const 0)
+ )
+ (br $do-once$8)
+ )
)
)
)
@@ -1098,8 +1083,14 @@
)
)
(if
- (i32.eqz
- (get_local $u)
+ (get_local $u)
+ (block
+ (set_local $D
+ (get_local $u)
+ )
+ (set_local $E
+ (get_local $q)
+ )
)
(block
(set_local $F
@@ -1110,14 +1101,6 @@
)
(br $while-out$10)
)
- (block
- (set_local $D
- (get_local $u)
- )
- (set_local $E
- (get_local $q)
- )
- )
)
(br $while-in$11)
)
@@ -1470,29 +1453,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $q)
- (get_local $f)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $q)
- (get_local $f)
- )
- )
- (set_local $H
- (i32.add
- (get_local $s)
- (i32.const 8)
- )
- )
- (set_local $I
- (get_local $s)
- )
+ (i32.and
+ (get_local $q)
+ (get_local $f)
)
(block
(set_local $f
@@ -1524,6 +1487,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $q)
+ (get_local $f)
+ )
+ )
+ (set_local $H
+ (i32.add
+ (get_local $s)
+ (i32.const 8)
+ )
+ )
+ (set_local $I
+ (get_local $s)
+ )
+ )
)
(i32.store
(get_local $H)
@@ -1567,6 +1548,9 @@
(get_local $p)
)
)
+ (set_local $y
+ (get_local $d)
+ )
)
)
(set_local $y
@@ -1601,12 +1585,7 @@
)
)
(if
- (i32.eqz
- (get_local $q)
- )
- (set_local $y
- (get_local $e)
- )
+ (get_local $q)
(block
(set_local $f
(i32.sub
@@ -1621,12 +1600,7 @@
)
)
(if
- (i32.eqz
- (get_local $o)
- )
- (set_local $J
- (i32.const 0)
- )
+ (get_local $o)
(if
(i32.gt_u
(get_local $e)
@@ -1725,6 +1699,9 @@
)
)
)
+ (set_local $J
+ (i32.const 0)
+ )
)
(set_local $t
(i32.load
@@ -1739,23 +1716,7 @@
)
(block $label$break$a
(if
- (i32.eqz
- (get_local $t)
- )
- (block
- (set_local $K
- (get_local $f)
- )
- (set_local $L
- (i32.const 0)
- )
- (set_local $M
- (i32.const 0)
- )
- (set_local $N
- (i32.const 86)
- )
- )
+ (get_local $t)
(block
(set_local $u
(get_local $f)
@@ -1934,6 +1895,20 @@
(br $while-in$18)
)
)
+ (block
+ (set_local $K
+ (get_local $f)
+ )
+ (set_local $L
+ (i32.const 0)
+ )
+ (set_local $M
+ (i32.const 0)
+ )
+ (set_local $N
+ (i32.const 86)
+ )
+ )
)
)
(if
@@ -2099,17 +2074,7 @@
)
)
(if
- (i32.eqz
- (get_local $T)
- )
- (block
- (set_local $U
- (get_local $K)
- )
- (set_local $V
- (get_local $M)
- )
- )
+ (get_local $T)
(block
(set_local $O
(get_local $K)
@@ -2124,6 +2089,14 @@
(i32.const 90)
)
)
+ (block
+ (set_local $U
+ (get_local $K)
+ )
+ (set_local $V
+ (get_local $M)
+ )
+ )
)
)
)
@@ -2196,40 +2169,33 @@
)
)
(if
- (i32.eqz
- (get_local $P)
- )
+ (get_local $P)
(block
- (set_local $U
+ (set_local $O
(get_local $g)
)
- (set_local $V
+ (set_local $Q
(get_local $i)
)
- (br $while-out$19)
+ (set_local $N
+ (i32.const 90)
+ )
)
(block
- (set_local $O
+ (set_local $U
(get_local $g)
)
- (set_local $Q
+ (set_local $V
(get_local $i)
)
- (set_local $N
- (i32.const 90)
- )
+ (br $while-out$19)
)
)
(br $while-in$20)
)
)
(if
- (i32.eqz
- (get_local $V)
- )
- (set_local $y
- (get_local $e)
- )
+ (get_local $V)
(if
(i32.lt_u
(get_local $U)
@@ -2295,8 +2261,14 @@
)
)
(if
- (i32.eqz
- (get_local $f)
+ (get_local $f)
+ (block
+ (set_local $X
+ (get_local $f)
+ )
+ (set_local $Y
+ (get_local $d)
+ )
)
(block
(set_local $t
@@ -2311,15 +2283,7 @@
)
)
(if
- (i32.eqz
- (get_local $j)
- )
- (block
- (set_local $W
- (i32.const 0)
- )
- (br $do-once$21)
- )
+ (get_local $j)
(block
(set_local $X
(get_local $j)
@@ -2328,14 +2292,12 @@
(get_local $t)
)
)
- )
- )
- (block
- (set_local $X
- (get_local $f)
- )
- (set_local $Y
- (get_local $d)
+ (block
+ (set_local $W
+ (i32.const 0)
+ )
+ (br $do-once$21)
+ )
)
)
)
@@ -2375,8 +2337,14 @@
)
)
(if
- (i32.eqz
- (get_local $f)
+ (get_local $f)
+ (block
+ (set_local $X
+ (get_local $f)
+ )
+ (set_local $Y
+ (get_local $d)
+ )
)
(block
(set_local $Z
@@ -2387,14 +2355,6 @@
)
(br $while-out$23)
)
- (block
- (set_local $X
- (get_local $f)
- )
- (set_local $Y
- (get_local $d)
- )
- )
)
(br $while-in$24)
)
@@ -2741,29 +2701,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $s)
- (get_local $d)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $s)
- (get_local $d)
- )
- )
- (set_local $$
- (i32.add
- (get_local $g)
- (i32.const 8)
- )
- )
- (set_local $aa
- (get_local $g)
- )
+ (i32.and
+ (get_local $s)
+ (get_local $d)
)
(block
(set_local $d
@@ -2795,6 +2735,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $s)
+ (get_local $d)
+ )
+ )
+ (set_local $$
+ (i32.add
+ (get_local $g)
+ (i32.const 8)
+ )
+ )
+ (set_local $aa
+ (get_local $g)
+ )
+ )
)
(i32.store
(get_local $$)
@@ -2822,12 +2780,7 @@
)
)
(if
- (i32.eqz
- (get_local $g)
- )
- (set_local $ba
- (i32.const 0)
- )
+ (get_local $g)
(if
(i32.gt_u
(get_local $U)
@@ -2926,6 +2879,9 @@
)
)
)
+ (set_local $ba
+ (i32.const 0)
+ )
)
(set_local $t
(i32.add
@@ -3065,8 +3021,17 @@
)
)
(if
- (i32.eqz
- (get_local $s)
+ (get_local $s)
+ (block
+ (set_local $q
+ (i32.shl
+ (get_local $q)
+ (i32.const 1)
+ )
+ )
+ (set_local $d
+ (get_local $s)
+ )
)
(block
(set_local $da
@@ -3080,17 +3045,6 @@
)
(br $while-out$31)
)
- (block
- (set_local $q
- (i32.shl
- (get_local $q)
- (i32.const 1)
- )
- )
- (set_local $d
- (get_local $s)
- )
- )
)
(br $while-in$32)
)
@@ -3209,8 +3163,14 @@
(get_local $e)
)
)
+ (set_local $y
+ (get_local $e)
+ )
)
)
+ (set_local $y
+ (get_local $e)
+ )
)
)
)
@@ -3546,13 +3506,14 @@
)
(block $label$break$b
(if
- (i32.eqz
- (i32.and
- (i32.load
- (i32.const 1652)
- )
- (i32.const 4)
+ (i32.and
+ (i32.load
+ (i32.const 1652)
)
+ (i32.const 4)
+ )
+ (set_local $N
+ (i32.const 188)
)
(block
(set_local $U
@@ -3562,12 +3523,7 @@
)
(block $label$break$c
(if
- (i32.eqz
- (get_local $U)
- )
- (set_local $N
- (i32.const 171)
- )
+ (get_local $U)
(block
(set_local $aa
(i32.const 1656)
@@ -3697,6 +3653,9 @@
)
)
)
+ (set_local $N
+ (i32.const 171)
+ )
)
)
(block $do-once$37
@@ -3732,14 +3691,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $$)
- (get_local $e)
- )
- )
- (set_local $la
- (get_local $c)
+ (i32.and
+ (get_local $$)
+ (get_local $e)
)
(set_local $la
(i32.add
@@ -3759,6 +3713,9 @@
)
)
)
+ (set_local $la
+ (get_local $c)
+ )
)
(set_local $aa
(i32.load
@@ -3968,9 +3925,6 @@
(i32.const 188)
)
)
- (set_local $N
- (i32.const 188)
- )
)
)
(if
@@ -4080,159 +4034,7 @@
)
(block $do-once$42
(if
- (i32.eqz
- (get_local $ja)
- )
- (block
- (set_local $ma
- (i32.load
- (i32.const 1224)
- )
- )
- (if
- (i32.or
- (i32.eq
- (get_local $ma)
- (i32.const 0)
- )
- (i32.lt_u
- (get_local $ha)
- (get_local $ma)
- )
- )
- (i32.store
- (i32.const 1224)
- (get_local $ha)
- )
- )
- (i32.store
- (i32.const 1656)
- (get_local $ha)
- )
- (i32.store
- (i32.const 1660)
- (get_local $ia)
- )
- (i32.store
- (i32.const 1668)
- (i32.const 0)
- )
- (i32.store
- (i32.const 1244)
- (i32.load
- (i32.const 1680)
- )
- )
- (i32.store
- (i32.const 1240)
- (i32.const -1)
- )
- (set_local $ma
- (i32.const 0)
- )
- (loop $do-out$44 $do-in$45
- (set_local $c
- (i32.add
- (i32.const 1248)
- (i32.shl
- (i32.shl
- (get_local $ma)
- (i32.const 1)
- )
- (i32.const 2)
- )
- )
- )
- (i32.store offset=12
- (get_local $c)
- (get_local $c)
- )
- (i32.store offset=8
- (get_local $c)
- (get_local $c)
- )
- (set_local $ma
- (i32.add
- (get_local $ma)
- (i32.const 1)
- )
- )
- (br_if $do-in$45
- (i32.ne
- (get_local $ma)
- (i32.const 32)
- )
- )
- )
- (set_local $ma
- (i32.add
- (get_local $ha)
- (i32.const 8)
- )
- )
- (set_local $c
- (if
- (i32.eq
- (i32.and
- (get_local $ma)
- (i32.const 7)
- )
- (i32.const 0)
- )
- (i32.const 0)
- (i32.and
- (i32.sub
- (i32.const 0)
- (get_local $ma)
- )
- (i32.const 7)
- )
- )
- )
- (set_local $ma
- (i32.add
- (get_local $ha)
- (get_local $c)
- )
- )
- (set_local $ka
- (i32.sub
- (i32.add
- (get_local $ia)
- (i32.const -40)
- )
- (get_local $c)
- )
- )
- (i32.store
- (i32.const 1232)
- (get_local $ma)
- )
- (i32.store
- (i32.const 1220)
- (get_local $ka)
- )
- (i32.store offset=4
- (get_local $ma)
- (i32.or
- (get_local $ka)
- (i32.const 1)
- )
- )
- (i32.store offset=4
- (i32.add
- (get_local $ma)
- (get_local $ka)
- )
- (i32.const 40)
- )
- (i32.store
- (i32.const 1236)
- (i32.load
- (i32.const 1696)
- )
- )
- )
+ (get_local $ja)
(block
(set_local $ka
(i32.const 1656)
@@ -4478,13 +4280,14 @@
(i32.const 209)
)
(if
- (i32.eqz
- (i32.and
- (i32.load offset=12
- (get_local $va)
- )
- (i32.const 8)
+ (i32.and
+ (i32.load offset=12
+ (get_local $va)
)
+ (i32.const 8)
+ )
+ (set_local $wa
+ (i32.const 1656)
)
(block
(i32.store
@@ -4851,8 +4654,14 @@
)
)
(if
- (i32.eqz
- (get_local $ba)
+ (get_local $ba)
+ (block
+ (set_local $za
+ (get_local $ba)
+ )
+ (set_local $Aa
+ (get_local $aa)
+ )
)
(block
(set_local $W
@@ -4861,15 +4670,7 @@
)
)
(if
- (i32.eqz
- (get_local $W)
- )
- (block
- (set_local $ya
- (i32.const 0)
- )
- (br $do-once$57)
- )
+ (get_local $W)
(block
(set_local $za
(get_local $W)
@@ -4878,14 +4679,12 @@
(get_local $U)
)
)
- )
- )
- (block
- (set_local $za
- (get_local $ba)
- )
- (set_local $Aa
- (get_local $aa)
+ (block
+ (set_local $ya
+ (i32.const 0)
+ )
+ (br $do-once$57)
+ )
)
)
)
@@ -4925,8 +4724,14 @@
)
)
(if
- (i32.eqz
- (get_local $ba)
+ (get_local $ba)
+ (block
+ (set_local $za
+ (get_local $ba)
+ )
+ (set_local $Aa
+ (get_local $aa)
+ )
)
(block
(set_local $Ba
@@ -4937,14 +4742,6 @@
)
(br $while-out$59)
)
- (block
- (set_local $za
- (get_local $ba)
- )
- (set_local $Aa
- (get_local $aa)
- )
- )
)
(br $while-in$60)
)
@@ -5289,29 +5086,9 @@
)
(block $do-once$65
(if
- (i32.eqz
- (i32.and
- (get_local $V)
- (get_local $e)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $V)
- (get_local $e)
- )
- )
- (set_local $Fa
- (i32.add
- (get_local $la)
- (i32.const 8)
- )
- )
- (set_local $Ga
- (get_local $la)
- )
+ (i32.and
+ (get_local $V)
+ (get_local $e)
)
(block
(set_local $fa
@@ -5344,6 +5121,24 @@
)
(call_import $qa)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $V)
+ (get_local $e)
+ )
+ )
+ (set_local $Fa
+ (i32.add
+ (get_local $la)
+ (i32.const 8)
+ )
+ )
+ (set_local $Ga
+ (get_local $la)
+ )
+ )
)
)
(i32.store
@@ -5373,12 +5168,7 @@
)
(block $do-once$67
(if
- (i32.eqz
- (get_local $e)
- )
- (set_local $Ha
- (i32.const 0)
- )
+ (get_local $e)
(block
(if
(i32.gt_u
@@ -5480,6 +5270,9 @@
)
)
)
+ (set_local $Ha
+ (i32.const 0)
+ )
)
)
(set_local $e
@@ -5620,8 +5413,17 @@
)
)
(if
- (i32.eqz
- (get_local $ga)
+ (get_local $ga)
+ (block
+ (set_local $aa
+ (i32.shl
+ (get_local $aa)
+ (i32.const 1)
+ )
+ )
+ (set_local $la
+ (get_local $ga)
+ )
)
(block
(set_local $Ja
@@ -5635,17 +5437,6 @@
)
(br $while-out$69)
)
- (block
- (set_local $aa
- (i32.shl
- (get_local $aa)
- (i32.const 1)
- )
- )
- (set_local $la
- (get_local $ga)
- )
- )
)
(br $while-in$70)
)
@@ -5760,9 +5551,6 @@
(get_local $p)
)
)
- (set_local $wa
- (i32.const 1656)
- )
)
)
(loop $while-out$71 $while-in$72
@@ -6075,29 +5863,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $la)
- (get_local $ga)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $la)
- (get_local $ga)
- )
- )
- (set_local $Ma
- (i32.add
- (get_local $c)
- (i32.const 8)
- )
- )
- (set_local $Na
- (get_local $c)
- )
+ (i32.and
+ (get_local $la)
+ (get_local $ga)
)
(block
(set_local $ga
@@ -6129,6 +5897,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $la)
+ (get_local $ga)
+ )
+ )
+ (set_local $Ma
+ (i32.add
+ (get_local $c)
+ (i32.const 8)
+ )
+ )
+ (set_local $Na
+ (get_local $c)
+ )
+ )
)
(i32.store
(get_local $Ma)
@@ -6156,12 +5942,7 @@
)
)
(if
- (i32.eqz
- (get_local $c)
- )
- (set_local $Oa
- (i32.const 0)
- )
+ (get_local $c)
(if
(i32.gt_u
(get_local $ka)
@@ -6260,6 +6041,9 @@
)
)
)
+ (set_local $Oa
+ (i32.const 0)
+ )
)
(set_local $e
(i32.add
@@ -6393,8 +6177,17 @@
)
)
(if
- (i32.eqz
- (get_local $la)
+ (get_local $la)
+ (block
+ (set_local $ma
+ (i32.shl
+ (get_local $ma)
+ (i32.const 1)
+ )
+ )
+ (set_local $ga
+ (get_local $la)
+ )
)
(block
(set_local $Ra
@@ -6408,17 +6201,6 @@
)
(br $while-out$75)
)
- (block
- (set_local $ma
- (i32.shl
- (get_local $ma)
- (i32.const 1)
- )
- )
- (set_local $ga
- (get_local $la)
- )
- )
)
(br $while-in$76)
)
@@ -6519,6 +6301,156 @@
)
)
)
+ (block
+ (set_local $ma
+ (i32.load
+ (i32.const 1224)
+ )
+ )
+ (if
+ (i32.or
+ (i32.eq
+ (get_local $ma)
+ (i32.const 0)
+ )
+ (i32.lt_u
+ (get_local $ha)
+ (get_local $ma)
+ )
+ )
+ (i32.store
+ (i32.const 1224)
+ (get_local $ha)
+ )
+ )
+ (i32.store
+ (i32.const 1656)
+ (get_local $ha)
+ )
+ (i32.store
+ (i32.const 1660)
+ (get_local $ia)
+ )
+ (i32.store
+ (i32.const 1668)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 1244)
+ (i32.load
+ (i32.const 1680)
+ )
+ )
+ (i32.store
+ (i32.const 1240)
+ (i32.const -1)
+ )
+ (set_local $ma
+ (i32.const 0)
+ )
+ (loop $do-out$44 $do-in$45
+ (set_local $c
+ (i32.add
+ (i32.const 1248)
+ (i32.shl
+ (i32.shl
+ (get_local $ma)
+ (i32.const 1)
+ )
+ (i32.const 2)
+ )
+ )
+ )
+ (i32.store offset=12
+ (get_local $c)
+ (get_local $c)
+ )
+ (i32.store offset=8
+ (get_local $c)
+ (get_local $c)
+ )
+ (set_local $ma
+ (i32.add
+ (get_local $ma)
+ (i32.const 1)
+ )
+ )
+ (br_if $do-in$45
+ (i32.ne
+ (get_local $ma)
+ (i32.const 32)
+ )
+ )
+ )
+ (set_local $ma
+ (i32.add
+ (get_local $ha)
+ (i32.const 8)
+ )
+ )
+ (set_local $c
+ (if
+ (i32.eq
+ (i32.and
+ (get_local $ma)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ )
+ (i32.const 0)
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (get_local $ma)
+ )
+ (i32.const 7)
+ )
+ )
+ )
+ (set_local $ma
+ (i32.add
+ (get_local $ha)
+ (get_local $c)
+ )
+ )
+ (set_local $ka
+ (i32.sub
+ (i32.add
+ (get_local $ia)
+ (i32.const -40)
+ )
+ (get_local $c)
+ )
+ )
+ (i32.store
+ (i32.const 1232)
+ (get_local $ma)
+ )
+ (i32.store
+ (i32.const 1220)
+ (get_local $ka)
+ )
+ (i32.store offset=4
+ (get_local $ma)
+ (i32.or
+ (get_local $ka)
+ (i32.const 1)
+ )
+ )
+ (i32.store offset=4
+ (i32.add
+ (get_local $ma)
+ (get_local $ka)
+ )
+ (i32.const 40)
+ )
+ (i32.store
+ (i32.const 1236)
+ (i32.load
+ (i32.const 1696)
+ )
+ )
+ )
)
)
(set_local $ja
@@ -6702,10 +6634,16 @@
)
(block $do-once$0
(if
- (i32.eqz
- (i32.and
- (get_local $d)
- (i32.const 1)
+ (i32.and
+ (get_local $d)
+ (i32.const 1)
+ )
+ (block
+ (set_local $m
+ (get_local $b)
+ )
+ (set_local $n
+ (get_local $e)
)
)
(block
@@ -6986,8 +6924,14 @@
)
)
(if
- (i32.eqz
- (get_local $q)
+ (get_local $q)
+ (block
+ (set_local $t
+ (get_local $q)
+ )
+ (set_local $u
+ (get_local $l)
+ )
)
(block
(set_local $r
@@ -6996,15 +6940,7 @@
)
)
(if
- (i32.eqz
- (get_local $r)
- )
- (block
- (set_local $s
- (i32.const 0)
- )
- (br $do-once$2)
- )
+ (get_local $r)
(block
(set_local $t
(get_local $r)
@@ -7013,14 +6949,12 @@
(get_local $o)
)
)
- )
- )
- (block
- (set_local $t
- (get_local $q)
- )
- (set_local $u
- (get_local $l)
+ (block
+ (set_local $s
+ (i32.const 0)
+ )
+ (br $do-once$2)
+ )
)
)
)
@@ -7060,8 +6994,14 @@
)
)
(if
- (i32.eqz
- (get_local $q)
+ (get_local $q)
+ (block
+ (set_local $t
+ (get_local $q)
+ )
+ (set_local $u
+ (get_local $l)
+ )
)
(block
(set_local $v
@@ -7072,14 +7012,6 @@
)
(br $while-out$4)
)
- (block
- (set_local $t
- (get_local $q)
- )
- (set_local $u
- (get_local $l)
- )
- )
)
(br $while-in$5)
)
@@ -7162,17 +7094,7 @@
)
)
(if
- (i32.eqz
- (get_local $g)
- )
- (block
- (set_local $m
- (get_local $h)
- )
- (set_local $n
- (get_local $i)
- )
- )
+ (get_local $g)
(block
(set_local $j
(i32.load offset=28
@@ -7334,17 +7256,7 @@
)
)
(if
- (i32.eqz
- (get_local $o)
- )
- (block
- (set_local $m
- (get_local $h)
- )
- (set_local $n
- (get_local $i)
- )
- )
+ (get_local $o)
(if
(i32.lt_u
(get_local $o)
@@ -7371,16 +7283,24 @@
(br $do-once$0)
)
)
+ (block
+ (set_local $m
+ (get_local $h)
+ )
+ (set_local $n
+ (get_local $i)
+ )
+ )
+ )
+ )
+ (block
+ (set_local $m
+ (get_local $h)
+ )
+ (set_local $n
+ (get_local $i)
)
)
- )
- )
- (block
- (set_local $m
- (get_local $b)
- )
- (set_local $n
- (get_local $e)
)
)
)
@@ -7413,10 +7333,34 @@
(call_import $qa)
)
(if
- (i32.eqz
- (i32.and
- (get_local $b)
- (i32.const 2)
+ (i32.and
+ (get_local $b)
+ (i32.const 2)
+ )
+ (block
+ (i32.store
+ (get_local $e)
+ (i32.and
+ (get_local $b)
+ (i32.const -2)
+ )
+ )
+ (i32.store offset=4
+ (get_local $m)
+ (i32.or
+ (get_local $n)
+ (i32.const 1)
+ )
+ )
+ (i32.store
+ (i32.add
+ (get_local $m)
+ (get_local $n)
+ )
+ (get_local $n)
+ )
+ (set_local $D
+ (get_local $n)
)
)
(block
@@ -7692,8 +7636,14 @@
)
)
(if
- (i32.eqz
- (get_local $p)
+ (get_local $p)
+ (block
+ (set_local $z
+ (get_local $p)
+ )
+ (set_local $A
+ (get_local $t)
+ )
)
(block
(set_local $a
@@ -7702,15 +7652,7 @@
)
)
(if
- (i32.eqz
- (get_local $a)
- )
- (block
- (set_local $y
- (i32.const 0)
- )
- (br $do-once$10)
- )
+ (get_local $a)
(block
(set_local $z
(get_local $a)
@@ -7719,14 +7661,12 @@
(get_local $u)
)
)
- )
- )
- (block
- (set_local $z
- (get_local $p)
- )
- (set_local $A
- (get_local $t)
+ (block
+ (set_local $y
+ (i32.const 0)
+ )
+ (br $do-once$10)
+ )
)
)
)
@@ -7766,8 +7706,14 @@
)
)
(if
- (i32.eqz
- (get_local $p)
+ (get_local $p)
+ (block
+ (set_local $z
+ (get_local $p)
+ )
+ (set_local $A
+ (get_local $t)
+ )
)
(block
(set_local $B
@@ -7778,14 +7724,6 @@
)
(br $while-out$12)
)
- (block
- (set_local $z
- (get_local $p)
- )
- (set_local $A
- (get_local $t)
- )
- )
)
(br $while-in$13)
)
@@ -8079,32 +8017,6 @@
)
)
)
- (block
- (i32.store
- (get_local $e)
- (i32.and
- (get_local $b)
- (i32.const -2)
- )
- )
- (i32.store offset=4
- (get_local $m)
- (i32.or
- (get_local $n)
- (i32.const 1)
- )
- )
- (i32.store
- (i32.add
- (get_local $m)
- (get_local $n)
- )
- (get_local $n)
- )
- (set_local $D
- (get_local $n)
- )
- )
)
(set_local $n
(i32.shr_u
@@ -8142,29 +8054,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $e)
- (get_local $s)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $e)
- (get_local $s)
- )
- )
- (set_local $E
- (i32.add
- (get_local $b)
- (i32.const 8)
- )
- )
- (set_local $F
- (get_local $b)
- )
+ (i32.and
+ (get_local $e)
+ (get_local $s)
)
(block
(set_local $s
@@ -8196,6 +8088,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $e)
+ (get_local $s)
+ )
+ )
+ (set_local $E
+ (i32.add
+ (get_local $b)
+ (i32.const 8)
+ )
+ )
+ (set_local $F
+ (get_local $b)
+ )
+ )
)
(i32.store
(get_local $E)
@@ -8223,12 +8133,7 @@
)
)
(if
- (i32.eqz
- (get_local $b)
- )
- (set_local $G
- (i32.const 0)
- )
+ (get_local $b)
(if
(i32.gt_u
(get_local $D)
@@ -8327,6 +8232,9 @@
)
)
)
+ (set_local $G
+ (i32.const 0)
+ )
)
(set_local $s
(i32.add
@@ -8362,36 +8270,9 @@
)
(block $do-once$16
(if
- (i32.eqz
- (i32.and
- (get_local $E)
- (get_local $e)
- )
- )
- (block
- (i32.store
- (i32.const 1212)
- (i32.or
- (get_local $E)
- (get_local $e)
- )
- )
- (i32.store
- (get_local $s)
- (get_local $m)
- )
- (i32.store offset=24
- (get_local $m)
- (get_local $s)
- )
- (i32.store offset=12
- (get_local $m)
- (get_local $m)
- )
- (i32.store offset=8
- (get_local $m)
- (get_local $m)
- )
+ (i32.and
+ (get_local $E)
+ (get_local $e)
)
(block
(set_local $F
@@ -8460,8 +8341,17 @@
)
)
(if
- (i32.eqz
- (get_local $y)
+ (get_local $y)
+ (block
+ (set_local $F
+ (i32.shl
+ (get_local $F)
+ (i32.const 1)
+ )
+ )
+ (set_local $b
+ (get_local $y)
+ )
)
(block
(set_local $J
@@ -8475,17 +8365,6 @@
)
(br $while-out$18)
)
- (block
- (set_local $F
- (i32.shl
- (get_local $F)
- (i32.const 1)
- )
- )
- (set_local $b
- (get_local $y)
- )
- )
)
(br $while-in$19)
)
@@ -8584,6 +8463,31 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1212)
+ (i32.or
+ (get_local $E)
+ (get_local $e)
+ )
+ )
+ (i32.store
+ (get_local $s)
+ (get_local $m)
+ )
+ (i32.store offset=24
+ (get_local $m)
+ (get_local $s)
+ )
+ (i32.store offset=12
+ (get_local $m)
+ (get_local $m)
+ )
+ (i32.store offset=8
+ (get_local $m)
+ (get_local $m)
+ )
+ )
)
)
(set_local $m
@@ -8599,13 +8503,11 @@
(get_local $m)
)
(if
- (i32.eqz
- (get_local $m)
- )
+ (get_local $m)
+ (return)
(set_local $L
(i32.const 1664)
)
- (return)
)
(loop $while-out$20 $while-in$21
(set_local $m
@@ -8614,16 +8516,14 @@
)
)
(if
- (i32.eqz
- (get_local $m)
- )
- (br $while-out$20)
+ (get_local $m)
(set_local $L
(i32.add
(get_local $m)
(i32.const 8)
)
)
+ (br $while-out$20)
)
(br $while-in$21)
)
@@ -8751,68 +8651,66 @@
)
(loop $while-out$0 $while-in$1
(if
- (i32.eqz
- (i32.load
- (i32.const 1160)
- )
+ (i32.load
+ (i32.const 1160)
)
(block
+ (call_import $ra
+ (i32.const 1)
+ (get_local $a)
+ )
(i32.store
- (get_local $e)
+ (get_local $f)
(i32.load
(get_local $b)
)
)
(i32.store offset=4
- (get_local $e)
+ (get_local $f)
(get_local $m)
)
(i32.store offset=8
- (get_local $e)
+ (get_local $f)
(get_local $g)
)
- (set_local $o
+ (set_local $l
(call $Pa
(call_import $ya
(i32.const 146)
- (get_local $e)
+ (get_local $f)
)
)
)
+ (call_import $oa
+ (i32.const 0)
+ )
+ (set_local $o
+ (get_local $l)
+ )
)
(block
- (call_import $ra
- (i32.const 1)
- (get_local $a)
- )
(i32.store
- (get_local $f)
+ (get_local $e)
(i32.load
(get_local $b)
)
)
(i32.store offset=4
- (get_local $f)
+ (get_local $e)
(get_local $m)
)
(i32.store offset=8
- (get_local $f)
+ (get_local $e)
(get_local $g)
)
- (set_local $l
+ (set_local $o
(call $Pa
(call_import $ya
(i32.const 146)
- (get_local $f)
+ (get_local $e)
)
)
)
- (call_import $oa
- (i32.const 0)
- )
- (set_local $o
- (get_local $l)
- )
)
)
(if
@@ -9085,14 +8983,21 @@
)
)
(if
- (i32.eqz
- (get_local $e)
+ (get_local $e)
+ (block
+ (set_local $f
+ (get_local $e)
+ )
+ (set_local $g
+ (i32.const 5)
+ )
)
(if
- (i32.eqz
- (call $Xa
- (get_local $c)
- )
+ (call $Xa
+ (get_local $c)
+ )
+ (set_local $h
+ (i32.const 0)
)
(block
(set_local $f
@@ -9104,17 +9009,6 @@
(i32.const 5)
)
)
- (set_local $h
- (i32.const 0)
- )
- )
- (block
- (set_local $f
- (get_local $e)
- )
- (set_local $g
- (i32.const 5)
- )
)
)
(block $label$break$a
@@ -9332,19 +9226,9 @@
)
(block $label$break$a
(if
- (i32.eqz
- (i32.and
- (get_local $b)
- (i32.const 3)
- )
- )
- (block
- (set_local $c
- (get_local $a)
- )
- (set_local $d
- (i32.const 4)
- )
+ (i32.and
+ (get_local $b)
+ (i32.const 3)
)
(block
(set_local $e
@@ -9377,11 +9261,12 @@
(get_local $h)
)
(if
- (i32.eqz
- (i32.and
- (get_local $f)
- (i32.const 3)
- )
+ (i32.and
+ (get_local $f)
+ (i32.const 3)
+ )
+ (set_local $e
+ (get_local $h)
)
(block
(set_local $c
@@ -9392,13 +9277,18 @@
)
(br $while-out$1)
)
- (set_local $e
- (get_local $h)
- )
)
(br $while-in$2)
)
)
+ (block
+ (set_local $c
+ (get_local $a)
+ )
+ (set_local $d
+ (i32.const 4)
+ )
+ )
)
)
(if
@@ -9417,25 +9307,17 @@
)
)
(if
- (i32.eqz
- (i32.and
- (i32.xor
- (i32.and
- (get_local $c)
- (i32.const -2139062144)
- )
- (i32.const -2139062144)
- )
- (i32.add
+ (i32.and
+ (i32.xor
+ (i32.and
(get_local $c)
- (i32.const -16843009)
+ (i32.const -2139062144)
)
+ (i32.const -2139062144)
)
- )
- (set_local $d
(i32.add
- (get_local $d)
- (i32.const 4)
+ (get_local $c)
+ (i32.const -16843009)
)
)
(block
@@ -9447,24 +9329,25 @@
)
(br $while-out$3)
)
+ (set_local $d
+ (i32.add
+ (get_local $d)
+ (i32.const 4)
+ )
+ )
)
(br $while-in$4)
)
(if
- (i32.eqz
- (i32.shr_s
- (i32.shl
- (i32.and
- (get_local $j)
- (i32.const 255)
- )
- (i32.const 24)
+ (i32.shr_s
+ (i32.shl
+ (i32.and
+ (get_local $j)
+ (i32.const 255)
)
(i32.const 24)
)
- )
- (set_local $m
- (get_local $l)
+ (i32.const 24)
)
(block
(set_local $j
@@ -9478,10 +9361,11 @@
)
)
(if
- (i32.eqz
- (i32.load8_s
- (get_local $l)
- )
+ (i32.load8_s
+ (get_local $l)
+ )
+ (set_local $j
+ (get_local $l)
)
(block
(set_local $m
@@ -9489,13 +9373,13 @@
)
(br $while-out$5)
)
- (set_local $j
- (get_local $l)
- )
)
(br $while-in$6)
)
)
+ (set_local $m
+ (get_local $l)
+ )
)
(set_local $g
(get_local $m)
@@ -9519,19 +9403,57 @@
(local $d i32)
(block $do-once$0
(if
- (i32.eqz
- (get_local $a)
- )
+ (get_local $a)
(block
(if
- (i32.eqz
- (i32.load
- (i32.const 1140)
+ (i32.le_s
+ (i32.load offset=76
+ (get_local $a)
)
+ (i32.const -1)
)
- (set_local $b
+ (block
+ (set_local $h
+ (call $$a
+ (get_local $a)
+ )
+ )
+ (br $do-once$0)
+ )
+ )
+ (set_local $c
+ (i32.eq
+ (call $Ya
+ (get_local $a)
+ )
(i32.const 0)
)
+ )
+ (set_local $e
+ (call $$a
+ (get_local $a)
+ )
+ )
+ (if
+ (get_local $c)
+ (set_local $h
+ (get_local $e)
+ )
+ (block
+ (call $Ta
+ (get_local $a)
+ )
+ (set_local $h
+ (get_local $e)
+ )
+ )
+ )
+ )
+ (block
+ (if
+ (i32.load
+ (i32.const 1140)
+ )
(set_local $b
(call $_a
(i32.load
@@ -9539,6 +9461,9 @@
)
)
)
+ (set_local $b
+ (i32.const 0)
+ )
)
(call_import $pa
(i32.const 1188)
@@ -9549,12 +9474,7 @@
)
)
(if
- (i32.eqz
- (get_local $c)
- )
- (set_local $d
- (get_local $b)
- )
+ (get_local $c)
(block
(set_local $e
(get_local $c)
@@ -9612,8 +9532,9 @@
)
)
(if
- (i32.eqz
- (get_local $e)
+ (get_local $e)
+ (set_local $c
+ (get_local $g)
)
(block
(set_local $d
@@ -9621,13 +9542,13 @@
)
(br $while-out$2)
)
- (set_local $c
- (get_local $g)
- )
)
(br $while-in$3)
)
)
+ (set_local $d
+ (get_local $b)
+ )
)
(call_import $xa
(i32.const 1188)
@@ -9636,51 +9557,6 @@
(get_local $d)
)
)
- (block
- (if
- (i32.le_s
- (i32.load offset=76
- (get_local $a)
- )
- (i32.const -1)
- )
- (block
- (set_local $h
- (call $$a
- (get_local $a)
- )
- )
- (br $do-once$0)
- )
- )
- (set_local $c
- (i32.eq
- (call $Ya
- (get_local $a)
- )
- (i32.const 0)
- )
- )
- (set_local $e
- (call $$a
- (get_local $a)
- )
- )
- (if
- (get_local $c)
- (set_local $h
- (get_local $e)
- )
- (block
- (call $Ta
- (get_local $a)
- )
- (set_local $h
- (get_local $e)
- )
- )
- )
- )
)
)
(return
@@ -9736,14 +9612,21 @@
)
)
(if
- (i32.eqz
- (get_local $g)
+ (get_local $g)
+ (block
+ (set_local $h
+ (get_local $g)
+ )
+ (set_local $j
+ (i32.const 4)
+ )
)
(if
- (i32.eqz
- (call $Xa
- (get_local $a)
- )
+ (call $Xa
+ (get_local $a)
+ )
+ (set_local $m
+ (i32.const -1)
)
(block
(set_local $h
@@ -9755,17 +9638,6 @@
(i32.const 4)
)
)
- (set_local $m
- (i32.const -1)
- )
- )
- (block
- (set_local $h
- (get_local $g)
- )
- (set_local $j
- (i32.const 4)
- )
)
)
(block $do-once$0
@@ -9908,17 +9780,15 @@
(i32.const 0)
)
(if
- (i32.eqz
- (i32.load
- (get_local $b)
- )
- )
- (set_local $d
- (i32.const -1)
+ (i32.load
+ (get_local $b)
)
(set_local $e
(i32.const 3)
)
+ (set_local $d
+ (i32.const -1)
+ )
)
)
(set_local $e
@@ -10447,10 +10317,20 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $c)
- (i32.const 8)
+ (i32.and
+ (get_local $c)
+ (i32.const 8)
+ )
+ (block
+ (i32.store
+ (get_local $a)
+ (i32.or
+ (get_local $c)
+ (i32.const 32)
+ )
+ )
+ (set_local $d
+ (i32.const -1)
)
)
(block
@@ -10488,18 +10368,6 @@
(i32.const 0)
)
)
- (block
- (i32.store
- (get_local $a)
- (i32.or
- (get_local $c)
- (i32.const 32)
- )
- )
- (set_local $d
- (i32.const -1)
- )
- )
)
(return
(get_local $d)
@@ -10920,13 +10788,8 @@
(local $a i32)
(local $b i32)
(if
- (i32.eqz
- (i32.load
- (i32.const 1160)
- )
- )
- (set_local $a
- (i32.const 1204)
+ (i32.load
+ (i32.const 1160)
)
(block
(set_local $b
@@ -10941,6 +10804,9 @@
)
)
)
+ (set_local $a
+ (i32.const 1204)
+ )
)
(return
(get_local $a)
diff --git a/test/memorygrowth.fromasm.imprecise b/test/memorygrowth.fromasm.imprecise
index f17a8a053..521a533ae 100644
--- a/test/memorygrowth.fromasm.imprecise
+++ b/test/memorygrowth.fromasm.imprecise
@@ -657,29 +657,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $e)
- (get_local $g)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $e)
- (get_local $g)
- )
- )
- (set_local $w
- (i32.add
- (get_local $f)
- (i32.const 8)
- )
- )
- (set_local $x
- (get_local $f)
- )
+ (i32.and
+ (get_local $e)
+ (get_local $g)
)
(block
(set_local $g
@@ -711,6 +691,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $e)
+ (get_local $g)
+ )
+ )
+ (set_local $w
+ (i32.add
+ (get_local $f)
+ (i32.const 8)
+ )
+ )
+ (set_local $x
+ (get_local $f)
+ )
+ )
)
(i32.store
(get_local $w)
@@ -756,12 +754,7 @@
)
)
(if
- (i32.eqz
- (get_local $t)
- )
- (set_local $y
- (get_local $d)
- )
+ (get_local $t)
(block
(set_local $i
(i32.add
@@ -897,7 +890,8 @@
)
)
(if
- (i32.eqz
+ (get_local $j)
+ (set_local $B
(get_local $j)
)
(block
@@ -907,7 +901,8 @@
)
)
(if
- (i32.eqz
+ (get_local $f)
+ (set_local $B
(get_local $f)
)
(block
@@ -919,14 +914,8 @@
)
(br $while-out$6)
)
- (set_local $B
- (get_local $f)
- )
)
)
- (set_local $B
- (get_local $j)
- )
)
(set_local $j
(i32.sub
@@ -1018,8 +1007,14 @@
)
)
(if
- (i32.eqz
- (get_local $u)
+ (get_local $u)
+ (block
+ (set_local $D
+ (get_local $u)
+ )
+ (set_local $E
+ (get_local $q)
+ )
)
(block
(set_local $f
@@ -1034,15 +1029,7 @@
)
)
(if
- (i32.eqz
- (get_local $j)
- )
- (block
- (set_local $C
- (i32.const 0)
- )
- (br $do-once$8)
- )
+ (get_local $j)
(block
(set_local $D
(get_local $j)
@@ -1051,14 +1038,12 @@
(get_local $f)
)
)
- )
- )
- (block
- (set_local $D
- (get_local $u)
- )
- (set_local $E
- (get_local $q)
+ (block
+ (set_local $C
+ (i32.const 0)
+ )
+ (br $do-once$8)
+ )
)
)
)
@@ -1098,8 +1083,14 @@
)
)
(if
- (i32.eqz
- (get_local $u)
+ (get_local $u)
+ (block
+ (set_local $D
+ (get_local $u)
+ )
+ (set_local $E
+ (get_local $q)
+ )
)
(block
(set_local $F
@@ -1110,14 +1101,6 @@
)
(br $while-out$10)
)
- (block
- (set_local $D
- (get_local $u)
- )
- (set_local $E
- (get_local $q)
- )
- )
)
(br $while-in$11)
)
@@ -1470,29 +1453,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $q)
- (get_local $f)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $q)
- (get_local $f)
- )
- )
- (set_local $H
- (i32.add
- (get_local $s)
- (i32.const 8)
- )
- )
- (set_local $I
- (get_local $s)
- )
+ (i32.and
+ (get_local $q)
+ (get_local $f)
)
(block
(set_local $f
@@ -1524,6 +1487,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $q)
+ (get_local $f)
+ )
+ )
+ (set_local $H
+ (i32.add
+ (get_local $s)
+ (i32.const 8)
+ )
+ )
+ (set_local $I
+ (get_local $s)
+ )
+ )
)
(i32.store
(get_local $H)
@@ -1567,6 +1548,9 @@
(get_local $p)
)
)
+ (set_local $y
+ (get_local $d)
+ )
)
)
(set_local $y
@@ -1601,12 +1585,7 @@
)
)
(if
- (i32.eqz
- (get_local $q)
- )
- (set_local $y
- (get_local $e)
- )
+ (get_local $q)
(block
(set_local $f
(i32.sub
@@ -1621,12 +1600,7 @@
)
)
(if
- (i32.eqz
- (get_local $o)
- )
- (set_local $J
- (i32.const 0)
- )
+ (get_local $o)
(if
(i32.gt_u
(get_local $e)
@@ -1725,6 +1699,9 @@
)
)
)
+ (set_local $J
+ (i32.const 0)
+ )
)
(set_local $t
(i32.load
@@ -1739,23 +1716,7 @@
)
(block $label$break$a
(if
- (i32.eqz
- (get_local $t)
- )
- (block
- (set_local $K
- (get_local $f)
- )
- (set_local $L
- (i32.const 0)
- )
- (set_local $M
- (i32.const 0)
- )
- (set_local $N
- (i32.const 86)
- )
- )
+ (get_local $t)
(block
(set_local $u
(get_local $f)
@@ -1934,6 +1895,20 @@
(br $while-in$18)
)
)
+ (block
+ (set_local $K
+ (get_local $f)
+ )
+ (set_local $L
+ (i32.const 0)
+ )
+ (set_local $M
+ (i32.const 0)
+ )
+ (set_local $N
+ (i32.const 86)
+ )
+ )
)
)
(if
@@ -2099,17 +2074,7 @@
)
)
(if
- (i32.eqz
- (get_local $T)
- )
- (block
- (set_local $U
- (get_local $K)
- )
- (set_local $V
- (get_local $M)
- )
- )
+ (get_local $T)
(block
(set_local $O
(get_local $K)
@@ -2124,6 +2089,14 @@
(i32.const 90)
)
)
+ (block
+ (set_local $U
+ (get_local $K)
+ )
+ (set_local $V
+ (get_local $M)
+ )
+ )
)
)
)
@@ -2196,40 +2169,33 @@
)
)
(if
- (i32.eqz
- (get_local $P)
- )
+ (get_local $P)
(block
- (set_local $U
+ (set_local $O
(get_local $g)
)
- (set_local $V
+ (set_local $Q
(get_local $i)
)
- (br $while-out$19)
+ (set_local $N
+ (i32.const 90)
+ )
)
(block
- (set_local $O
+ (set_local $U
(get_local $g)
)
- (set_local $Q
+ (set_local $V
(get_local $i)
)
- (set_local $N
- (i32.const 90)
- )
+ (br $while-out$19)
)
)
(br $while-in$20)
)
)
(if
- (i32.eqz
- (get_local $V)
- )
- (set_local $y
- (get_local $e)
- )
+ (get_local $V)
(if
(i32.lt_u
(get_local $U)
@@ -2295,8 +2261,14 @@
)
)
(if
- (i32.eqz
- (get_local $f)
+ (get_local $f)
+ (block
+ (set_local $X
+ (get_local $f)
+ )
+ (set_local $Y
+ (get_local $d)
+ )
)
(block
(set_local $t
@@ -2311,15 +2283,7 @@
)
)
(if
- (i32.eqz
- (get_local $j)
- )
- (block
- (set_local $W
- (i32.const 0)
- )
- (br $do-once$21)
- )
+ (get_local $j)
(block
(set_local $X
(get_local $j)
@@ -2328,14 +2292,12 @@
(get_local $t)
)
)
- )
- )
- (block
- (set_local $X
- (get_local $f)
- )
- (set_local $Y
- (get_local $d)
+ (block
+ (set_local $W
+ (i32.const 0)
+ )
+ (br $do-once$21)
+ )
)
)
)
@@ -2375,8 +2337,14 @@
)
)
(if
- (i32.eqz
- (get_local $f)
+ (get_local $f)
+ (block
+ (set_local $X
+ (get_local $f)
+ )
+ (set_local $Y
+ (get_local $d)
+ )
)
(block
(set_local $Z
@@ -2387,14 +2355,6 @@
)
(br $while-out$23)
)
- (block
- (set_local $X
- (get_local $f)
- )
- (set_local $Y
- (get_local $d)
- )
- )
)
(br $while-in$24)
)
@@ -2741,29 +2701,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $s)
- (get_local $d)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $s)
- (get_local $d)
- )
- )
- (set_local $$
- (i32.add
- (get_local $g)
- (i32.const 8)
- )
- )
- (set_local $aa
- (get_local $g)
- )
+ (i32.and
+ (get_local $s)
+ (get_local $d)
)
(block
(set_local $d
@@ -2795,6 +2735,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $s)
+ (get_local $d)
+ )
+ )
+ (set_local $$
+ (i32.add
+ (get_local $g)
+ (i32.const 8)
+ )
+ )
+ (set_local $aa
+ (get_local $g)
+ )
+ )
)
(i32.store
(get_local $$)
@@ -2822,12 +2780,7 @@
)
)
(if
- (i32.eqz
- (get_local $g)
- )
- (set_local $ba
- (i32.const 0)
- )
+ (get_local $g)
(if
(i32.gt_u
(get_local $U)
@@ -2926,6 +2879,9 @@
)
)
)
+ (set_local $ba
+ (i32.const 0)
+ )
)
(set_local $t
(i32.add
@@ -3065,8 +3021,17 @@
)
)
(if
- (i32.eqz
- (get_local $s)
+ (get_local $s)
+ (block
+ (set_local $q
+ (i32.shl
+ (get_local $q)
+ (i32.const 1)
+ )
+ )
+ (set_local $d
+ (get_local $s)
+ )
)
(block
(set_local $da
@@ -3080,17 +3045,6 @@
)
(br $while-out$31)
)
- (block
- (set_local $q
- (i32.shl
- (get_local $q)
- (i32.const 1)
- )
- )
- (set_local $d
- (get_local $s)
- )
- )
)
(br $while-in$32)
)
@@ -3209,8 +3163,14 @@
(get_local $e)
)
)
+ (set_local $y
+ (get_local $e)
+ )
)
)
+ (set_local $y
+ (get_local $e)
+ )
)
)
)
@@ -3546,13 +3506,14 @@
)
(block $label$break$b
(if
- (i32.eqz
- (i32.and
- (i32.load
- (i32.const 1652)
- )
- (i32.const 4)
+ (i32.and
+ (i32.load
+ (i32.const 1652)
)
+ (i32.const 4)
+ )
+ (set_local $N
+ (i32.const 188)
)
(block
(set_local $U
@@ -3562,12 +3523,7 @@
)
(block $label$break$c
(if
- (i32.eqz
- (get_local $U)
- )
- (set_local $N
- (i32.const 171)
- )
+ (get_local $U)
(block
(set_local $aa
(i32.const 1656)
@@ -3697,6 +3653,9 @@
)
)
)
+ (set_local $N
+ (i32.const 171)
+ )
)
)
(block $do-once$37
@@ -3732,14 +3691,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $$)
- (get_local $e)
- )
- )
- (set_local $la
- (get_local $c)
+ (i32.and
+ (get_local $$)
+ (get_local $e)
)
(set_local $la
(i32.add
@@ -3759,6 +3713,9 @@
)
)
)
+ (set_local $la
+ (get_local $c)
+ )
)
(set_local $aa
(i32.load
@@ -3968,9 +3925,6 @@
(i32.const 188)
)
)
- (set_local $N
- (i32.const 188)
- )
)
)
(if
@@ -4080,159 +4034,7 @@
)
(block $do-once$42
(if
- (i32.eqz
- (get_local $ja)
- )
- (block
- (set_local $ma
- (i32.load
- (i32.const 1224)
- )
- )
- (if
- (i32.or
- (i32.eq
- (get_local $ma)
- (i32.const 0)
- )
- (i32.lt_u
- (get_local $ha)
- (get_local $ma)
- )
- )
- (i32.store
- (i32.const 1224)
- (get_local $ha)
- )
- )
- (i32.store
- (i32.const 1656)
- (get_local $ha)
- )
- (i32.store
- (i32.const 1660)
- (get_local $ia)
- )
- (i32.store
- (i32.const 1668)
- (i32.const 0)
- )
- (i32.store
- (i32.const 1244)
- (i32.load
- (i32.const 1680)
- )
- )
- (i32.store
- (i32.const 1240)
- (i32.const -1)
- )
- (set_local $ma
- (i32.const 0)
- )
- (loop $do-out$44 $do-in$45
- (set_local $c
- (i32.add
- (i32.const 1248)
- (i32.shl
- (i32.shl
- (get_local $ma)
- (i32.const 1)
- )
- (i32.const 2)
- )
- )
- )
- (i32.store offset=12
- (get_local $c)
- (get_local $c)
- )
- (i32.store offset=8
- (get_local $c)
- (get_local $c)
- )
- (set_local $ma
- (i32.add
- (get_local $ma)
- (i32.const 1)
- )
- )
- (br_if $do-in$45
- (i32.ne
- (get_local $ma)
- (i32.const 32)
- )
- )
- )
- (set_local $ma
- (i32.add
- (get_local $ha)
- (i32.const 8)
- )
- )
- (set_local $c
- (if
- (i32.eq
- (i32.and
- (get_local $ma)
- (i32.const 7)
- )
- (i32.const 0)
- )
- (i32.const 0)
- (i32.and
- (i32.sub
- (i32.const 0)
- (get_local $ma)
- )
- (i32.const 7)
- )
- )
- )
- (set_local $ma
- (i32.add
- (get_local $ha)
- (get_local $c)
- )
- )
- (set_local $ka
- (i32.sub
- (i32.add
- (get_local $ia)
- (i32.const -40)
- )
- (get_local $c)
- )
- )
- (i32.store
- (i32.const 1232)
- (get_local $ma)
- )
- (i32.store
- (i32.const 1220)
- (get_local $ka)
- )
- (i32.store offset=4
- (get_local $ma)
- (i32.or
- (get_local $ka)
- (i32.const 1)
- )
- )
- (i32.store offset=4
- (i32.add
- (get_local $ma)
- (get_local $ka)
- )
- (i32.const 40)
- )
- (i32.store
- (i32.const 1236)
- (i32.load
- (i32.const 1696)
- )
- )
- )
+ (get_local $ja)
(block
(set_local $ka
(i32.const 1656)
@@ -4478,13 +4280,14 @@
(i32.const 209)
)
(if
- (i32.eqz
- (i32.and
- (i32.load offset=12
- (get_local $va)
- )
- (i32.const 8)
+ (i32.and
+ (i32.load offset=12
+ (get_local $va)
)
+ (i32.const 8)
+ )
+ (set_local $wa
+ (i32.const 1656)
)
(block
(i32.store
@@ -4851,8 +4654,14 @@
)
)
(if
- (i32.eqz
- (get_local $ba)
+ (get_local $ba)
+ (block
+ (set_local $za
+ (get_local $ba)
+ )
+ (set_local $Aa
+ (get_local $aa)
+ )
)
(block
(set_local $W
@@ -4861,15 +4670,7 @@
)
)
(if
- (i32.eqz
- (get_local $W)
- )
- (block
- (set_local $ya
- (i32.const 0)
- )
- (br $do-once$57)
- )
+ (get_local $W)
(block
(set_local $za
(get_local $W)
@@ -4878,14 +4679,12 @@
(get_local $U)
)
)
- )
- )
- (block
- (set_local $za
- (get_local $ba)
- )
- (set_local $Aa
- (get_local $aa)
+ (block
+ (set_local $ya
+ (i32.const 0)
+ )
+ (br $do-once$57)
+ )
)
)
)
@@ -4925,8 +4724,14 @@
)
)
(if
- (i32.eqz
- (get_local $ba)
+ (get_local $ba)
+ (block
+ (set_local $za
+ (get_local $ba)
+ )
+ (set_local $Aa
+ (get_local $aa)
+ )
)
(block
(set_local $Ba
@@ -4937,14 +4742,6 @@
)
(br $while-out$59)
)
- (block
- (set_local $za
- (get_local $ba)
- )
- (set_local $Aa
- (get_local $aa)
- )
- )
)
(br $while-in$60)
)
@@ -5289,29 +5086,9 @@
)
(block $do-once$65
(if
- (i32.eqz
- (i32.and
- (get_local $V)
- (get_local $e)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $V)
- (get_local $e)
- )
- )
- (set_local $Fa
- (i32.add
- (get_local $la)
- (i32.const 8)
- )
- )
- (set_local $Ga
- (get_local $la)
- )
+ (i32.and
+ (get_local $V)
+ (get_local $e)
)
(block
(set_local $fa
@@ -5344,6 +5121,24 @@
)
(call_import $qa)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $V)
+ (get_local $e)
+ )
+ )
+ (set_local $Fa
+ (i32.add
+ (get_local $la)
+ (i32.const 8)
+ )
+ )
+ (set_local $Ga
+ (get_local $la)
+ )
+ )
)
)
(i32.store
@@ -5373,12 +5168,7 @@
)
(block $do-once$67
(if
- (i32.eqz
- (get_local $e)
- )
- (set_local $Ha
- (i32.const 0)
- )
+ (get_local $e)
(block
(if
(i32.gt_u
@@ -5480,6 +5270,9 @@
)
)
)
+ (set_local $Ha
+ (i32.const 0)
+ )
)
)
(set_local $e
@@ -5620,8 +5413,17 @@
)
)
(if
- (i32.eqz
- (get_local $ga)
+ (get_local $ga)
+ (block
+ (set_local $aa
+ (i32.shl
+ (get_local $aa)
+ (i32.const 1)
+ )
+ )
+ (set_local $la
+ (get_local $ga)
+ )
)
(block
(set_local $Ja
@@ -5635,17 +5437,6 @@
)
(br $while-out$69)
)
- (block
- (set_local $aa
- (i32.shl
- (get_local $aa)
- (i32.const 1)
- )
- )
- (set_local $la
- (get_local $ga)
- )
- )
)
(br $while-in$70)
)
@@ -5760,9 +5551,6 @@
(get_local $p)
)
)
- (set_local $wa
- (i32.const 1656)
- )
)
)
(loop $while-out$71 $while-in$72
@@ -6075,29 +5863,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $la)
- (get_local $ga)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $la)
- (get_local $ga)
- )
- )
- (set_local $Ma
- (i32.add
- (get_local $c)
- (i32.const 8)
- )
- )
- (set_local $Na
- (get_local $c)
- )
+ (i32.and
+ (get_local $la)
+ (get_local $ga)
)
(block
(set_local $ga
@@ -6129,6 +5897,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $la)
+ (get_local $ga)
+ )
+ )
+ (set_local $Ma
+ (i32.add
+ (get_local $c)
+ (i32.const 8)
+ )
+ )
+ (set_local $Na
+ (get_local $c)
+ )
+ )
)
(i32.store
(get_local $Ma)
@@ -6156,12 +5942,7 @@
)
)
(if
- (i32.eqz
- (get_local $c)
- )
- (set_local $Oa
- (i32.const 0)
- )
+ (get_local $c)
(if
(i32.gt_u
(get_local $ka)
@@ -6260,6 +6041,9 @@
)
)
)
+ (set_local $Oa
+ (i32.const 0)
+ )
)
(set_local $e
(i32.add
@@ -6393,8 +6177,17 @@
)
)
(if
- (i32.eqz
- (get_local $la)
+ (get_local $la)
+ (block
+ (set_local $ma
+ (i32.shl
+ (get_local $ma)
+ (i32.const 1)
+ )
+ )
+ (set_local $ga
+ (get_local $la)
+ )
)
(block
(set_local $Ra
@@ -6408,17 +6201,6 @@
)
(br $while-out$75)
)
- (block
- (set_local $ma
- (i32.shl
- (get_local $ma)
- (i32.const 1)
- )
- )
- (set_local $ga
- (get_local $la)
- )
- )
)
(br $while-in$76)
)
@@ -6519,6 +6301,156 @@
)
)
)
+ (block
+ (set_local $ma
+ (i32.load
+ (i32.const 1224)
+ )
+ )
+ (if
+ (i32.or
+ (i32.eq
+ (get_local $ma)
+ (i32.const 0)
+ )
+ (i32.lt_u
+ (get_local $ha)
+ (get_local $ma)
+ )
+ )
+ (i32.store
+ (i32.const 1224)
+ (get_local $ha)
+ )
+ )
+ (i32.store
+ (i32.const 1656)
+ (get_local $ha)
+ )
+ (i32.store
+ (i32.const 1660)
+ (get_local $ia)
+ )
+ (i32.store
+ (i32.const 1668)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 1244)
+ (i32.load
+ (i32.const 1680)
+ )
+ )
+ (i32.store
+ (i32.const 1240)
+ (i32.const -1)
+ )
+ (set_local $ma
+ (i32.const 0)
+ )
+ (loop $do-out$44 $do-in$45
+ (set_local $c
+ (i32.add
+ (i32.const 1248)
+ (i32.shl
+ (i32.shl
+ (get_local $ma)
+ (i32.const 1)
+ )
+ (i32.const 2)
+ )
+ )
+ )
+ (i32.store offset=12
+ (get_local $c)
+ (get_local $c)
+ )
+ (i32.store offset=8
+ (get_local $c)
+ (get_local $c)
+ )
+ (set_local $ma
+ (i32.add
+ (get_local $ma)
+ (i32.const 1)
+ )
+ )
+ (br_if $do-in$45
+ (i32.ne
+ (get_local $ma)
+ (i32.const 32)
+ )
+ )
+ )
+ (set_local $ma
+ (i32.add
+ (get_local $ha)
+ (i32.const 8)
+ )
+ )
+ (set_local $c
+ (if
+ (i32.eq
+ (i32.and
+ (get_local $ma)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ )
+ (i32.const 0)
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (get_local $ma)
+ )
+ (i32.const 7)
+ )
+ )
+ )
+ (set_local $ma
+ (i32.add
+ (get_local $ha)
+ (get_local $c)
+ )
+ )
+ (set_local $ka
+ (i32.sub
+ (i32.add
+ (get_local $ia)
+ (i32.const -40)
+ )
+ (get_local $c)
+ )
+ )
+ (i32.store
+ (i32.const 1232)
+ (get_local $ma)
+ )
+ (i32.store
+ (i32.const 1220)
+ (get_local $ka)
+ )
+ (i32.store offset=4
+ (get_local $ma)
+ (i32.or
+ (get_local $ka)
+ (i32.const 1)
+ )
+ )
+ (i32.store offset=4
+ (i32.add
+ (get_local $ma)
+ (get_local $ka)
+ )
+ (i32.const 40)
+ )
+ (i32.store
+ (i32.const 1236)
+ (i32.load
+ (i32.const 1696)
+ )
+ )
+ )
)
)
(set_local $ja
@@ -6702,10 +6634,16 @@
)
(block $do-once$0
(if
- (i32.eqz
- (i32.and
- (get_local $d)
- (i32.const 1)
+ (i32.and
+ (get_local $d)
+ (i32.const 1)
+ )
+ (block
+ (set_local $m
+ (get_local $b)
+ )
+ (set_local $n
+ (get_local $e)
)
)
(block
@@ -6986,8 +6924,14 @@
)
)
(if
- (i32.eqz
- (get_local $q)
+ (get_local $q)
+ (block
+ (set_local $t
+ (get_local $q)
+ )
+ (set_local $u
+ (get_local $l)
+ )
)
(block
(set_local $r
@@ -6996,15 +6940,7 @@
)
)
(if
- (i32.eqz
- (get_local $r)
- )
- (block
- (set_local $s
- (i32.const 0)
- )
- (br $do-once$2)
- )
+ (get_local $r)
(block
(set_local $t
(get_local $r)
@@ -7013,14 +6949,12 @@
(get_local $o)
)
)
- )
- )
- (block
- (set_local $t
- (get_local $q)
- )
- (set_local $u
- (get_local $l)
+ (block
+ (set_local $s
+ (i32.const 0)
+ )
+ (br $do-once$2)
+ )
)
)
)
@@ -7060,8 +6994,14 @@
)
)
(if
- (i32.eqz
- (get_local $q)
+ (get_local $q)
+ (block
+ (set_local $t
+ (get_local $q)
+ )
+ (set_local $u
+ (get_local $l)
+ )
)
(block
(set_local $v
@@ -7072,14 +7012,6 @@
)
(br $while-out$4)
)
- (block
- (set_local $t
- (get_local $q)
- )
- (set_local $u
- (get_local $l)
- )
- )
)
(br $while-in$5)
)
@@ -7162,17 +7094,7 @@
)
)
(if
- (i32.eqz
- (get_local $g)
- )
- (block
- (set_local $m
- (get_local $h)
- )
- (set_local $n
- (get_local $i)
- )
- )
+ (get_local $g)
(block
(set_local $j
(i32.load offset=28
@@ -7334,17 +7256,7 @@
)
)
(if
- (i32.eqz
- (get_local $o)
- )
- (block
- (set_local $m
- (get_local $h)
- )
- (set_local $n
- (get_local $i)
- )
- )
+ (get_local $o)
(if
(i32.lt_u
(get_local $o)
@@ -7371,16 +7283,24 @@
(br $do-once$0)
)
)
+ (block
+ (set_local $m
+ (get_local $h)
+ )
+ (set_local $n
+ (get_local $i)
+ )
+ )
+ )
+ )
+ (block
+ (set_local $m
+ (get_local $h)
+ )
+ (set_local $n
+ (get_local $i)
)
)
- )
- )
- (block
- (set_local $m
- (get_local $b)
- )
- (set_local $n
- (get_local $e)
)
)
)
@@ -7413,10 +7333,34 @@
(call_import $qa)
)
(if
- (i32.eqz
- (i32.and
- (get_local $b)
- (i32.const 2)
+ (i32.and
+ (get_local $b)
+ (i32.const 2)
+ )
+ (block
+ (i32.store
+ (get_local $e)
+ (i32.and
+ (get_local $b)
+ (i32.const -2)
+ )
+ )
+ (i32.store offset=4
+ (get_local $m)
+ (i32.or
+ (get_local $n)
+ (i32.const 1)
+ )
+ )
+ (i32.store
+ (i32.add
+ (get_local $m)
+ (get_local $n)
+ )
+ (get_local $n)
+ )
+ (set_local $D
+ (get_local $n)
)
)
(block
@@ -7692,8 +7636,14 @@
)
)
(if
- (i32.eqz
- (get_local $p)
+ (get_local $p)
+ (block
+ (set_local $z
+ (get_local $p)
+ )
+ (set_local $A
+ (get_local $t)
+ )
)
(block
(set_local $a
@@ -7702,15 +7652,7 @@
)
)
(if
- (i32.eqz
- (get_local $a)
- )
- (block
- (set_local $y
- (i32.const 0)
- )
- (br $do-once$10)
- )
+ (get_local $a)
(block
(set_local $z
(get_local $a)
@@ -7719,14 +7661,12 @@
(get_local $u)
)
)
- )
- )
- (block
- (set_local $z
- (get_local $p)
- )
- (set_local $A
- (get_local $t)
+ (block
+ (set_local $y
+ (i32.const 0)
+ )
+ (br $do-once$10)
+ )
)
)
)
@@ -7766,8 +7706,14 @@
)
)
(if
- (i32.eqz
- (get_local $p)
+ (get_local $p)
+ (block
+ (set_local $z
+ (get_local $p)
+ )
+ (set_local $A
+ (get_local $t)
+ )
)
(block
(set_local $B
@@ -7778,14 +7724,6 @@
)
(br $while-out$12)
)
- (block
- (set_local $z
- (get_local $p)
- )
- (set_local $A
- (get_local $t)
- )
- )
)
(br $while-in$13)
)
@@ -8079,32 +8017,6 @@
)
)
)
- (block
- (i32.store
- (get_local $e)
- (i32.and
- (get_local $b)
- (i32.const -2)
- )
- )
- (i32.store offset=4
- (get_local $m)
- (i32.or
- (get_local $n)
- (i32.const 1)
- )
- )
- (i32.store
- (i32.add
- (get_local $m)
- (get_local $n)
- )
- (get_local $n)
- )
- (set_local $D
- (get_local $n)
- )
- )
)
(set_local $n
(i32.shr_u
@@ -8142,29 +8054,9 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $e)
- (get_local $s)
- )
- )
- (block
- (i32.store
- (i32.const 1208)
- (i32.or
- (get_local $e)
- (get_local $s)
- )
- )
- (set_local $E
- (i32.add
- (get_local $b)
- (i32.const 8)
- )
- )
- (set_local $F
- (get_local $b)
- )
+ (i32.and
+ (get_local $e)
+ (get_local $s)
)
(block
(set_local $s
@@ -8196,6 +8088,24 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1208)
+ (i32.or
+ (get_local $e)
+ (get_local $s)
+ )
+ )
+ (set_local $E
+ (i32.add
+ (get_local $b)
+ (i32.const 8)
+ )
+ )
+ (set_local $F
+ (get_local $b)
+ )
+ )
)
(i32.store
(get_local $E)
@@ -8223,12 +8133,7 @@
)
)
(if
- (i32.eqz
- (get_local $b)
- )
- (set_local $G
- (i32.const 0)
- )
+ (get_local $b)
(if
(i32.gt_u
(get_local $D)
@@ -8327,6 +8232,9 @@
)
)
)
+ (set_local $G
+ (i32.const 0)
+ )
)
(set_local $s
(i32.add
@@ -8362,36 +8270,9 @@
)
(block $do-once$16
(if
- (i32.eqz
- (i32.and
- (get_local $E)
- (get_local $e)
- )
- )
- (block
- (i32.store
- (i32.const 1212)
- (i32.or
- (get_local $E)
- (get_local $e)
- )
- )
- (i32.store
- (get_local $s)
- (get_local $m)
- )
- (i32.store offset=24
- (get_local $m)
- (get_local $s)
- )
- (i32.store offset=12
- (get_local $m)
- (get_local $m)
- )
- (i32.store offset=8
- (get_local $m)
- (get_local $m)
- )
+ (i32.and
+ (get_local $E)
+ (get_local $e)
)
(block
(set_local $F
@@ -8460,8 +8341,17 @@
)
)
(if
- (i32.eqz
- (get_local $y)
+ (get_local $y)
+ (block
+ (set_local $F
+ (i32.shl
+ (get_local $F)
+ (i32.const 1)
+ )
+ )
+ (set_local $b
+ (get_local $y)
+ )
)
(block
(set_local $J
@@ -8475,17 +8365,6 @@
)
(br $while-out$18)
)
- (block
- (set_local $F
- (i32.shl
- (get_local $F)
- (i32.const 1)
- )
- )
- (set_local $b
- (get_local $y)
- )
- )
)
(br $while-in$19)
)
@@ -8584,6 +8463,31 @@
)
)
)
+ (block
+ (i32.store
+ (i32.const 1212)
+ (i32.or
+ (get_local $E)
+ (get_local $e)
+ )
+ )
+ (i32.store
+ (get_local $s)
+ (get_local $m)
+ )
+ (i32.store offset=24
+ (get_local $m)
+ (get_local $s)
+ )
+ (i32.store offset=12
+ (get_local $m)
+ (get_local $m)
+ )
+ (i32.store offset=8
+ (get_local $m)
+ (get_local $m)
+ )
+ )
)
)
(set_local $m
@@ -8599,13 +8503,11 @@
(get_local $m)
)
(if
- (i32.eqz
- (get_local $m)
- )
+ (get_local $m)
+ (return)
(set_local $L
(i32.const 1664)
)
- (return)
)
(loop $while-out$20 $while-in$21
(set_local $m
@@ -8614,16 +8516,14 @@
)
)
(if
- (i32.eqz
- (get_local $m)
- )
- (br $while-out$20)
+ (get_local $m)
(set_local $L
(i32.add
(get_local $m)
(i32.const 8)
)
)
+ (br $while-out$20)
)
(br $while-in$21)
)
@@ -8751,68 +8651,66 @@
)
(loop $while-out$0 $while-in$1
(if
- (i32.eqz
- (i32.load
- (i32.const 1160)
- )
+ (i32.load
+ (i32.const 1160)
)
(block
+ (call_import $ra
+ (i32.const 1)
+ (get_local $a)
+ )
(i32.store
- (get_local $e)
+ (get_local $f)
(i32.load
(get_local $b)
)
)
(i32.store offset=4
- (get_local $e)
+ (get_local $f)
(get_local $m)
)
(i32.store offset=8
- (get_local $e)
+ (get_local $f)
(get_local $g)
)
- (set_local $o
+ (set_local $l
(call $Pa
(call_import $ya
(i32.const 146)
- (get_local $e)
+ (get_local $f)
)
)
)
+ (call_import $oa
+ (i32.const 0)
+ )
+ (set_local $o
+ (get_local $l)
+ )
)
(block
- (call_import $ra
- (i32.const 1)
- (get_local $a)
- )
(i32.store
- (get_local $f)
+ (get_local $e)
(i32.load
(get_local $b)
)
)
(i32.store offset=4
- (get_local $f)
+ (get_local $e)
(get_local $m)
)
(i32.store offset=8
- (get_local $f)
+ (get_local $e)
(get_local $g)
)
- (set_local $l
+ (set_local $o
(call $Pa
(call_import $ya
(i32.const 146)
- (get_local $f)
+ (get_local $e)
)
)
)
- (call_import $oa
- (i32.const 0)
- )
- (set_local $o
- (get_local $l)
- )
)
)
(if
@@ -9085,14 +8983,21 @@
)
)
(if
- (i32.eqz
- (get_local $e)
+ (get_local $e)
+ (block
+ (set_local $f
+ (get_local $e)
+ )
+ (set_local $g
+ (i32.const 5)
+ )
)
(if
- (i32.eqz
- (call $Xa
- (get_local $c)
- )
+ (call $Xa
+ (get_local $c)
+ )
+ (set_local $h
+ (i32.const 0)
)
(block
(set_local $f
@@ -9104,17 +9009,6 @@
(i32.const 5)
)
)
- (set_local $h
- (i32.const 0)
- )
- )
- (block
- (set_local $f
- (get_local $e)
- )
- (set_local $g
- (i32.const 5)
- )
)
)
(block $label$break$a
@@ -9332,19 +9226,9 @@
)
(block $label$break$a
(if
- (i32.eqz
- (i32.and
- (get_local $b)
- (i32.const 3)
- )
- )
- (block
- (set_local $c
- (get_local $a)
- )
- (set_local $d
- (i32.const 4)
- )
+ (i32.and
+ (get_local $b)
+ (i32.const 3)
)
(block
(set_local $e
@@ -9377,11 +9261,12 @@
(get_local $h)
)
(if
- (i32.eqz
- (i32.and
- (get_local $f)
- (i32.const 3)
- )
+ (i32.and
+ (get_local $f)
+ (i32.const 3)
+ )
+ (set_local $e
+ (get_local $h)
)
(block
(set_local $c
@@ -9392,13 +9277,18 @@
)
(br $while-out$1)
)
- (set_local $e
- (get_local $h)
- )
)
(br $while-in$2)
)
)
+ (block
+ (set_local $c
+ (get_local $a)
+ )
+ (set_local $d
+ (i32.const 4)
+ )
+ )
)
)
(if
@@ -9417,25 +9307,17 @@
)
)
(if
- (i32.eqz
- (i32.and
- (i32.xor
- (i32.and
- (get_local $c)
- (i32.const -2139062144)
- )
- (i32.const -2139062144)
- )
- (i32.add
+ (i32.and
+ (i32.xor
+ (i32.and
(get_local $c)
- (i32.const -16843009)
+ (i32.const -2139062144)
)
+ (i32.const -2139062144)
)
- )
- (set_local $d
(i32.add
- (get_local $d)
- (i32.const 4)
+ (get_local $c)
+ (i32.const -16843009)
)
)
(block
@@ -9447,24 +9329,25 @@
)
(br $while-out$3)
)
+ (set_local $d
+ (i32.add
+ (get_local $d)
+ (i32.const 4)
+ )
+ )
)
(br $while-in$4)
)
(if
- (i32.eqz
- (i32.shr_s
- (i32.shl
- (i32.and
- (get_local $j)
- (i32.const 255)
- )
- (i32.const 24)
+ (i32.shr_s
+ (i32.shl
+ (i32.and
+ (get_local $j)
+ (i32.const 255)
)
(i32.const 24)
)
- )
- (set_local $m
- (get_local $l)
+ (i32.const 24)
)
(block
(set_local $j
@@ -9478,10 +9361,11 @@
)
)
(if
- (i32.eqz
- (i32.load8_s
- (get_local $l)
- )
+ (i32.load8_s
+ (get_local $l)
+ )
+ (set_local $j
+ (get_local $l)
)
(block
(set_local $m
@@ -9489,13 +9373,13 @@
)
(br $while-out$5)
)
- (set_local $j
- (get_local $l)
- )
)
(br $while-in$6)
)
)
+ (set_local $m
+ (get_local $l)
+ )
)
(set_local $g
(get_local $m)
@@ -9519,19 +9403,57 @@
(local $d i32)
(block $do-once$0
(if
- (i32.eqz
- (get_local $a)
- )
+ (get_local $a)
(block
(if
- (i32.eqz
- (i32.load
- (i32.const 1140)
+ (i32.le_s
+ (i32.load offset=76
+ (get_local $a)
)
+ (i32.const -1)
)
- (set_local $b
+ (block
+ (set_local $h
+ (call $$a
+ (get_local $a)
+ )
+ )
+ (br $do-once$0)
+ )
+ )
+ (set_local $c
+ (i32.eq
+ (call $Ya
+ (get_local $a)
+ )
(i32.const 0)
)
+ )
+ (set_local $e
+ (call $$a
+ (get_local $a)
+ )
+ )
+ (if
+ (get_local $c)
+ (set_local $h
+ (get_local $e)
+ )
+ (block
+ (call $Ta
+ (get_local $a)
+ )
+ (set_local $h
+ (get_local $e)
+ )
+ )
+ )
+ )
+ (block
+ (if
+ (i32.load
+ (i32.const 1140)
+ )
(set_local $b
(call $_a
(i32.load
@@ -9539,6 +9461,9 @@
)
)
)
+ (set_local $b
+ (i32.const 0)
+ )
)
(call_import $pa
(i32.const 1188)
@@ -9549,12 +9474,7 @@
)
)
(if
- (i32.eqz
- (get_local $c)
- )
- (set_local $d
- (get_local $b)
- )
+ (get_local $c)
(block
(set_local $e
(get_local $c)
@@ -9612,8 +9532,9 @@
)
)
(if
- (i32.eqz
- (get_local $e)
+ (get_local $e)
+ (set_local $c
+ (get_local $g)
)
(block
(set_local $d
@@ -9621,13 +9542,13 @@
)
(br $while-out$2)
)
- (set_local $c
- (get_local $g)
- )
)
(br $while-in$3)
)
)
+ (set_local $d
+ (get_local $b)
+ )
)
(call_import $xa
(i32.const 1188)
@@ -9636,51 +9557,6 @@
(get_local $d)
)
)
- (block
- (if
- (i32.le_s
- (i32.load offset=76
- (get_local $a)
- )
- (i32.const -1)
- )
- (block
- (set_local $h
- (call $$a
- (get_local $a)
- )
- )
- (br $do-once$0)
- )
- )
- (set_local $c
- (i32.eq
- (call $Ya
- (get_local $a)
- )
- (i32.const 0)
- )
- )
- (set_local $e
- (call $$a
- (get_local $a)
- )
- )
- (if
- (get_local $c)
- (set_local $h
- (get_local $e)
- )
- (block
- (call $Ta
- (get_local $a)
- )
- (set_local $h
- (get_local $e)
- )
- )
- )
- )
)
)
(return
@@ -9736,14 +9612,21 @@
)
)
(if
- (i32.eqz
- (get_local $g)
+ (get_local $g)
+ (block
+ (set_local $h
+ (get_local $g)
+ )
+ (set_local $j
+ (i32.const 4)
+ )
)
(if
- (i32.eqz
- (call $Xa
- (get_local $a)
- )
+ (call $Xa
+ (get_local $a)
+ )
+ (set_local $m
+ (i32.const -1)
)
(block
(set_local $h
@@ -9755,17 +9638,6 @@
(i32.const 4)
)
)
- (set_local $m
- (i32.const -1)
- )
- )
- (block
- (set_local $h
- (get_local $g)
- )
- (set_local $j
- (i32.const 4)
- )
)
)
(block $do-once$0
@@ -9908,17 +9780,15 @@
(i32.const 0)
)
(if
- (i32.eqz
- (i32.load
- (get_local $b)
- )
- )
- (set_local $d
- (i32.const -1)
+ (i32.load
+ (get_local $b)
)
(set_local $e
(i32.const 3)
)
+ (set_local $d
+ (i32.const -1)
+ )
)
)
(set_local $e
@@ -10447,10 +10317,20 @@
)
)
(if
- (i32.eqz
- (i32.and
- (get_local $c)
- (i32.const 8)
+ (i32.and
+ (get_local $c)
+ (i32.const 8)
+ )
+ (block
+ (i32.store
+ (get_local $a)
+ (i32.or
+ (get_local $c)
+ (i32.const 32)
+ )
+ )
+ (set_local $d
+ (i32.const -1)
)
)
(block
@@ -10488,18 +10368,6 @@
(i32.const 0)
)
)
- (block
- (i32.store
- (get_local $a)
- (i32.or
- (get_local $c)
- (i32.const 32)
- )
- )
- (set_local $d
- (i32.const -1)
- )
- )
)
(return
(get_local $d)
@@ -10920,13 +10788,8 @@
(local $a i32)
(local $b i32)
(if
- (i32.eqz
- (i32.load
- (i32.const 1160)
- )
- )
- (set_local $a
- (i32.const 1204)
+ (i32.load
+ (i32.const 1160)
)
(block
(set_local $b
@@ -10941,6 +10804,9 @@
)
)
)
+ (set_local $a
+ (i32.const 1204)
+ )
)
(return
(get_local $a)
diff --git a/test/passes/optimize-instructions.txt b/test/passes/optimize-instructions.txt
new file mode 100644
index 000000000..ea6e78908
--- /dev/null
+++ b/test/passes/optimize-instructions.txt
@@ -0,0 +1,23 @@
+(module
+ (memory 0)
+ (func $f (param $i1 i32) (param $i2 i64)
+ (if
+ (i32.eqz
+ (get_local $i1)
+ )
+ (i32.const 10)
+ )
+ (if
+ (get_local $i1)
+ (i32.const 12)
+ (i32.const 11)
+ )
+ (if
+ (i64.eqz
+ (get_local $i2)
+ )
+ (i32.const 11)
+ (i32.const 12)
+ )
+ )
+)
diff --git a/test/passes/optimize-instructions.wast b/test/passes/optimize-instructions.wast
new file mode 100644
index 000000000..058aee042
--- /dev/null
+++ b/test/passes/optimize-instructions.wast
@@ -0,0 +1,26 @@
+(module
+ (memory 0)
+ (func $f (param $i1 i32) (param $i2 i64)
+ (if
+ (i32.eqz
+ (get_local $i1)
+ )
+ (i32.const 10)
+ )
+ (if
+ (i32.eqz
+ (get_local $i1)
+ )
+ (i32.const 11)
+ (i32.const 12)
+ )
+ (if
+ (i64.eqz
+ (get_local $i2)
+ )
+ (i32.const 11)
+ (i32.const 12)
+ )
+ )
+)
+
diff --git a/test/two_sides.fromasm b/test/two_sides.fromasm
index 719566b73..83933ba0c 100644
--- a/test/two_sides.fromasm
+++ b/test/two_sides.fromasm
@@ -7,15 +7,13 @@
(func $_test (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (param $i5 i32) (result i32)
(local $d6 f64)
(if
- (i32.eqz
- (get_local $i5)
- )
+ (get_local $i5)
(block
(set_local $d6
(f64.convert_s/i32
(i32.mul
- (get_local $i4)
- (get_local $i3)
+ (get_local $i2)
+ (get_local $i1)
)
)
)
@@ -28,10 +26,10 @@
(get_local $d6)
)
(f64.add
+ (get_local $d6)
(f64.convert_s/i32
(get_local $i4)
)
- (get_local $d6)
)
)
)
@@ -48,8 +46,8 @@
(set_local $d6
(f64.convert_s/i32
(i32.mul
- (get_local $i2)
- (get_local $i1)
+ (get_local $i4)
+ (get_local $i3)
)
)
)
@@ -62,10 +60,10 @@
(get_local $d6)
)
(f64.add
- (get_local $d6)
(f64.convert_s/i32
(get_local $i4)
)
+ (get_local $d6)
)
)
)
diff --git a/test/two_sides.fromasm.imprecise b/test/two_sides.fromasm.imprecise
index 6c2aa1d83..4056f9e8c 100644
--- a/test/two_sides.fromasm.imprecise
+++ b/test/two_sides.fromasm.imprecise
@@ -5,15 +5,13 @@
(func $_test (param $i1 i32) (param $i2 i32) (param $i3 i32) (param $i4 i32) (param $i5 i32) (result i32)
(local $d6 f64)
(if
- (i32.eqz
- (get_local $i5)
- )
+ (get_local $i5)
(block
(set_local $d6
(f64.convert_s/i32
(i32.mul
- (get_local $i4)
- (get_local $i3)
+ (get_local $i2)
+ (get_local $i1)
)
)
)
@@ -26,10 +24,10 @@
(get_local $d6)
)
(f64.add
+ (get_local $d6)
(f64.convert_s/i32
(get_local $i4)
)
- (get_local $d6)
)
)
)
@@ -46,8 +44,8 @@
(set_local $d6
(f64.convert_s/i32
(i32.mul
- (get_local $i2)
- (get_local $i1)
+ (get_local $i4)
+ (get_local $i3)
)
)
)
@@ -60,10 +58,10 @@
(get_local $d6)
)
(f64.add
- (get_local $d6)
(f64.convert_s/i32
(get_local $i4)
)
+ (get_local $d6)
)
)
)