diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-04-25 20:08:24 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-04-25 20:16:36 -0700 |
commit | 791c765cda070e47d90577de2d798f046431d095 (patch) | |
tree | a3d3868d21e6a3c599f16f3847ff227d15116409 | |
parent | cb35ee67868bdc2b8839766b7e10b65e8fcc122a (diff) | |
download | binaryen-791c765cda070e47d90577de2d798f046431d095.tar.gz binaryen-791c765cda070e47d90577de2d798f046431d095.tar.bz2 binaryen-791c765cda070e47d90577de2d798f046431d095.zip |
selectify if-elses with no control flow in them
-rw-r--r-- | src/ast_utils.h | 2 | ||||
-rw-r--r-- | src/passes/RemoveUnusedBrs.cpp | 30 | ||||
-rw-r--r-- | test/emcc_O2_hello_world.fromasm | 1154 | ||||
-rw-r--r-- | test/emcc_O2_hello_world.fromasm.imprecise | 1154 | ||||
-rw-r--r-- | test/emcc_hello_world.fromasm | 2402 | ||||
-rw-r--r-- | test/emcc_hello_world.fromasm.imprecise | 2402 | ||||
-rw-r--r-- | test/memorygrowth.fromasm | 401 | ||||
-rw-r--r-- | test/memorygrowth.fromasm.imprecise | 401 | ||||
-rw-r--r-- | test/passes/remove-unused-brs.txt | 73 | ||||
-rw-r--r-- | test/passes/remove-unused-brs.wast | 39 |
10 files changed, 3903 insertions, 4155 deletions
diff --git a/src/ast_utils.h b/src/ast_utils.h index 36895ac51..5cda48578 100644 --- a/src/ast_utils.h +++ b/src/ast_utils.h @@ -52,7 +52,7 @@ struct EffectAnalyzer : public PostWalker<EffectAnalyzer, Visitor<EffectAnalyzer bool accessesLocal() { return localsRead.size() + localsWritten.size() > 0; } bool accessesMemory() { return calls || readsMemory || writesMemory; } - bool hasSideEffects() { return calls || localsWritten.size() > 0 || writesMemory; } + bool hasSideEffects() { return calls || localsWritten.size() > 0 || writesMemory || branches; } bool hasAnything() { return branches || calls || accessesLocal() || readsMemory || writesMemory; } // checks if these effects would invalidate another set (e.g., if we write, we invalidate someone that reads, they can't be moved past us) diff --git a/src/passes/RemoveUnusedBrs.cpp b/src/passes/RemoveUnusedBrs.cpp index 1dd16d07b..f4efef173 100644 --- a/src/passes/RemoveUnusedBrs.cpp +++ b/src/passes/RemoveUnusedBrs.cpp @@ -175,6 +175,36 @@ struct RemoveUnusedBrs : public WalkerPass<PostWalker<RemoveUnusedBrs, Visitor<R } flows.clear(); } while (anotherCycle); + // finally, we may have simplified ifs enough to turn them into selects + struct Selectifier : public WalkerPass<PostWalker<Selectifier, Visitor<Selectifier>>> { + void visitIf(If* curr) { + if (curr->ifFalse) { + // if with else, consider turning it into a select if there is no control flow + // TODO: estimate cost + EffectAnalyzer condition; + condition.walk(curr->condition); + if (!condition.hasSideEffects()) { + EffectAnalyzer ifTrue; + ifTrue.walk(curr->ifTrue); + if (!ifTrue.hasSideEffects()) { + EffectAnalyzer ifFalse; + ifFalse.walk(curr->ifFalse); + if (!ifFalse.hasSideEffects()) { + auto* select = getModule()->allocator.alloc<Select>(); + select->condition = curr->condition; + select->ifTrue = curr->ifTrue; + select->ifFalse = curr->ifFalse; + select->finalize(); + replaceCurrent(select); + } + } + } + } + } + }; + Selectifier selectifier; + selectifier.setModule(getModule()); + selectifier.walk(root); } }; diff --git a/test/emcc_O2_hello_world.fromasm b/test/emcc_O2_hello_world.fromasm index b00bd61fa..fbe94c64b 100644 --- a/test/emcc_O2_hello_world.fromasm +++ b/test/emcc_O2_hello_world.fromasm @@ -50,8 +50,8 @@ (local $i62 i32) (local $i8 i32) (local $i15 i32) - (local $i44 i32) (local $i45 i32) + (local $i44 i32) (local $i60 i32) (local $i3 i32) (local $i4 i32) @@ -139,27 +139,6 @@ (i32.const 245) ) (block - (set_local $i3 - (i32.shr_u - (set_local $i2 - (if - (i32.lt_u - (get_local $i1) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (get_local $i1) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (i32.const 3) - ) - ) (if (i32.and (set_local $i5 @@ -169,7 +148,27 @@ (i32.const 176) ) ) - (get_local $i3) + (set_local $i3 + (i32.shr_u + (set_local $i2 + (select + (i32.const 16) + (i32.and + (i32.add + (get_local $i1) + (i32.const 11) + ) + (i32.const -8) + ) + (i32.lt_u + (get_local $i1) + (i32.const 11) + ) + ) + ) + (i32.const 3) + ) + ) ) ) (i32.const 3) @@ -822,36 +821,37 @@ ) ) ) - (set_local $i5 - (if - (set_local $i15 - (i32.lt_u - (set_local $i10 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $i23) - ) - (i32.const -8) - ) - (get_local $i2) + (set_local $i15 + (i32.lt_u + (set_local $i10 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $i23) ) + (i32.const -8) ) - (get_local $i5) + (get_local $i2) ) ) + (get_local $i5) + ) + ) + (set_local $i5 + (select (get_local $i10) (get_local $i5) + (get_local $i15) ) ) (set_local $i3 (get_local $i23) ) (set_local $i7 - (if - (get_local $i15) + (select (get_local $i23) (get_local $i7) + (get_local $i15) ) ) (br $while-in$7) @@ -1562,11 +1562,7 @@ (set_local $i7 (i32.shl (get_local $i5) - (if - (i32.eq - (get_local $i32) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -1575,6 +1571,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i32) + (i32.const 31) + ) ) ) ) @@ -1641,14 +1641,16 @@ ) ) (set_local $i16 - (if + (select + (get_local $i10) + (set_local $i9 + (i32.load offset=20 + (get_local $i17) + ) + ) (i32.or (i32.eq - (set_local $i9 - (i32.load offset=20 - (get_local $i17) - ) - ) + (get_local $i9) (i32.const 0) ) (i32.eq @@ -1672,8 +1674,6 @@ ) ) ) - (get_local $i10) - (get_local $i9) ) ) (if @@ -1920,33 +1920,34 @@ (set_local $i36 (i32.const 0) ) - (set_local $i3 - (if - (set_local $i7 - (i32.lt_u - (set_local $i8 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $i38) - ) - (i32.const -8) - ) - (get_local $i5) + (set_local $i7 + (i32.lt_u + (set_local $i8 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $i38) ) + (i32.const -8) ) - (get_local $i37) + (get_local $i5) ) ) + (get_local $i37) + ) + ) + (set_local $i3 + (select (get_local $i8) (get_local $i37) + (get_local $i7) ) ) (set_local $i8 - (if - (get_local $i7) + (select (get_local $i38) (get_local $i39) + (get_local $i7) ) ) (if @@ -2002,11 +2003,7 @@ ) ) (if - (if - (i32.ne - (get_local $i44) - (i32.const 0) - ) + (select (i32.lt_u (get_local $i43) (i32.sub @@ -2017,6 +2014,10 @@ ) ) (i32.const 0) + (i32.ne + (get_local $i44) + (i32.const 0) + ) ) (block (if @@ -2686,11 +2687,7 @@ (set_local $i4 (i32.shl (get_local $i43) - (if - (i32.eq - (get_local $i52) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -2699,6 +2696,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i52) + (i32.const 31) + ) ) ) ) @@ -3209,410 +3210,411 @@ (i32.const 0) ) ) - (if - (if + (set_local $i36 + (block $label$break$L257 (if - (if - (i32.eq - (set_local $i36 - (block $label$break$L257 - (if - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - (i32.const 190) - (block - (block $label$break$L259 - (if - (set_local $i52 + (i32.and + (i32.load + (i32.const 620) + ) + (i32.const 4) + ) + (i32.const 190) + (block + (block $label$break$L259 + (if + (set_local $i52 + (i32.load + (i32.const 200) + ) + ) + (block + (set_local $i50 + (i32.const 624) + ) + (loop $while-out$37 $while-in$38 + (if + (if + (i32.le_u + (set_local $i51 (i32.load - (i32.const 200) + (get_local $i50) ) ) - (block - (set_local $i50 - (i32.const 624) - ) - (loop $while-out$37 $while-in$38 - (if - (if - (i32.le_u - (set_local $i51 - (i32.load - (get_local $i50) - ) - ) - (get_local $i52) - ) - (i32.gt_u - (i32.add - (get_local $i51) - (i32.load - (set_local $i45 - (i32.add - (get_local $i50) - (i32.const 4) - ) - ) - ) - ) - (get_local $i52) - ) - (i32.const 0) - ) - (block - (set_local $i56 - (get_local $i50) - ) - (set_local $i57 - (get_local $i45) - ) - (br $while-out$37) - ) - ) - (if - (i32.eqz - (set_local $i50 - (i32.load offset=8 - (get_local $i50) - ) - ) - ) - (block - (set_local $i36 - (i32.const 173) - ) - (br $label$break$L259) - ) - ) - (br $while-in$38) - ) - (if - (i32.lt_u - (set_local $i50 - (i32.and - (i32.sub - (get_local $i55) - (i32.load - (i32.const 188) - ) - ) - (get_local $i54) - ) - ) - (i32.const 2147483647) - ) - (if - (i32.eq - (set_local $i45 - (call_import $_sbrk - (get_local $i50) - ) - ) - (i32.add - (i32.load - (get_local $i56) - ) - (i32.load - (get_local $i57) - ) - ) - ) - (if - (i32.ne - (get_local $i45) - (i32.const -1) - ) - (block - (set_local $i58 - (get_local $i45) - ) - (set_local $i59 - (get_local $i50) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - ) - (block - (set_local $i60 - (get_local $i45) - ) - (set_local $i61 - (get_local $i50) - ) - (set_local $i36 - (i32.const 183) - ) + (get_local $i52) + ) + (i32.gt_u + (i32.add + (get_local $i51) + (i32.load + (set_local $i45 + (i32.add + (get_local $i50) + (i32.const 4) ) ) ) ) - (set_local $i36 - (i32.const 173) + (get_local $i52) + ) + (i32.const 0) + ) + (block + (set_local $i56 + (get_local $i50) + ) + (set_local $i57 + (get_local $i45) + ) + (br $while-out$37) + ) + ) + (if + (i32.eqz + (set_local $i50 + (i32.load offset=8 + (get_local $i50) ) ) ) - (block $do-once$39 - (if - (if - (i32.eq - (get_local $i36) - (i32.const 173) + (block + (set_local $i36 + (i32.const 173) + ) + (br $label$break$L259) + ) + ) + (br $while-in$38) + ) + (if + (i32.lt_u + (set_local $i50 + (i32.and + (i32.sub + (get_local $i55) + (i32.load + (i32.const 188) ) - (i32.ne - (set_local $i52 - (call_import $_sbrk - (i32.const 0) - ) + ) + (get_local $i54) + ) + ) + (i32.const 2147483647) + ) + (if + (i32.eq + (set_local $i45 + (call_import $_sbrk + (get_local $i50) + ) + ) + (i32.add + (i32.load + (get_local $i56) + ) + (i32.load + (get_local $i57) + ) + ) + ) + (if + (i32.ne + (get_local $i45) + (i32.const -1) + ) + (block + (set_local $i58 + (get_local $i45) + ) + (set_local $i59 + (get_local $i50) + ) + (br $label$break$L257 + (i32.const 193) + ) + ) + ) + (block + (set_local $i60 + (get_local $i45) + ) + (set_local $i61 + (get_local $i50) + ) + (set_local $i36 + (i32.const 183) + ) + ) + ) + ) + ) + (set_local $i36 + (i32.const 173) + ) + ) + ) + (block $do-once$39 + (if + (if + (i32.eq + (get_local $i36) + (i32.const 173) + ) + (i32.ne + (set_local $i52 + (call_import $_sbrk + (i32.const 0) + ) + ) + (i32.const -1) + ) + (i32.const 0) + ) + (block + (set_local $i62 + (if + (i32.and + (set_local $i45 + (i32.add + (set_local $i50 + (i32.load + (i32.const 652) ) - (i32.const -1) ) + (i32.const -1) + ) + ) + (set_local $i5 + (get_local $i52) + ) + ) + (i32.add + (i32.sub + (get_local $i43) + (get_local $i5) + ) + (i32.and + (i32.add + (get_local $i45) + (get_local $i5) + ) + (i32.sub (i32.const 0) + (get_local $i50) ) - (block - (set_local $i62 - (if - (i32.and - (set_local $i45 - (i32.add - (set_local $i50 - (i32.load - (i32.const 652) - ) - ) - (i32.const -1) - ) - ) - (set_local $i5 - (get_local $i52) - ) - ) - (i32.add - (i32.sub - (get_local $i43) - (get_local $i5) - ) - (i32.and - (i32.add - (get_local $i45) - (get_local $i5) - ) - (i32.sub - (i32.const 0) - (get_local $i50) - ) - ) - ) - (get_local $i43) - ) - ) - (set_local $i5 - (i32.add - (set_local $i50 - (i32.load - (i32.const 608) - ) - ) - (get_local $i62) - ) + ) + ) + (get_local $i43) + ) + ) + (set_local $i5 + (i32.add + (set_local $i50 + (i32.load + (i32.const 608) + ) + ) + (get_local $i62) + ) + ) + (if + (i32.and + (i32.gt_u + (get_local $i62) + (get_local $i31) + ) + (i32.lt_u + (get_local $i62) + (i32.const 2147483647) + ) + ) + (block + (br_if $do-once$39 + (select + (i32.or + (i32.le_u + (get_local $i5) + (get_local $i50) ) - (if - (i32.and - (i32.gt_u - (get_local $i62) - (get_local $i31) - ) - (i32.lt_u - (get_local $i62) - (i32.const 2147483647) - ) - ) - (block - (br_if $do-once$39 - (if - (i32.ne - (set_local $i45 - (i32.load - (i32.const 616) - ) - ) - (i32.const 0) - ) - (i32.or - (i32.le_u - (get_local $i5) - (get_local $i50) - ) - (i32.gt_u - (get_local $i5) - (get_local $i45) - ) - ) - (i32.const 0) - ) - ) - (if - (i32.eq - (set_local $i45 - (call_import $_sbrk - (get_local $i62) - ) - ) - (get_local $i52) - ) - (block - (set_local $i58 - (get_local $i52) - ) - (set_local $i59 - (get_local $i62) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - (block - (set_local $i60 - (get_local $i45) - ) - (set_local $i61 - (get_local $i62) - ) - (set_local $i36 - (i32.const 183) - ) - ) + (i32.gt_u + (get_local $i5) + (set_local $i45 + (i32.load + (i32.const 616) ) ) ) ) + (i32.const 0) + (i32.ne + (get_local $i45) + (i32.const 0) + ) ) ) - (block $label$break$L279 - (if - (i32.eq - (get_local $i36) + (if + (i32.eq + (set_local $i45 + (call_import $_sbrk + (get_local $i62) + ) + ) + (get_local $i52) + ) + (block + (set_local $i58 + (get_local $i52) + ) + (set_local $i59 + (get_local $i62) + ) + (br $label$break$L257 + (i32.const 193) + ) + ) + (block + (set_local $i60 + (get_local $i45) + ) + (set_local $i61 + (get_local $i62) + ) + (set_local $i36 (i32.const 183) ) - (block - (set_local $i45 + ) + ) + ) + ) + ) + ) + ) + (block $label$break$L279 + (if + (i32.eq + (get_local $i36) + (i32.const 183) + ) + (block + (set_local $i45 + (i32.sub + (i32.const 0) + (get_local $i61) + ) + ) + (if + (if + (i32.and + (i32.gt_u + (get_local $i53) + (get_local $i61) + ) + (i32.and + (i32.lt_u + (get_local $i61) + (i32.const 2147483647) + ) + (i32.ne + (get_local $i60) + (i32.const -1) + ) + ) + ) + (i32.lt_u + (set_local $i5 + (i32.and + (i32.add (i32.sub - (i32.const 0) + (get_local $i44) (get_local $i61) ) - ) - (if - (if - (i32.and - (i32.gt_u - (get_local $i53) - (get_local $i61) - ) - (i32.and - (i32.lt_u - (get_local $i61) - (i32.const 2147483647) - ) - (i32.ne - (get_local $i60) - (i32.const -1) - ) - ) - ) - (i32.lt_u - (set_local $i5 - (i32.and - (i32.add - (i32.sub - (get_local $i44) - (get_local $i61) - ) - (set_local $i52 - (i32.load - (i32.const 656) - ) - ) - ) - (i32.sub - (i32.const 0) - (get_local $i52) - ) - ) - ) - (i32.const 2147483647) - ) - (i32.const 0) - ) - (if - (i32.eq - (call_import $_sbrk - (get_local $i5) - ) - (i32.const -1) - ) - (block - (call_import $_sbrk - (get_local $i45) - ) - (br $label$break$L279) - ) - (set_local $i63 - (i32.add - (get_local $i5) - (get_local $i61) - ) + (set_local $i52 + (i32.load + (i32.const 656) ) ) - (set_local $i63 - (get_local $i61) - ) ) - (if - (i32.ne - (get_local $i60) - (i32.const -1) - ) - (block - (set_local $i58 - (get_local $i60) - ) - (set_local $i59 - (get_local $i63) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) + (i32.sub + (i32.const 0) + (get_local $i52) ) ) ) + (i32.const 2147483647) ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) + (i32.const 0) + ) + (if + (i32.eq + (call_import $_sbrk + (get_local $i5) ) + (i32.const -1) + ) + (block + (call_import $_sbrk + (get_local $i45) + ) + (br $label$break$L279) + ) + (set_local $i63 + (i32.add + (get_local $i5) + (get_local $i61) + ) + ) + ) + (set_local $i63 + (get_local $i61) + ) + ) + (if + (i32.ne + (get_local $i60) + (i32.const -1) + ) + (block + (set_local $i58 + (get_local $i60) + ) + (set_local $i59 + (get_local $i63) + ) + (br $label$break$L257 + (i32.const 193) ) - (i32.const 190) ) ) ) ) - (i32.const 190) ) + (i32.store + (i32.const 620) + (i32.or + (i32.load + (i32.const 620) + ) + (i32.const 4) + ) + ) + (i32.const 190) + ) + ) + ) + ) + (if + (if + (if + (select (i32.lt_u (get_local $i43) (i32.const 2147483647) ) (i32.const 0) + (i32.eq + (get_local $i36) + (i32.const 190) + ) ) (i32.and (i32.lt_u @@ -3759,12 +3761,19 @@ ) ) (if - (if - (if - (i32.eq - (get_local $i36) - (i32.const 203) + (select + (i32.and + (i32.lt_u + (get_local $i60) + (get_local $i58) + ) + (i32.ge_u + (get_local $i60) + (get_local $i64) ) + ) + (i32.const 0) + (select (i32.eq (i32.and (i32.load offset=12 @@ -3775,18 +3784,11 @@ (i32.const 0) ) (i32.const 0) - ) - (i32.and - (i32.lt_u - (get_local $i60) - (get_local $i58) - ) - (i32.ge_u - (get_local $i60) - (get_local $i64) + (i32.eq + (get_local $i36) + (i32.const 203) ) ) - (i32.const 0) ) (block (i32.store @@ -3796,27 +3798,32 @@ (get_local $i59) ) ) - (set_local $i44 - (if - (i32.eq - (i32.and - (set_local $i63 - (i32.add - (get_local $i60) - (i32.const 8) + (set_local $i63 + (i32.add + (get_local $i60) + (set_local $i44 + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $i63 + (i32.add + (get_local $i60) + (i32.const 8) + ) + ) ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $i63) + (i32.const 7) + ) + (i32.const 0) ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $i63) ) - (i32.const 7) ) ) ) @@ -3833,12 +3840,7 @@ ) (i32.store (i32.const 200) - (set_local $i63 - (i32.add - (get_local $i60) - (get_local $i44) - ) - ) + (get_local $i63) ) (i32.store (i32.const 188) @@ -3971,26 +3973,26 @@ (set_local $i44 (i32.add (get_local $i58) - (if - (i32.eq - (i32.and + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) (set_local $i63 (i32.add (get_local $i58) (i32.const 8) ) ) - (i32.const 7) ) - (i32.const 0) + (i32.const 7) ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) + (i32.eq + (i32.and (get_local $i63) + (i32.const 7) ) - (i32.const 7) + (i32.const 0) ) ) ) @@ -3998,26 +4000,26 @@ (set_local $i43 (i32.add (get_local $i61) - (if - (i32.eq - (i32.and + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) (set_local $i63 (i32.add (get_local $i61) (i32.const 8) ) ) - (i32.const 7) ) - (i32.const 0) + (i32.const 7) ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) + (i32.eq + (i32.and (get_local $i63) + (i32.const 7) ) - (i32.const 7) + (i32.const 0) ) ) ) @@ -4924,11 +4926,7 @@ (set_local $i50 (i32.shl (get_local $i79) - (if - (i32.eq - (get_local $i82) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -4937,6 +4935,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i82) + (i32.const 31) + ) ) ) ) @@ -5187,30 +5189,32 @@ (set_local $i63 (i32.add (set_local $i44 - (if - (i32.lt_u - (set_local $i63 - (i32.add - (get_local $i44) - (if - (i32.eq - (i32.and - (get_local $i53) - (i32.const 7) - ) + (select + (get_local $i60) + (set_local $i63 + (i32.add + (get_local $i44) + (select + (i32.const 0) + (i32.and + (i32.sub (i32.const 0) + (get_local $i53) ) - (i32.const 0) + (i32.const 7) + ) + (i32.eq (i32.and - (i32.sub - (i32.const 0) - (get_local $i53) - ) + (get_local $i53) (i32.const 7) ) + (i32.const 0) ) ) ) + ) + (i32.lt_u + (get_local $i63) (set_local $i53 (i32.add (get_local $i60) @@ -5218,43 +5222,40 @@ ) ) ) - (get_local $i60) - (get_local $i63) ) ) (i32.const 8) ) ) - (set_local $i61 - (if - (i32.eq - (i32.and - (set_local $i43 - (i32.add - (get_local $i58) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $i43) - ) - (i32.const 7) - ) - ) - ) (i32.store (i32.const 200) (set_local $i43 (i32.add (get_local $i58) - (get_local $i61) + (set_local $i61 + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $i43 + (i32.add + (get_local $i58) + (i32.const 8) + ) + ) + ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $i43) + (i32.const 7) + ) + (i32.const 0) + ) + ) + ) ) ) ) @@ -5661,11 +5662,7 @@ (set_local $i5 (i32.shl (get_local $i63) - (if - (i32.eq - (get_local $i89) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -5674,6 +5671,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i89) + (i32.const 31) + ) ) ) ) @@ -5917,36 +5918,35 @@ ) ) ) - (set_local $i62 - (if - (i32.eq - (i32.and - (set_local $i5 - (i32.add - (get_local $i58) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $i5) - ) - (i32.const 7) - ) - ) - ) (i32.store (i32.const 200) (set_local $i5 (i32.add (get_local $i58) - (get_local $i62) + (set_local $i62 + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $i5 + (i32.add + (get_local $i58) + (i32.const 8) + ) + ) + ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $i5) + (i32.const 7) + ) + (i32.const 0) + ) + ) + ) ) ) ) @@ -7692,11 +7692,7 @@ (set_local $i31 (i32.shl (get_local $i29) - (if - (i32.eq - (get_local $i32) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -7705,6 +7701,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i32) + (i32.const 31) + ) ) ) ) diff --git a/test/emcc_O2_hello_world.fromasm.imprecise b/test/emcc_O2_hello_world.fromasm.imprecise index b00bd61fa..fbe94c64b 100644 --- a/test/emcc_O2_hello_world.fromasm.imprecise +++ b/test/emcc_O2_hello_world.fromasm.imprecise @@ -50,8 +50,8 @@ (local $i62 i32) (local $i8 i32) (local $i15 i32) - (local $i44 i32) (local $i45 i32) + (local $i44 i32) (local $i60 i32) (local $i3 i32) (local $i4 i32) @@ -139,27 +139,6 @@ (i32.const 245) ) (block - (set_local $i3 - (i32.shr_u - (set_local $i2 - (if - (i32.lt_u - (get_local $i1) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (get_local $i1) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (i32.const 3) - ) - ) (if (i32.and (set_local $i5 @@ -169,7 +148,27 @@ (i32.const 176) ) ) - (get_local $i3) + (set_local $i3 + (i32.shr_u + (set_local $i2 + (select + (i32.const 16) + (i32.and + (i32.add + (get_local $i1) + (i32.const 11) + ) + (i32.const -8) + ) + (i32.lt_u + (get_local $i1) + (i32.const 11) + ) + ) + ) + (i32.const 3) + ) + ) ) ) (i32.const 3) @@ -822,36 +821,37 @@ ) ) ) - (set_local $i5 - (if - (set_local $i15 - (i32.lt_u - (set_local $i10 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $i23) - ) - (i32.const -8) - ) - (get_local $i2) + (set_local $i15 + (i32.lt_u + (set_local $i10 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $i23) ) + (i32.const -8) ) - (get_local $i5) + (get_local $i2) ) ) + (get_local $i5) + ) + ) + (set_local $i5 + (select (get_local $i10) (get_local $i5) + (get_local $i15) ) ) (set_local $i3 (get_local $i23) ) (set_local $i7 - (if - (get_local $i15) + (select (get_local $i23) (get_local $i7) + (get_local $i15) ) ) (br $while-in$7) @@ -1562,11 +1562,7 @@ (set_local $i7 (i32.shl (get_local $i5) - (if - (i32.eq - (get_local $i32) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -1575,6 +1571,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i32) + (i32.const 31) + ) ) ) ) @@ -1641,14 +1641,16 @@ ) ) (set_local $i16 - (if + (select + (get_local $i10) + (set_local $i9 + (i32.load offset=20 + (get_local $i17) + ) + ) (i32.or (i32.eq - (set_local $i9 - (i32.load offset=20 - (get_local $i17) - ) - ) + (get_local $i9) (i32.const 0) ) (i32.eq @@ -1672,8 +1674,6 @@ ) ) ) - (get_local $i10) - (get_local $i9) ) ) (if @@ -1920,33 +1920,34 @@ (set_local $i36 (i32.const 0) ) - (set_local $i3 - (if - (set_local $i7 - (i32.lt_u - (set_local $i8 - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $i38) - ) - (i32.const -8) - ) - (get_local $i5) + (set_local $i7 + (i32.lt_u + (set_local $i8 + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $i38) ) + (i32.const -8) ) - (get_local $i37) + (get_local $i5) ) ) + (get_local $i37) + ) + ) + (set_local $i3 + (select (get_local $i8) (get_local $i37) + (get_local $i7) ) ) (set_local $i8 - (if - (get_local $i7) + (select (get_local $i38) (get_local $i39) + (get_local $i7) ) ) (if @@ -2002,11 +2003,7 @@ ) ) (if - (if - (i32.ne - (get_local $i44) - (i32.const 0) - ) + (select (i32.lt_u (get_local $i43) (i32.sub @@ -2017,6 +2014,10 @@ ) ) (i32.const 0) + (i32.ne + (get_local $i44) + (i32.const 0) + ) ) (block (if @@ -2686,11 +2687,7 @@ (set_local $i4 (i32.shl (get_local $i43) - (if - (i32.eq - (get_local $i52) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -2699,6 +2696,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i52) + (i32.const 31) + ) ) ) ) @@ -3209,410 +3210,411 @@ (i32.const 0) ) ) - (if - (if + (set_local $i36 + (block $label$break$L257 (if - (if - (i32.eq - (set_local $i36 - (block $label$break$L257 - (if - (i32.and - (i32.load - (i32.const 620) - ) - (i32.const 4) - ) - (i32.const 190) - (block - (block $label$break$L259 - (if - (set_local $i52 + (i32.and + (i32.load + (i32.const 620) + ) + (i32.const 4) + ) + (i32.const 190) + (block + (block $label$break$L259 + (if + (set_local $i52 + (i32.load + (i32.const 200) + ) + ) + (block + (set_local $i50 + (i32.const 624) + ) + (loop $while-out$37 $while-in$38 + (if + (if + (i32.le_u + (set_local $i51 (i32.load - (i32.const 200) + (get_local $i50) ) ) - (block - (set_local $i50 - (i32.const 624) - ) - (loop $while-out$37 $while-in$38 - (if - (if - (i32.le_u - (set_local $i51 - (i32.load - (get_local $i50) - ) - ) - (get_local $i52) - ) - (i32.gt_u - (i32.add - (get_local $i51) - (i32.load - (set_local $i45 - (i32.add - (get_local $i50) - (i32.const 4) - ) - ) - ) - ) - (get_local $i52) - ) - (i32.const 0) - ) - (block - (set_local $i56 - (get_local $i50) - ) - (set_local $i57 - (get_local $i45) - ) - (br $while-out$37) - ) - ) - (if - (i32.eqz - (set_local $i50 - (i32.load offset=8 - (get_local $i50) - ) - ) - ) - (block - (set_local $i36 - (i32.const 173) - ) - (br $label$break$L259) - ) - ) - (br $while-in$38) - ) - (if - (i32.lt_u - (set_local $i50 - (i32.and - (i32.sub - (get_local $i55) - (i32.load - (i32.const 188) - ) - ) - (get_local $i54) - ) - ) - (i32.const 2147483647) - ) - (if - (i32.eq - (set_local $i45 - (call_import $_sbrk - (get_local $i50) - ) - ) - (i32.add - (i32.load - (get_local $i56) - ) - (i32.load - (get_local $i57) - ) - ) - ) - (if - (i32.ne - (get_local $i45) - (i32.const -1) - ) - (block - (set_local $i58 - (get_local $i45) - ) - (set_local $i59 - (get_local $i50) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - ) - (block - (set_local $i60 - (get_local $i45) - ) - (set_local $i61 - (get_local $i50) - ) - (set_local $i36 - (i32.const 183) - ) + (get_local $i52) + ) + (i32.gt_u + (i32.add + (get_local $i51) + (i32.load + (set_local $i45 + (i32.add + (get_local $i50) + (i32.const 4) ) ) ) ) - (set_local $i36 - (i32.const 173) + (get_local $i52) + ) + (i32.const 0) + ) + (block + (set_local $i56 + (get_local $i50) + ) + (set_local $i57 + (get_local $i45) + ) + (br $while-out$37) + ) + ) + (if + (i32.eqz + (set_local $i50 + (i32.load offset=8 + (get_local $i50) ) ) ) - (block $do-once$39 - (if - (if - (i32.eq - (get_local $i36) - (i32.const 173) + (block + (set_local $i36 + (i32.const 173) + ) + (br $label$break$L259) + ) + ) + (br $while-in$38) + ) + (if + (i32.lt_u + (set_local $i50 + (i32.and + (i32.sub + (get_local $i55) + (i32.load + (i32.const 188) ) - (i32.ne - (set_local $i52 - (call_import $_sbrk - (i32.const 0) - ) + ) + (get_local $i54) + ) + ) + (i32.const 2147483647) + ) + (if + (i32.eq + (set_local $i45 + (call_import $_sbrk + (get_local $i50) + ) + ) + (i32.add + (i32.load + (get_local $i56) + ) + (i32.load + (get_local $i57) + ) + ) + ) + (if + (i32.ne + (get_local $i45) + (i32.const -1) + ) + (block + (set_local $i58 + (get_local $i45) + ) + (set_local $i59 + (get_local $i50) + ) + (br $label$break$L257 + (i32.const 193) + ) + ) + ) + (block + (set_local $i60 + (get_local $i45) + ) + (set_local $i61 + (get_local $i50) + ) + (set_local $i36 + (i32.const 183) + ) + ) + ) + ) + ) + (set_local $i36 + (i32.const 173) + ) + ) + ) + (block $do-once$39 + (if + (if + (i32.eq + (get_local $i36) + (i32.const 173) + ) + (i32.ne + (set_local $i52 + (call_import $_sbrk + (i32.const 0) + ) + ) + (i32.const -1) + ) + (i32.const 0) + ) + (block + (set_local $i62 + (if + (i32.and + (set_local $i45 + (i32.add + (set_local $i50 + (i32.load + (i32.const 652) ) - (i32.const -1) ) + (i32.const -1) + ) + ) + (set_local $i5 + (get_local $i52) + ) + ) + (i32.add + (i32.sub + (get_local $i43) + (get_local $i5) + ) + (i32.and + (i32.add + (get_local $i45) + (get_local $i5) + ) + (i32.sub (i32.const 0) + (get_local $i50) ) - (block - (set_local $i62 - (if - (i32.and - (set_local $i45 - (i32.add - (set_local $i50 - (i32.load - (i32.const 652) - ) - ) - (i32.const -1) - ) - ) - (set_local $i5 - (get_local $i52) - ) - ) - (i32.add - (i32.sub - (get_local $i43) - (get_local $i5) - ) - (i32.and - (i32.add - (get_local $i45) - (get_local $i5) - ) - (i32.sub - (i32.const 0) - (get_local $i50) - ) - ) - ) - (get_local $i43) - ) - ) - (set_local $i5 - (i32.add - (set_local $i50 - (i32.load - (i32.const 608) - ) - ) - (get_local $i62) - ) + ) + ) + (get_local $i43) + ) + ) + (set_local $i5 + (i32.add + (set_local $i50 + (i32.load + (i32.const 608) + ) + ) + (get_local $i62) + ) + ) + (if + (i32.and + (i32.gt_u + (get_local $i62) + (get_local $i31) + ) + (i32.lt_u + (get_local $i62) + (i32.const 2147483647) + ) + ) + (block + (br_if $do-once$39 + (select + (i32.or + (i32.le_u + (get_local $i5) + (get_local $i50) ) - (if - (i32.and - (i32.gt_u - (get_local $i62) - (get_local $i31) - ) - (i32.lt_u - (get_local $i62) - (i32.const 2147483647) - ) - ) - (block - (br_if $do-once$39 - (if - (i32.ne - (set_local $i45 - (i32.load - (i32.const 616) - ) - ) - (i32.const 0) - ) - (i32.or - (i32.le_u - (get_local $i5) - (get_local $i50) - ) - (i32.gt_u - (get_local $i5) - (get_local $i45) - ) - ) - (i32.const 0) - ) - ) - (if - (i32.eq - (set_local $i45 - (call_import $_sbrk - (get_local $i62) - ) - ) - (get_local $i52) - ) - (block - (set_local $i58 - (get_local $i52) - ) - (set_local $i59 - (get_local $i62) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) - (block - (set_local $i60 - (get_local $i45) - ) - (set_local $i61 - (get_local $i62) - ) - (set_local $i36 - (i32.const 183) - ) - ) + (i32.gt_u + (get_local $i5) + (set_local $i45 + (i32.load + (i32.const 616) ) ) ) ) + (i32.const 0) + (i32.ne + (get_local $i45) + (i32.const 0) + ) ) ) - (block $label$break$L279 - (if - (i32.eq - (get_local $i36) + (if + (i32.eq + (set_local $i45 + (call_import $_sbrk + (get_local $i62) + ) + ) + (get_local $i52) + ) + (block + (set_local $i58 + (get_local $i52) + ) + (set_local $i59 + (get_local $i62) + ) + (br $label$break$L257 + (i32.const 193) + ) + ) + (block + (set_local $i60 + (get_local $i45) + ) + (set_local $i61 + (get_local $i62) + ) + (set_local $i36 (i32.const 183) ) - (block - (set_local $i45 + ) + ) + ) + ) + ) + ) + ) + (block $label$break$L279 + (if + (i32.eq + (get_local $i36) + (i32.const 183) + ) + (block + (set_local $i45 + (i32.sub + (i32.const 0) + (get_local $i61) + ) + ) + (if + (if + (i32.and + (i32.gt_u + (get_local $i53) + (get_local $i61) + ) + (i32.and + (i32.lt_u + (get_local $i61) + (i32.const 2147483647) + ) + (i32.ne + (get_local $i60) + (i32.const -1) + ) + ) + ) + (i32.lt_u + (set_local $i5 + (i32.and + (i32.add (i32.sub - (i32.const 0) + (get_local $i44) (get_local $i61) ) - ) - (if - (if - (i32.and - (i32.gt_u - (get_local $i53) - (get_local $i61) - ) - (i32.and - (i32.lt_u - (get_local $i61) - (i32.const 2147483647) - ) - (i32.ne - (get_local $i60) - (i32.const -1) - ) - ) - ) - (i32.lt_u - (set_local $i5 - (i32.and - (i32.add - (i32.sub - (get_local $i44) - (get_local $i61) - ) - (set_local $i52 - (i32.load - (i32.const 656) - ) - ) - ) - (i32.sub - (i32.const 0) - (get_local $i52) - ) - ) - ) - (i32.const 2147483647) - ) - (i32.const 0) - ) - (if - (i32.eq - (call_import $_sbrk - (get_local $i5) - ) - (i32.const -1) - ) - (block - (call_import $_sbrk - (get_local $i45) - ) - (br $label$break$L279) - ) - (set_local $i63 - (i32.add - (get_local $i5) - (get_local $i61) - ) + (set_local $i52 + (i32.load + (i32.const 656) ) ) - (set_local $i63 - (get_local $i61) - ) ) - (if - (i32.ne - (get_local $i60) - (i32.const -1) - ) - (block - (set_local $i58 - (get_local $i60) - ) - (set_local $i59 - (get_local $i63) - ) - (br $label$break$L257 - (i32.const 193) - ) - ) + (i32.sub + (i32.const 0) + (get_local $i52) ) ) ) + (i32.const 2147483647) ) - (i32.store - (i32.const 620) - (i32.or - (i32.load - (i32.const 620) - ) - (i32.const 4) + (i32.const 0) + ) + (if + (i32.eq + (call_import $_sbrk + (get_local $i5) ) + (i32.const -1) + ) + (block + (call_import $_sbrk + (get_local $i45) + ) + (br $label$break$L279) + ) + (set_local $i63 + (i32.add + (get_local $i5) + (get_local $i61) + ) + ) + ) + (set_local $i63 + (get_local $i61) + ) + ) + (if + (i32.ne + (get_local $i60) + (i32.const -1) + ) + (block + (set_local $i58 + (get_local $i60) + ) + (set_local $i59 + (get_local $i63) + ) + (br $label$break$L257 + (i32.const 193) ) - (i32.const 190) ) ) ) ) - (i32.const 190) ) + (i32.store + (i32.const 620) + (i32.or + (i32.load + (i32.const 620) + ) + (i32.const 4) + ) + ) + (i32.const 190) + ) + ) + ) + ) + (if + (if + (if + (select (i32.lt_u (get_local $i43) (i32.const 2147483647) ) (i32.const 0) + (i32.eq + (get_local $i36) + (i32.const 190) + ) ) (i32.and (i32.lt_u @@ -3759,12 +3761,19 @@ ) ) (if - (if - (if - (i32.eq - (get_local $i36) - (i32.const 203) + (select + (i32.and + (i32.lt_u + (get_local $i60) + (get_local $i58) + ) + (i32.ge_u + (get_local $i60) + (get_local $i64) ) + ) + (i32.const 0) + (select (i32.eq (i32.and (i32.load offset=12 @@ -3775,18 +3784,11 @@ (i32.const 0) ) (i32.const 0) - ) - (i32.and - (i32.lt_u - (get_local $i60) - (get_local $i58) - ) - (i32.ge_u - (get_local $i60) - (get_local $i64) + (i32.eq + (get_local $i36) + (i32.const 203) ) ) - (i32.const 0) ) (block (i32.store @@ -3796,27 +3798,32 @@ (get_local $i59) ) ) - (set_local $i44 - (if - (i32.eq - (i32.and - (set_local $i63 - (i32.add - (get_local $i60) - (i32.const 8) + (set_local $i63 + (i32.add + (get_local $i60) + (set_local $i44 + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $i63 + (i32.add + (get_local $i60) + (i32.const 8) + ) + ) ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $i63) + (i32.const 7) + ) + (i32.const 0) ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $i63) ) - (i32.const 7) ) ) ) @@ -3833,12 +3840,7 @@ ) (i32.store (i32.const 200) - (set_local $i63 - (i32.add - (get_local $i60) - (get_local $i44) - ) - ) + (get_local $i63) ) (i32.store (i32.const 188) @@ -3971,26 +3973,26 @@ (set_local $i44 (i32.add (get_local $i58) - (if - (i32.eq - (i32.and + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) (set_local $i63 (i32.add (get_local $i58) (i32.const 8) ) ) - (i32.const 7) ) - (i32.const 0) + (i32.const 7) ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) + (i32.eq + (i32.and (get_local $i63) + (i32.const 7) ) - (i32.const 7) + (i32.const 0) ) ) ) @@ -3998,26 +4000,26 @@ (set_local $i43 (i32.add (get_local $i61) - (if - (i32.eq - (i32.and + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) (set_local $i63 (i32.add (get_local $i61) (i32.const 8) ) ) - (i32.const 7) ) - (i32.const 0) + (i32.const 7) ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) + (i32.eq + (i32.and (get_local $i63) + (i32.const 7) ) - (i32.const 7) + (i32.const 0) ) ) ) @@ -4924,11 +4926,7 @@ (set_local $i50 (i32.shl (get_local $i79) - (if - (i32.eq - (get_local $i82) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -4937,6 +4935,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i82) + (i32.const 31) + ) ) ) ) @@ -5187,30 +5189,32 @@ (set_local $i63 (i32.add (set_local $i44 - (if - (i32.lt_u - (set_local $i63 - (i32.add - (get_local $i44) - (if - (i32.eq - (i32.and - (get_local $i53) - (i32.const 7) - ) + (select + (get_local $i60) + (set_local $i63 + (i32.add + (get_local $i44) + (select + (i32.const 0) + (i32.and + (i32.sub (i32.const 0) + (get_local $i53) ) - (i32.const 0) + (i32.const 7) + ) + (i32.eq (i32.and - (i32.sub - (i32.const 0) - (get_local $i53) - ) + (get_local $i53) (i32.const 7) ) + (i32.const 0) ) ) ) + ) + (i32.lt_u + (get_local $i63) (set_local $i53 (i32.add (get_local $i60) @@ -5218,43 +5222,40 @@ ) ) ) - (get_local $i60) - (get_local $i63) ) ) (i32.const 8) ) ) - (set_local $i61 - (if - (i32.eq - (i32.and - (set_local $i43 - (i32.add - (get_local $i58) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $i43) - ) - (i32.const 7) - ) - ) - ) (i32.store (i32.const 200) (set_local $i43 (i32.add (get_local $i58) - (get_local $i61) + (set_local $i61 + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $i43 + (i32.add + (get_local $i58) + (i32.const 8) + ) + ) + ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $i43) + (i32.const 7) + ) + (i32.const 0) + ) + ) + ) ) ) ) @@ -5661,11 +5662,7 @@ (set_local $i5 (i32.shl (get_local $i63) - (if - (i32.eq - (get_local $i89) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -5674,6 +5671,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i89) + (i32.const 31) + ) ) ) ) @@ -5917,36 +5918,35 @@ ) ) ) - (set_local $i62 - (if - (i32.eq - (i32.and - (set_local $i5 - (i32.add - (get_local $i58) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $i5) - ) - (i32.const 7) - ) - ) - ) (i32.store (i32.const 200) (set_local $i5 (i32.add (get_local $i58) - (get_local $i62) + (set_local $i62 + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $i5 + (i32.add + (get_local $i58) + (i32.const 8) + ) + ) + ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $i5) + (i32.const 7) + ) + (i32.const 0) + ) + ) + ) ) ) ) @@ -7692,11 +7692,7 @@ (set_local $i31 (i32.shl (get_local $i29) - (if - (i32.eq - (get_local $i32) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -7705,6 +7701,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $i32) + (i32.const 31) + ) ) ) ) diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm index 15756e9c6..1aabeb0ee 100644 --- a/test/emcc_hello_world.fromasm +++ b/test/emcc_hello_world.fromasm @@ -1526,7 +1526,6 @@ (local $$7 i32) (local $$and i32) (local $$cond i32) - (local $$ret$1 i32) (local $$ret$1$ i32) (local $$retval$0 i32) (local $$wbase i32) @@ -1667,145 +1666,144 @@ ) ) ) - (set_local $$ret$1 - (if - (i32.eq - (i32.load - (set_local $$buf_size - (i32.add - (get_local $$f) - (i32.const 48) - ) - ) - ) - (i32.const 0) - ) - (block - (set_local $$4 + (set_local $$ret$1$ + (select + (if + (i32.eq (i32.load - (set_local $$buf + (set_local $$buf_size (i32.add (get_local $$f) - (i32.const 44) + (i32.const 48) ) ) ) + (i32.const 0) ) - (i32.store - (get_local $$buf) - (get_local $$internal_buf) - ) - (i32.store - (set_local $$wbase - (i32.add - (get_local $$f) - (i32.const 28) + (block + (set_local $$4 + (i32.load + (set_local $$buf + (i32.add + (get_local $$f) + (i32.const 44) + ) + ) ) ) - (get_local $$internal_buf) - ) - (i32.store - (set_local $$wpos - (i32.add - (get_local $$f) - (i32.const 20) - ) + (i32.store + (get_local $$buf) + (get_local $$internal_buf) ) - (get_local $$internal_buf) - ) - (i32.store - (get_local $$buf_size) - (i32.const 80) - ) - (i32.store - (set_local $$wend - (i32.add - (get_local $$f) - (i32.const 16) + (i32.store + (set_local $$wbase + (i32.add + (get_local $$f) + (i32.const 28) + ) ) - ) - (i32.add (get_local $$internal_buf) - (i32.const 80) ) - ) - (set_local $$call21 - (call $_printf_core - (get_local $$f) - (get_local $$fmt) - (get_local $$ap2) - (get_local $$nl_arg) - (get_local $$nl_type) + (i32.store + (set_local $$wpos + (i32.add + (get_local $$f) + (i32.const 20) + ) + ) + (get_local $$internal_buf) ) - ) - (if - (i32.eq - (get_local $$4) - (i32.const 0) + (i32.store + (get_local $$buf_size) + (i32.const 80) ) - (get_local $$call21) - (block - (call_indirect $FUNCSIG$iiii + (i32.store + (set_local $$wend (i32.add - (i32.and - (i32.load offset=36 - (get_local $$f) - ) - (i32.const 7) - ) - (i32.const 2) + (get_local $$f) + (i32.const 16) ) + ) + (i32.add + (get_local $$internal_buf) + (i32.const 80) + ) + ) + (set_local $$call21 + (call $_printf_core (get_local $$f) - (i32.const 0) + (get_local $$fmt) + (get_local $$ap2) + (get_local $$nl_arg) + (get_local $$nl_type) + ) + ) + (if + (i32.eq + (get_local $$4) (i32.const 0) ) - (set_local $$$call21 - (if - (i32.eq - (i32.load - (get_local $$wpos) + (get_local $$call21) + (block + (call_indirect $FUNCSIG$iiii + (i32.add + (i32.and + (i32.load offset=36 + (get_local $$f) + ) + (i32.const 7) ) - (i32.const 0) + (i32.const 2) ) - (i32.const -1) - (get_local $$call21) + (get_local $$f) + (i32.const 0) + (i32.const 0) ) + (set_local $$$call21 + (select + (i32.const -1) + (get_local $$call21) + (i32.eq + (i32.load + (get_local $$wpos) + ) + (i32.const 0) + ) + ) + ) + (i32.store + (get_local $$buf) + (get_local $$4) + ) + (i32.store + (get_local $$buf_size) + (i32.const 0) + ) + (i32.store + (get_local $$wend) + (i32.const 0) + ) + (i32.store + (get_local $$wbase) + (i32.const 0) + ) + (i32.store + (get_local $$wpos) + (i32.const 0) + ) + (get_local $$$call21) ) - (i32.store - (get_local $$buf) - (get_local $$4) - ) - (i32.store - (get_local $$buf_size) - (i32.const 0) - ) - (i32.store - (get_local $$wend) - (i32.const 0) - ) - (i32.store - (get_local $$wbase) - (i32.const 0) - ) - (i32.store - (get_local $$wpos) - (i32.const 0) - ) - (get_local $$$call21) ) ) + (call $_printf_core + (get_local $$f) + (get_local $$fmt) + (get_local $$ap2) + (get_local $$nl_arg) + (get_local $$nl_type) + ) ) - (call $_printf_core - (get_local $$f) - (get_local $$fmt) - (get_local $$ap2) - (get_local $$nl_arg) - (get_local $$nl_type) - ) - ) - ) - (set_local $$ret$1$ - (if + (i32.const -1) (i32.eq (i32.and (set_local $$7 @@ -1817,8 +1815,6 @@ ) (i32.const 0) ) - (get_local $$ret$1) - (i32.const -1) ) ) (i32.store @@ -2893,13 +2889,13 @@ ) ) ) - (if + (select + (get_local $$s$2) + (i32.const 0) (i32.ne (get_local $$n$addr$3) (i32.const 0) ) - (get_local $$s$2) - (i32.const 0) ) ) (func $___syscall_ret (param $$r i32) (result i32) @@ -3104,10 +3100,10 @@ (local $$a$3539$i i32) (local $$i$0$lcssa i32) (local $$p$2 i32) - (local $$t$0 i32) (local $sp i32) (local $$add$ptr358$i i32) (local $$arraydecay208$add$ptr213$i i32) + (local $$t$0 i32) (local $$fl$0284 i32) (local $$fl$4 i32) (local $$fl$6 i32) @@ -3136,13 +3132,11 @@ (local $$a$2 i32) (local $$a$5$lcssa$i i32) (local $$add$ptr671$i i32) - (local $$add165$i i32) (local $$call384 i32) (local $$fl$3 i32) (local $$i$0316 i32) (local $$i$1$lcssa$i i32) (local $$i$2299 i32) - (local $$incdec$ptr292$a$3573$i i32) (local $$j$2$i i32) (local $$mul$i$240 f64) (local $$p$addr$2$i i32) @@ -3161,13 +3155,13 @@ (local $$12 i32) (local $$149 i32) (local $$181 f64) + (local $$7 i32) (local $$a$0 i32) (local $$a$5521$i i32) (local $$a$8$i i32) + (local $$add165$i i32) (local $$add441 i32) (local $$add653$i i32) - (local $$and219 i32) - (local $$argpos$0 i32) (local $$arrayidx$i$236 i32) (local $$cond271$i i32) (local $$d$0545$i i32) @@ -3190,8 +3184,8 @@ (local $$s$addr$0$lcssa$i$229 i32) (local $$sub$ptr$rhs$cast345$i i32) (local $$w$0 i32) - (local $$w$2 i32) (local $$z$0$lcssa i32) + (local $$z$4$i i32) (local $$$396$i f64) (local $$$pr477$i i32) (local $$126 i32) @@ -3205,6 +3199,8 @@ (local $$a$1$lcssa$i i32) (local $$a$2$ph$i i32) (local $$add$i$239 i32) + (local $$and219 i32) + (local $$argpos$0 i32) (local $$arrayidx119 i32) (local $$arrayidx68 i32) (local $$cmp450$lcssa$i i32) @@ -3215,6 +3211,7 @@ (local $$fl$0310 i32) (local $$i$3296 i32) (local $$incdec$ptr122$i i32) + (local $$incdec$ptr292$a$3573$i i32) (local $$incdec$ptr639$i i32) (local $$incdec$ptr681$i i32) (local $$incdec$ptr725$i i32) @@ -3238,6 +3235,7 @@ (local $$sub$ptr$sub789$i i32) (local $$sub256$i i32) (local $$t$1 i32) + (local $$w$2 i32) (local $$ws$0317 i32) (local $$ws$1326 i32) (local $$y$addr$2$i f64) @@ -3251,8 +3249,6 @@ (local $$$p$inc468$i i32) (local $$$pr$i i32) (local $$$pre566$i i32) - (local $$$sub514$i i32) - (local $$$sub562$i i32) (local $$1 i32) (local $$10 i32) (local $$101 i32) @@ -3267,7 +3263,6 @@ (local $$255 i32) (local $$29 i32) (local $$49 i32) - (local $$7 i32) (local $$a$6$i i32) (local $$add$i i32) (local $$add$i$203 i32) @@ -3275,7 +3270,6 @@ (local $$add$ptr i32) (local $$add$ptr311$z$4$i i32) (local $$add$ptr340 i32) - (local $$add$ptr43$arrayidx31 i32) (local $$add275$i i32) (local $$add313$i i32) (local $$add395 i32) @@ -3290,7 +3284,6 @@ (local $$carry262$0535$i i32) (local $$cmp184 i32) (local $$cmp37 i32) - (local $$cmp38$i i32) (local $$cond233$i i32) (local $$conv174 i32) (local $$conv174$lcssa i32) @@ -3359,17 +3352,16 @@ (local $$sub$ptr$lhs$cast317 i32) (local $$sub$ptr$lhs$cast694$i i32) (local $$sub$ptr$sub172$i i32) - (local $$sub$ptr$sub433$p$5 i32) (local $$sub$ptr$sub650$pn$i i32) (local $$sub735$i i32) (local $$sub806$i i32) (local $$tobool357 i32) (local $$wc i32) (local $$y$addr$3$i f64) - (local $$z$4$i i32) (local $$z$7$ph$i i32) (local $$$ i32) - (local $$$l10n$0 i32) + (local $$$sub514$i i32) + (local $$$sub562$i i32) (local $$0 i32) (local $$102 i32) (local $$103 i32) @@ -3396,6 +3388,7 @@ (local $$193 i32) (local $$200 i32) (local $$201 i32) + (local $$210 i32) (local $$215 i32) (local $$216 i32) (local $$217 i32) @@ -3426,26 +3419,16 @@ (local $$92 i32) (local $$95 i32) (local $$add$ptr213$i i32) - (local $$add$ptr311$i i32) - (local $$add$ptr359 i32) - (local $$add$ptr43 i32) + (local $$add$ptr43$arrayidx31 i32) (local $$add$ptr442$i i32) - (local $$add$ptr442$z$3$i i32) - (local $$add$ptr65$i i32) - (local $$add$ptr742$i i32) - (local $$add154$i i32) - (local $$add163$i i32) (local $$add269 i32) - (local $$add269$p$0 i32) (local $$add322 i32) (local $$add355$i i32) (local $$add414$i i32) (local $$and12$i i32) - (local $$and214 i32) (local $$and249 i32) (local $$and282$i i32) (local $$and294 i32) - (local $$and309 i32) (local $$and483$i i32) (local $$and62$i i32) (local $$arrayidx251$i i32) @@ -3454,21 +3437,28 @@ (local $$big$i i32) (local $$buf i32) (local $$call411 i32) + (local $$cmp265$i i32) + (local $$cmp270 i32) (local $$cmp299$i i32) + (local $$cmp308$i i32) + (local $$cmp323 i32) (local $$cmp338$i i32) (local $$cmp374$i i32) + (local $$cmp38$i i32) + (local $$cmp434 i32) + (local $$cmp442 i32) + (local $$cmp443$i i32) + (local $$cmp515$i i32) + (local $$cmp528$i i32) + (local $$cmp563$i i32) + (local $$cmp577$i i32) (local $$cmp614$i i32) (local $$cmp94$i i32) (local $$cnt$1$lcssa i32) (local $$cond$i i32) (local $$cond100$i i32) - (local $$cond245 i32) (local $$cond304$i i32) - (local $$cond426 i32) - (local $$cond43$i i32) (local $$cond629$i i32) - (local $$cond732$i i32) - (local $$cond800$i i32) (local $$conv116$i i32) (local $$conv216$i i32) (local $$conv48 i32) @@ -3486,8 +3476,6 @@ (local $$incdec$ptr169271$lcssa414 i32) (local $$incdec$ptr246$i i32) (local $$incdec$ptr288$i i32) - (local $$incdec$ptr292$570$i i32) - (local $$incdec$ptr292$i i32) (local $$incdec$ptr383 i32) (local $$incdec$ptr410 i32) (local $$incdec$ptr423$i i32) @@ -3507,14 +3495,11 @@ (local $$lor$ext$i i32) (local $$mul220$i f64) (local $$mul328$i i32) - (local $$mul335$i i32) (local $$mul437$i i32) (local $$mul499$i i32) (local $$notrhs$i i32) (local $$or$cond192 i32) (local $$or$cond384 i32) - (local $$p$2$add322 i32) - (local $$p$3 i32) (local $$r$0$a$9$i i32) (local $$retval$0$i i32) (local $$s$1$i$lcssa i32) @@ -3524,7 +3509,7 @@ (local $$sub$ptr$sub153$i i32) (local $$sub$ptr$sub159$i i32) (local $$sub$ptr$sub175$i i32) - (local $$sub$ptr$sub363 i32) + (local $$sub$ptr$sub433$p$5 i32) (local $$sub164 i32) (local $$sub203$i i32) (local $$sub264$i i32) @@ -3535,14 +3520,13 @@ (local $$sub562$i i32) (local $$sub626$le$i i32) (local $$sub74$i i32) - (local $$sub97$i i32) (local $$tobool135$i i32) (local $$tobool341$i i32) + (local $$tobool349 i32) (local $$tobool37$i i32) (local $$tobool56$i i32) (local $$tobool781$i i32) (local $$y$addr$1$i f64) - (local $$z$1 i32) (local $$z$7$add$ptr742$i i32) (set_local $sp (i32.load @@ -3950,104 +3934,98 @@ (br $label$continue$L1) ) ) - (block $label$break$L25 + (set_local $$argpos$0 (if - (i32.eq - (i32.and - (set_local $$conv48$307 + (i32.lt_u + (set_local $$isdigittmp + (i32.add (i32.shr_s (i32.shl - (set_local $$7 - (if - (i32.lt_u - (set_local $$isdigittmp - (i32.add - (i32.shr_s - (i32.shl - (set_local $$5 - (i32.load8_s - (set_local $$arrayidx31 - (i32.add - (get_local $$incdec$ptr169276$lcssa) - (i32.const 1) - ) - ) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -48) - ) + (set_local $$5 + (i32.load8_s + (set_local $$arrayidx31 + (i32.add + (get_local $$incdec$ptr169276$lcssa) + (i32.const 1) ) - (i32.const 10) ) - (block - (set_local $$add$ptr43 - (i32.add + ) + ) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const -48) + ) + ) + (i32.const 10) + ) + (block + (set_local $$7 + (i32.load8_s + (set_local $$add$ptr43$arrayidx31 + (select + (i32.add + (get_local $$incdec$ptr169276$lcssa) + (i32.const 3) + ) + (get_local $$arrayidx31) + (set_local $$cmp37 + (i32.eq + (i32.shr_s + (i32.shl + (i32.load8_s offset=2 (get_local $$incdec$ptr169276$lcssa) - (i32.const 3) ) + (i32.const 24) ) - (set_local $$add$ptr43$arrayidx31 - (if - (set_local $$cmp37 - (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s offset=2 - (get_local $$incdec$ptr169276$lcssa) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (get_local $$add$ptr43) - (get_local $$arrayidx31) - ) - ) - (set_local $$$l10n$0 - (if - (get_local $$cmp37) - (i32.const 1) - (get_local $$l10n$0) - ) - ) - (set_local $$argpos$0 - (if - (get_local $$cmp37) - (get_local $$isdigittmp) - (i32.const -1) - ) - ) - (set_local $$l10n$1 - (get_local $$$l10n$0) - ) - (set_local $$storemerge - (get_local $$add$ptr43$arrayidx31) - ) - (i32.load8_s - (get_local $$add$ptr43$arrayidx31) - ) - ) - (block - (set_local $$argpos$0 - (i32.const -1) - ) - (set_local $$l10n$1 - (get_local $$l10n$0) - ) - (set_local $$storemerge - (get_local $$arrayidx31) - ) - (get_local $$5) + (i32.const 24) ) + (i32.const 36) ) ) + ) + ) + ) + ) + (set_local $$l10n$1 + (select + (i32.const 1) + (get_local $$l10n$0) + (get_local $$cmp37) + ) + ) + (set_local $$storemerge + (get_local $$add$ptr43$arrayidx31) + ) + (select + (get_local $$isdigittmp) + (i32.const -1) + (get_local $$cmp37) + ) + ) + (block + (set_local $$7 + (get_local $$5) + ) + (set_local $$l10n$1 + (get_local $$l10n$0) + ) + (set_local $$storemerge + (get_local $$arrayidx31) + ) + (i32.const -1) + ) + ) + ) + (block $label$break$L25 + (if + (i32.eq + (i32.and + (set_local $$conv48$307 + (i32.shr_s + (i32.shl + (get_local $$7) (i32.const 24) ) (i32.const 24) @@ -5097,27 +5075,15 @@ ) ) ) - (set_local $$and214 - (i32.and - (get_local $$conv207) - (i32.const -33) - ) - ) - (set_local $$t$0 - (if - (get_local $$or$cond192) - (get_local $$and214) - (get_local $$conv207) - ) - ) - (set_local $$and219 - (i32.and - (get_local $$fl$1) - (i32.const -65537) - ) - ) (set_local $$fl$1$and219 - (if + (select + (get_local $$fl$1) + (set_local $$and219 + (i32.and + (get_local $$fl$1) + (i32.const -65537) + ) + ) (i32.eq (i32.and (get_local $$fl$1) @@ -5125,8 +5091,6 @@ ) (i32.const 0) ) - (get_local $$fl$1) - (get_local $$and219) ) ) (block $label$break$L75 @@ -5156,7 +5120,16 @@ (block $switch-case$34 (br_table $switch-case$49 $switch-default$127 $switch-case$47 $switch-default$127 $switch-case$52 $switch-case$51 $switch-case$50 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$48 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$36 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$53 $switch-default$127 $switch-case$44 $switch-case$42 $switch-case$126 $switch-case$55 $switch-case$54 $switch-default$127 $switch-case$41 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$45 $switch-case$34 $switch-case$40 $switch-case$35 $switch-default$127 $switch-default$127 $switch-case$46 $switch-default$127 $switch-case$43 $switch-default$127 $switch-default$127 $switch-case$37 $switch-default$127 (i32.sub - (get_local $$t$0) + (set_local $$t$0 + (select + (i32.and + (get_local $$conv207) + (i32.const -33) + ) + (get_local $$conv207) + (get_local $$or$cond192) + ) + ) (i32.const 65) ) ) @@ -5371,16 +5344,6 @@ ) (br $switch$24) ) - (set_local $$cond245 - (if - (i32.gt_u - (get_local $$p$0) - (i32.const 8) - ) - (get_local $$p$0) - (i32.const 8) - ) - ) (set_local $$fl$3 (i32.or (get_local $$fl$1$and219) @@ -5388,7 +5351,14 @@ ) ) (set_local $$p$1 - (get_local $$cond245) + (select + (get_local $$p$0) + (i32.const 8) + (i32.gt_u + (get_local $$p$0) + (i32.const 8) + ) + ) ) (set_local $$t$1 (i32.const 120) @@ -5537,29 +5507,29 @@ (get_local $$s$addr$0$lcssa$i$229) ) (block - (set_local $$add269$p$0 - (if - (i32.lt_s - (get_local $$p$0) - (set_local $$add269 - (i32.add - (i32.sub - (get_local $$sub$ptr$lhs$cast317) - (get_local $$s$addr$0$lcssa$i$229) - ) - (i32.const 1) + (set_local $$cmp270 + (i32.lt_s + (get_local $$p$0) + (set_local $$add269 + (i32.add + (i32.sub + (get_local $$sub$ptr$lhs$cast317) + (get_local $$s$addr$0$lcssa$i$229) ) + (i32.const 1) ) ) - (get_local $$add269) - (get_local $$p$0) ) ) (set_local $$fl$4 (get_local $$fl$1$and219) ) (set_local $$p$2 - (get_local $$add269$p$0) + (select + (get_local $$add269) + (get_local $$p$0) + (get_local $$cmp270) + ) ) (set_local $$pl$1 (i32.const 0) @@ -5646,7 +5616,9 @@ ) (block (set_local $$$ - (if + (select + (i32.const 4091) + (i32.const 4093) (i32.eq (set_local $$and294 (i32.and @@ -5656,8 +5628,6 @@ ) (i32.const 0) ) - (i32.const 4091) - (i32.const 4093) ) ) (set_local $$149 @@ -5765,18 +5735,21 @@ ) (br $switch$24) ) - (set_local $$a$1 - (if - (i32.ne - (set_local $$169 - (i32.load - (get_local $$arg) - ) + (set_local $$tobool349 + (i32.ne + (set_local $$169 + (i32.load + (get_local $$arg) ) - (i32.const 0) ) + (i32.const 0) + ) + ) + (set_local $$a$1 + (select (get_local $$169) (i32.const 4101) + (get_local $$tobool349) ) ) (set_local $label @@ -5901,7 +5874,9 @@ ) (block (set_local $$prefix$0$i - (if + (select + (i32.const 4109) + (i32.const 4114) (i32.eq (set_local $$and12$i (i32.and @@ -5911,8 +5886,6 @@ ) (i32.const 0) ) - (i32.const 4109) - (i32.const 4114) ) ) (set_local $$y$addr$0$i @@ -6008,14 +5981,13 @@ (i32.const 97) ) (block - (set_local $$add$ptr65$i - (i32.add - (get_local $$prefix$0$i) - (i32.const 9) - ) - ) (set_local $$prefix$0$add$ptr65$i - (if + (select + (get_local $$prefix$0$i) + (i32.add + (get_local $$prefix$0$i) + (i32.const 9) + ) (i32.eq (set_local $$and62$i (i32.and @@ -6025,8 +5997,6 @@ ) (i32.const 0) ) - (get_local $$prefix$0$i) - (get_local $$add$ptr65$i) ) ) (set_local $$add67$i @@ -6139,21 +6109,18 @@ (i32.const 0) ) ) - (set_local $$sub97$i - (i32.sub - (i32.const 0) - (get_local $$198) - ) - ) (set_local $$200 (i32.shr_s (i32.shl (i32.lt_s (set_local $$cond100$i - (if - (get_local $$cmp94$i) - (get_local $$sub97$i) + (select + (i32.sub + (i32.const 0) + (get_local $$198) + ) (get_local $$198) + (get_local $$cmp94$i) ) ) (i32.const 0) @@ -6356,41 +6323,34 @@ ) ) ) - (set_local $$add154$i - (i32.sub - (i32.add - (get_local $$sub$ptr$sub153$i) - (get_local $$p$0) - ) - (get_local $$incdec$ptr115$i) - ) - ) - (set_local $$add163$i - (i32.add - (i32.sub - (get_local $$sub$ptr$sub159$i) - (get_local $$incdec$ptr115$i) - ) - (get_local $$$pre566$i) - ) - ) - (set_local $$add165$i - (i32.add - (set_local $$l$0$i - (if - (get_local $$or$cond384) - (get_local $$add154$i) - (get_local $$add163$i) - ) - ) - (get_local $$add67$i) - ) - ) (call $_pad (get_local $$f) (i32.const 32) (get_local $$w$1) - (get_local $$add165$i) + (set_local $$add165$i + (i32.add + (set_local $$l$0$i + (select + (i32.sub + (i32.add + (get_local $$sub$ptr$sub153$i) + (get_local $$p$0) + ) + (get_local $$incdec$ptr115$i) + ) + (i32.add + (i32.sub + (get_local $$sub$ptr$sub159$i) + (get_local $$incdec$ptr115$i) + ) + (get_local $$$pre566$i) + ) + (get_local $$or$cond384) + ) + ) + (get_local $$add67$i) + ) + ) (get_local $$fl$1$and219) ) (if @@ -6486,66 +6446,69 @@ ) ) (br $do-once$56 - (if + (select + (get_local $$w$1) + (get_local $$add165$i) (i32.lt_s (get_local $$add165$i) (get_local $$w$1) ) - (get_local $$w$1) - (get_local $$add165$i) ) ) ) ) (set_local $$$p$i - (if + (select + (i32.const 6) + (get_local $$p$0) (i32.lt_s (get_local $$p$0) (i32.const 0) ) - (i32.const 6) - (get_local $$p$0) ) ) - (set_local $$sub$ptr$rhs$cast345$i - (set_local $$arraydecay208$add$ptr213$i - (if - (i32.lt_s - (if - (get_local $$tobool56$i) - (block - (i32.store - (get_local $$e2$i) - (set_local $$sub203$i - (i32.add - (i32.load - (get_local $$e2$i) - ) - (i32.const -28) - ) - ) - ) - (set_local $$y$addr$3$i - (f64.mul - (get_local $$mul$i$240) - (f64.const 268435456) - ) - ) - (get_local $$sub203$i) - ) - (block - (set_local $$y$addr$3$i - (get_local $$mul$i$240) - ) + (set_local $$210 + (if + (get_local $$tobool56$i) + (block + (i32.store + (get_local $$e2$i) + (set_local $$sub203$i + (i32.add (i32.load (get_local $$e2$i) ) + (i32.const -28) ) ) - (i32.const 0) ) + (set_local $$y$addr$3$i + (f64.mul + (get_local $$mul$i$240) + (f64.const 268435456) + ) + ) + (get_local $$sub203$i) + ) + (block + (set_local $$y$addr$3$i + (get_local $$mul$i$240) + ) + (i32.load + (get_local $$e2$i) + ) + ) + ) + ) + (set_local $$sub$ptr$rhs$cast345$i + (set_local $$arraydecay208$add$ptr213$i + (select (get_local $$big$i) (get_local $$add$ptr213$i) + (i32.lt_s + (get_local $$210) + (i32.const 0) + ) ) ) ) @@ -6623,13 +6586,13 @@ ) (loop $while-out$68 $while-in$69 (set_local $$cond233$i - (if + (select + (i32.const 29) + (get_local $$211) (i32.gt_s (get_local $$211) (i32.const 29) ) - (i32.const 29) - (get_local $$211) ) ) (set_local $$a$2$ph$i @@ -6880,22 +6843,25 @@ (get_local $$z$1$lcssa$i) ) (loop $while-out$76 $while-in$77 - (set_local $$cond271$i - (if - (i32.gt_s - (set_local $$sub264$i - (i32.sub - (i32.const 0) - (get_local $$223) - ) + (set_local $$cmp265$i + (i32.gt_s + (set_local $$sub264$i + (i32.sub + (i32.const 0) + (get_local $$223) ) - (i32.const 9) ) (i32.const 9) + ) + ) + (set_local $$cond271$i + (select + (i32.const 9) (get_local $$sub264$i) + (get_local $$cmp265$i) ) ) - (set_local $$z$4$i + (set_local $$incdec$ptr292$a$3573$i (block $do-once$78 (if (i32.lt_u @@ -6978,22 +6944,19 @@ ) (br $while-in$81) ) - (set_local $$incdec$ptr292$i - (i32.add - (get_local $$a$3539$i) - (i32.const 4) - ) - ) (set_local $$incdec$ptr292$a$3$i - (if + (select + (i32.add + (get_local $$a$3539$i) + (i32.const 4) + ) + (get_local $$a$3539$i) (i32.eq (i32.load (get_local $$a$3539$i) ) (i32.const 0) ) - (get_local $$incdec$ptr292$i) - (get_local $$a$3539$i) ) ) (if @@ -7002,11 +6965,11 @@ (i32.const 0) ) (block - (set_local $$incdec$ptr292$a$3573$i - (get_local $$incdec$ptr292$a$3$i) + (set_local $$z$4$i + (get_local $$z$3538$i) ) (br $do-once$78 - (get_local $$z$3538$i) + (get_local $$incdec$ptr292$a$3$i) ) ) ) @@ -7014,67 +6977,64 @@ (get_local $$z$3538$i) (get_local $$mul286$i$lcssa) ) - (set_local $$incdec$ptr292$a$3573$i - (get_local $$incdec$ptr292$a$3$i) - ) - (i32.add - (get_local $$z$3538$i) - (i32.const 4) + (set_local $$z$4$i + (i32.add + (get_local $$z$3538$i) + (i32.const 4) + ) ) + (get_local $$incdec$ptr292$a$3$i) ) (block - (set_local $$incdec$ptr292$570$i + (set_local $$z$4$i + (get_local $$z$3538$i) + ) + (select (i32.add (get_local $$a$3539$i) (i32.const 4) ) - ) - (set_local $$incdec$ptr292$a$3573$i - (if - (i32.eq - (i32.load - (get_local $$a$3539$i) - ) - (i32.const 0) + (get_local $$a$3539$i) + (i32.eq + (i32.load + (get_local $$a$3539$i) ) - (get_local $$incdec$ptr292$570$i) - (get_local $$a$3539$i) + (i32.const 0) ) ) - (get_local $$z$3538$i) ) ) ) ) - (set_local $$add$ptr311$i - (i32.add - (set_local $$cond304$i - (if - (get_local $$cmp299$i) - (get_local $$arraydecay208$add$ptr213$i) - (get_local $$incdec$ptr292$a$3573$i) + (set_local $$cmp308$i + (i32.gt_s + (i32.shr_s + (i32.sub + (get_local $$z$4$i) + (set_local $$cond304$i + (select + (get_local $$arraydecay208$add$ptr213$i) + (get_local $$incdec$ptr292$a$3573$i) + (get_local $$cmp299$i) + ) + ) ) - ) - (i32.shl - (get_local $$add275$i) (i32.const 2) ) + (get_local $$add275$i) ) ) (set_local $$add$ptr311$z$4$i - (if - (i32.gt_s - (i32.shr_s - (i32.sub - (get_local $$z$4$i) - (get_local $$cond304$i) - ) + (select + (i32.add + (get_local $$cond304$i) + (i32.shl + (get_local $$add275$i) (i32.const 2) ) - (get_local $$add275$i) ) - (get_local $$add$ptr311$i) (get_local $$z$4$i) + (get_local $$cmp308$i) ) ) (i32.store @@ -7209,16 +7169,6 @@ ) ) ) - (set_local $$mul335$i - (if - (i32.ne - (get_local $$or$i$241) - (i32.const 102) - ) - (get_local $$e$1$i) - (i32.const 0) - ) - ) (set_local $$a$9$ph$i (if (i32.lt_s @@ -7226,7 +7176,14 @@ (i32.add (i32.sub (get_local $$$p$i) - (get_local $$mul335$i) + (select + (get_local $$e$1$i) + (i32.const 0) + (i32.ne + (get_local $$or$i$241) + (i32.const 102) + ) + ) ) (i32.shr_s (i32.shl @@ -7395,7 +7352,9 @@ ) (block (set_local $$$396$i - (if + (select + (f64.const 9007199254740992) + (f64.const 9007199254740994) (i32.eq (i32.and (i32.and @@ -7409,8 +7368,6 @@ ) (i32.const 0) ) - (f64.const 9007199254740992) - (f64.const 9007199254740994) ) ) (set_local $$small$0$i @@ -7428,7 +7385,9 @@ ) ) (f64.const 0.5) - (if + (select + (f64.const 1) + (f64.const 1.5) (i32.and (get_local $$cmp374$i) (i32.eq @@ -7436,8 +7395,6 @@ (get_local $$div384$i) ) ) - (f64.const 1) - (f64.const 1.5) ) ) ) @@ -7702,26 +7659,26 @@ ) ) ) - (set_local $$add$ptr442$z$3$i - (if - (i32.gt_u - (get_local $$z$3$lcssa$i) - (set_local $$add$ptr442$i - (i32.add - (get_local $$d$4$i) - (i32.const 4) - ) + (set_local $$cmp443$i + (i32.gt_u + (get_local $$z$3$lcssa$i) + (set_local $$add$ptr442$i + (i32.add + (get_local $$d$4$i) + (i32.const 4) ) ) - (get_local $$add$ptr442$i) - (get_local $$z$3$lcssa$i) ) ) (set_local $$e$5$ph$i (get_local $$e$4$i) ) (set_local $$z$7$ph$i - (get_local $$add$ptr442$z$3$i) + (select + (get_local $$add$ptr442$i) + (get_local $$z$3$lcssa$i) + (get_local $$cmp443$i) + ) ) (get_local $$a$8$i) ) @@ -7986,29 +7943,34 @@ (i32.const 102) ) (block - (set_local $$$sub514$i - (if - (i32.lt_s - (set_local $$sub514$i - (i32.sub - (get_local $$mul513$i) - (get_local $$j$2$i) - ) + (set_local $$cmp515$i + (i32.lt_s + (set_local $$sub514$i + (i32.sub + (get_local $$mul513$i) + (get_local $$j$2$i) ) - (i32.const 0) ) (i32.const 0) - (get_local $$sub514$i) ) ) - (set_local $$p$addr$3$i - (if - (i32.lt_s - (get_local $$p$addr$2$i) - (get_local $$$sub514$i) + (set_local $$cmp528$i + (i32.lt_s + (get_local $$p$addr$2$i) + (set_local $$$sub514$i + (select + (i32.const 0) + (get_local $$sub514$i) + (get_local $$cmp515$i) + ) ) + ) + ) + (set_local $$p$addr$3$i + (select (get_local $$p$addr$2$i) (get_local $$$sub514$i) + (get_local $$cmp528$i) ) ) (set_local $$t$addr$1$i @@ -8017,32 +7979,37 @@ (i32.const 0) ) (block - (set_local $$$sub562$i - (if - (i32.lt_s - (set_local $$sub562$i - (i32.sub - (i32.add - (get_local $$mul513$i) - (get_local $$e$5$ph$i) - ) - (get_local $$j$2$i) + (set_local $$cmp563$i + (i32.lt_s + (set_local $$sub562$i + (i32.sub + (i32.add + (get_local $$mul513$i) + (get_local $$e$5$ph$i) ) + (get_local $$j$2$i) ) - (i32.const 0) ) (i32.const 0) - (get_local $$sub562$i) ) ) - (set_local $$p$addr$3$i - (if - (i32.lt_s - (get_local $$p$addr$2$i) - (get_local $$$sub562$i) + (set_local $$cmp577$i + (i32.lt_s + (get_local $$p$addr$2$i) + (set_local $$$sub562$i + (select + (i32.const 0) + (get_local $$sub562$i) + (get_local $$cmp563$i) + ) ) + ) + ) + (set_local $$p$addr$3$i + (select (get_local $$p$addr$2$i) (get_local $$$sub562$i) + (get_local $$cmp577$i) ) ) (set_local $$t$addr$1$i @@ -8094,13 +8061,13 @@ ) (block (set_local $$sub$ptr$sub650$pn$i - (if + (select + (get_local $$e$5$ph$i) + (i32.const 0) (i32.gt_s (get_local $$e$5$ph$i) (i32.const 0) ) - (get_local $$e$5$ph$i) - (i32.const 0) ) ) (i32.const 0) @@ -8111,13 +8078,13 @@ (i32.shl (i32.lt_s (set_local $$cond629$i - (if + (select + (get_local $$sub626$le$i) + (get_local $$e$5$ph$i) (i32.lt_s (get_local $$e$5$ph$i) (i32.const 0) ) - (get_local $$sub626$le$i) - (get_local $$e$5$ph$i) ) ) (i32.const 0) @@ -8274,13 +8241,13 @@ (block (set_local $$d$5494$i (set_local $$r$0$a$9$i - (if + (select + (get_local $$arraydecay208$add$ptr213$i) + (get_local $$a$9$ph$i) (i32.gt_u (get_local $$a$9$ph$i) (get_local $$arraydecay208$add$ptr213$i) ) - (get_local $$arraydecay208$add$ptr213$i) - (get_local $$a$9$ph$i) ) ) ) @@ -8512,22 +8479,17 @@ ) (i32.const 0) ) - (block - (set_local $$cond732$i - (if - (i32.gt_s - (get_local $$p$addr$4489$i) - (i32.const 9) - ) - (i32.const 9) + (call $___fwritex + (get_local $$s715$0$lcssa$i) + (select + (i32.const 9) + (get_local $$p$addr$4489$i) + (i32.gt_s (get_local $$p$addr$4489$i) + (i32.const 9) ) ) - (call $___fwritex - (get_local $$s715$0$lcssa$i) - (get_local $$cond732$i) - (get_local $$f) - ) + (get_local $$f) ) ) (set_local $$sub735$i @@ -8586,17 +8548,14 @@ ) ) (block - (set_local $$add$ptr742$i - (i32.add - (get_local $$a$9$ph$i) - (i32.const 4) - ) - ) (set_local $$z$7$add$ptr742$i - (if - (get_local $$cmp450$lcssa$i) + (select (get_local $$z$7$i$lcssa) - (get_local $$add$ptr742$i) + (i32.add + (get_local $$a$9$ph$i) + (i32.const 4) + ) + (get_local $$cmp450$lcssa$i) ) ) (if @@ -8774,22 +8733,17 @@ ) (i32.const 0) ) - (block - (set_local $$cond800$i - (if - (i32.gt_s - (get_local $$p$addr$5501$i) - (get_local $$sub$ptr$sub789$i) - ) - (get_local $$sub$ptr$sub789$i) + (call $___fwritex + (get_local $$s753$2$i) + (select + (get_local $$sub$ptr$sub789$i) + (get_local $$p$addr$5501$i) + (i32.gt_s (get_local $$p$addr$5501$i) + (get_local $$sub$ptr$sub789$i) ) ) - (call $___fwritex - (get_local $$s753$2$i) - (get_local $$cond800$i) - (get_local $$f) - ) + (get_local $$f) ) ) (if @@ -8877,18 +8831,20 @@ (i32.const 8192) ) ) - (if + (select + (get_local $$w$1) + (get_local $$add653$i) (i32.lt_s (get_local $$add653$i) (get_local $$w$1) ) - (get_local $$w$1) - (get_local $$add653$i) ) ) (block (set_local $$cond$i - (if + (select + (i32.const 4127) + (i32.const 4131) (set_local $$tobool37$i (i32.ne (i32.and @@ -8898,41 +8854,35 @@ (i32.const 0) ) ) - (i32.const 4127) - (i32.const 4131) - ) - ) - (set_local $$cmp38$i - (i32.or - (f64.ne - (get_local $$y$addr$0$i) - (get_local $$y$addr$0$i) - ) - (f64.ne - (f64.const 0) - (f64.const 0) - ) - ) - ) - (set_local $$cond43$i - (if - (get_local $$tobool37$i) - (i32.const 4135) - (i32.const 4139) ) ) (set_local $$pl$1$i - (if - (get_local $$cmp38$i) + (select (i32.const 0) (get_local $$pl$0$i) + (set_local $$cmp38$i + (i32.or + (f64.ne + (get_local $$y$addr$0$i) + (get_local $$y$addr$0$i) + ) + (f64.ne + (f64.const 0) + (f64.const 0) + ) + ) + ) ) ) (set_local $$s35$0$i - (if - (get_local $$cmp38$i) - (get_local $$cond43$i) + (select + (select + (i32.const 4135) + (i32.const 4139) + (get_local $$tobool37$i) + ) (get_local $$cond$i) + (get_local $$cmp38$i) ) ) (call $_pad @@ -8994,13 +8944,13 @@ (i32.const 8192) ) ) - (if + (select + (get_local $$w$1) + (get_local $$add$i$239) (i32.lt_s (get_local $$add$i$239) (get_local $$w$1) ) - (get_local $$w$1) - (get_local $$add$i$239) ) ) ) @@ -9299,32 +9249,6 @@ (i32.const 0) ) ) - (set_local $$sub$ptr$sub363 - (i32.sub - (get_local $$call356) - (get_local $$a$1) - ) - ) - (set_local $$add$ptr359 - (i32.add - (get_local $$a$1) - (get_local $$p$0) - ) - ) - (set_local $$z$1 - (if - (get_local $$tobool357) - (get_local $$add$ptr359) - (get_local $$call356) - ) - ) - (set_local $$p$3 - (if - (get_local $$tobool357) - (get_local $$p$0) - (get_local $$sub$ptr$sub363) - ) - ) (set_local $$a$2 (get_local $$a$1) ) @@ -9332,7 +9256,14 @@ (get_local $$and219) ) (set_local $$p$5 - (get_local $$p$3) + (select + (get_local $$p$0) + (i32.sub + (get_local $$call356) + (get_local $$a$1) + ) + (get_local $$tobool357) + ) ) (set_local $$pl$2 (i32.const 0) @@ -9341,7 +9272,14 @@ (i32.const 4091) ) (set_local $$z$2 - (get_local $$z$1) + (select + (i32.add + (get_local $$a$1) + (get_local $$p$0) + ) + (get_local $$call356) + (get_local $$tobool357) + ) ) ) (if @@ -9612,16 +9550,6 @@ (i32.const 8192) ) ) - (set_local $$cond426 - (if - (i32.gt_s - (get_local $$w$1) - (get_local $$i$0$lcssa368) - ) - (get_local $$w$1) - (get_local $$i$0$lcssa368) - ) - ) (set_local $$cnt$0 (get_local $$cnt$1) ) @@ -9629,7 +9557,14 @@ (get_local $$incdec$ptr169$lcssa) ) (set_local $$l$0 - (get_local $$cond426) + (select + (get_local $$w$1) + (get_local $$i$0$lcssa368) + (i32.gt_s + (get_local $$w$1) + (get_local $$i$0$lcssa368) + ) + ) ) (set_local $$l10n$0 (get_local $$l10n$3) @@ -9646,20 +9581,17 @@ (set_local $label (i32.const 0) ) - (set_local $$and309 - (i32.and - (get_local $$fl$4) - (i32.const -65537) - ) - ) (set_local $$and309$fl$4 - (if + (select + (i32.and + (get_local $$fl$4) + (i32.const -65537) + ) + (get_local $$fl$4) (i32.gt_s (get_local $$p$2) (i32.const -1) ) - (get_local $$and309) - (get_local $$fl$4) ) ) (set_local $$a$2 @@ -9689,35 +9621,35 @@ ) ) (block - (set_local $$p$2$add322 - (if - (i32.gt_s - (get_local $$p$2) - (set_local $$add322 - (i32.add - (i32.xor - (i32.and - (get_local $$159) - (i32.const 1) - ) + (set_local $$cmp323 + (i32.gt_s + (get_local $$p$2) + (set_local $$add322 + (i32.add + (i32.xor + (i32.and + (get_local $$159) (i32.const 1) ) - (i32.sub - (get_local $$sub$ptr$lhs$cast317) - (get_local $$a$0) - ) + (i32.const 1) + ) + (i32.sub + (get_local $$sub$ptr$lhs$cast317) + (get_local $$a$0) ) ) ) - (get_local $$p$2) - (get_local $$add322) ) ) (set_local $$fl$6 (get_local $$and309$fl$4) ) (set_local $$p$5 - (get_local $$p$2$add322) + (select + (get_local $$p$2) + (get_local $$add322) + (get_local $$cmp323) + ) ) (set_local $$pl$2 (get_local $$pl$1) @@ -9752,40 +9684,44 @@ ) ) ) - (set_local $$sub$ptr$sub433$p$5 - (if - (i32.lt_s - (get_local $$p$5) - (set_local $$sub$ptr$sub433 - (i32.sub - (get_local $$z$2) - (get_local $$a$2) - ) + (set_local $$cmp434 + (i32.lt_s + (get_local $$p$5) + (set_local $$sub$ptr$sub433 + (i32.sub + (get_local $$z$2) + (get_local $$a$2) ) ) - (get_local $$sub$ptr$sub433) - (get_local $$p$5) ) ) - (set_local $$w$2 - (if - (i32.lt_s - (get_local $$w$1) - (set_local $$add441 - (i32.add - (get_local $$pl$2) - (get_local $$sub$ptr$sub433$p$5) + (set_local $$cmp442 + (i32.lt_s + (get_local $$w$1) + (set_local $$add441 + (i32.add + (get_local $$pl$2) + (set_local $$sub$ptr$sub433$p$5 + (select + (get_local $$sub$ptr$sub433) + (get_local $$p$5) + (get_local $$cmp434) + ) ) ) ) - (get_local $$add441) - (get_local $$w$1) ) ) (call $_pad (get_local $$f) (i32.const 32) - (get_local $$w$2) + (set_local $$w$2 + (select + (get_local $$add441) + (get_local $$w$1) + (get_local $$cmp442) + ) + ) (get_local $$add441) (get_local $$fl$6) ) @@ -10848,7 +10784,7 @@ (local $$1 i32) (local $$2 i32) (local $$3 i32) - (local $$cond i32) + (local $$cmp1 i32) (local $$sub5 i32) (set_local $sp (i32.load @@ -10894,25 +10830,25 @@ ) ) (block - (set_local $$cond - (if - (i32.gt_u - (set_local $$sub - (i32.sub - (get_local $$w) - (get_local $$l) - ) + (set_local $$cmp1 + (i32.gt_u + (set_local $$sub + (i32.sub + (get_local $$w) + (get_local $$l) ) - (i32.const 256) ) (i32.const 256) - (get_local $$sub) ) ) (call $_memset (get_local $$pad) (get_local $$c) - (get_local $$cond) + (select + (i32.const 256) + (get_local $$sub) + (get_local $$cmp1) + ) ) (set_local $$tobool$i$16 (i32.eq @@ -11088,7 +11024,6 @@ (local $$RP$1$i i32) (local $$RP$1$i$167 i32) (local $$RP$1$i$i i32) - (local $$add$ptr4$i$37$i i32) (local $$arrayidx$i$20$i i32) (local $$arrayidx103 i32) (local $$arrayidx196$i i32) @@ -11097,7 +11032,6 @@ (local $$br$2$ph$i i32) (local $$cond4$i i32) (local $$rsize$0$i i32) - (local $$shr i32) (local $$sub160 i32) (local $$sub18$i$i i32) (local $$v$3$i i32) @@ -11129,6 +11063,8 @@ (local $$T$0$i$lcssa i32) (local $$add$ptr$i i32) (local $$add$ptr227$i i32) + (local $$add$ptr4$i$26$i i32) + (local $$add$ptr4$i$37$i i32) (local $$add26$i$i i32) (local $$and80$i i32) (local $$arrayidx$i$i i32) @@ -11144,10 +11080,12 @@ (local $$rsize$0$i$152 i32) (local $$rsize$1$i i32) (local $$rsize$3$i i32) + (local $$shr i32) (local $$shr3 i32) (local $$sizebits$0$i i32) (local $$ssize$5$i i32) (local $$sub101$rsize$4$i i32) + (local $$sub5$i$27$i i32) (local $$sub91 i32) (local $$t$0$i i32) (local $$t$2$i i32) @@ -11182,7 +11120,6 @@ (local $$add$ptr$i$i$i$lcssa i32) (local $$add$ptr166 i32) (local $$add$ptr24$i$i i32) - (local $$add$ptr4$i$26$i i32) (local $$add$ptr4$i$i i32) (local $$add$ptr4$i$i$i i32) (local $$add$ptr95 i32) @@ -11203,9 +11140,8 @@ (local $$arrayidx66 i32) (local $$call132$i i32) (local $$child$i$i i32) - (local $$cond$i$25$i i32) - (local $$cond$i$i i32) - (local $$cond$i$i$i i32) + (local $$cmp102$i i32) + (local $$cmp32$i i32) (local $$fd68$pre$phi$i$iZ2D i32) (local $$head$i$17$i i32) (local $$p$0$i$i i32) @@ -11222,7 +11158,6 @@ (local $$sp$1107$i$lcssa i32) (local $$sub$i$138 i32) (local $$sub33$i i32) - (local $$sub5$i$27$i i32) (local $$sub5$i$i i32) (local $$sub5$i$i$i i32) (local $$v$0$i$153 i32) @@ -11243,7 +11178,6 @@ (local $$127 i32) (local $$128 i32) (local $$129 i32) - (local $$131 i32) (local $$132 i32) (local $$135 i32) (local $$137 i32) @@ -11262,7 +11196,6 @@ (local $$174 i32) (local $$175 i32) (local $$177 i32) - (local $$178 i32) (local $$180 i32) (local $$183 i32) (local $$185 i32) @@ -11272,7 +11205,6 @@ (local $$196 i32) (local $$197 i32) (local $$199 i32) - (local $$200 i32) (local $$202 i32) (local $$205 i32) (local $$207 i32) @@ -11304,7 +11236,6 @@ (local $$83 i32) (local $$84 i32) (local $$86 i32) - (local $$87 i32) (local $$89 i32) (local $$92 i32) (local $$97 i32) @@ -11317,7 +11248,6 @@ (local $$add$i$180 i32) (local $$add$i$i i32) (local $$add$ptr$i$i$i i32) - (local $$add$ptr15$i$i i32) (local $$add$ptr193 i32) (local $$add$ptr2$i$i i32) (local $$add$ptr262$i i32) @@ -11333,20 +11263,14 @@ (local $$add346$i i32) (local $$add83$i$i i32) (local $$add9$i i32) - (local $$and i32) (local $$and$i$143 i32) (local $$and12$i i32) (local $$and13$i i32) - (local $$and13$i$i i32) (local $$and17$i i32) (local $$and209$i$i i32) (local $$and264$i$i i32) (local $$and268$i$i i32) (local $$and273$i$i i32) - (local $$and3$i$24$i i32) - (local $$and3$i$35$i i32) - (local $$and3$i$i i32) - (local $$and3$i$i$i i32) (local $$and32$i i32) (local $$and331$i i32) (local $$and336$i i32) @@ -11356,7 +11280,6 @@ (local $$and53 i32) (local $$and57 i32) (local $$and6$i i32) - (local $$and6$i$i i32) (local $$and61 i32) (local $$and69$i$i i32) (local $$and73$i$i i32) @@ -11404,18 +11327,13 @@ (local $$cmp$i$2$i$i i32) (local $$cmp$i$23$i i32) (local $$cmp$i$34$i i32) - (local $$cmp102$i i32) - (local $$cmp32$i i32) + (local $$cmp45$i$155 i32) (local $$cmp49$i i32) (local $$cmp7$i$i i32) - (local $$cond$i i32) - (local $$cond$i$16$i i32) - (local $$cond$i$36$i i32) - (local $$cond$v$0$i i32) - (local $$cond115$i$i i32) - (local $$cond15$i$i i32) - (local $$cond315$i$i i32) - (local $$cond383$i i32) + (local $$cmp9$i$i i32) + (local $$cond$i$25$i i32) + (local $$cond$i$i i32) + (local $$cond$i$i$i i32) (local $$fd139$i i32) (local $$fd148$i$i i32) (local $$fd344$i$i i32) @@ -11487,19 +11405,13 @@ (local $$sub i32) (local $$sub$i$181 i32) (local $$sub$ptr$sub$i i32) + (local $$sub$ptr$sub$i$41$i i32) (local $$sub101$i i32) (local $$sub112$i i32) - (local $$sub113$i$i i32) - (local $$sub16$i$i i32) - (local $$sub172$i i32) (local $$sub190 i32) (local $$sub2$i i32) (local $$sub260$i i32) - (local $$sub30$i i32) (local $$sub31$i i32) - (local $$sub31$rsize$0$i i32) - (local $$sub313$i$i i32) - (local $$sub381$i i32) (local $$sub41$i i32) (local $$sub42 i32) (local $$sub44 i32) @@ -11516,30 +11428,6 @@ (i32.const 245) ) (block - (set_local $$and - (i32.and - (i32.add - (get_local $$bytes) - (i32.const 11) - ) - (i32.const -8) - ) - ) - (set_local $$shr - (i32.shr_u - (set_local $$cond - (if - (i32.lt_u - (get_local $$bytes) - (i32.const 11) - ) - (i32.const 16) - (get_local $$and) - ) - ) - (i32.const 3) - ) - ) (if (i32.ne (i32.and @@ -11550,7 +11438,27 @@ (i32.const 176) ) ) - (get_local $$shr) + (set_local $$shr + (i32.shr_u + (set_local $$cond + (select + (i32.const 16) + (i32.and + (i32.add + (get_local $$bytes) + (i32.const 11) + ) + (i32.const -8) + ) + (i32.lt_u + (get_local $$bytes) + (i32.const 11) + ) + ) + ) + (i32.const 3) + ) + ) ) ) (i32.const 3) @@ -12235,43 +12143,38 @@ (get_local $$22) ) ) - (set_local $$sub31$rsize$0$i - (if - (set_local $$cmp32$i - (i32.lt_u - (set_local $$sub31$i - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $$cond4$i) - ) - (i32.const -8) - ) - (get_local $$cond) + (set_local $$cmp32$i + (i32.lt_u + (set_local $$sub31$i + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $$cond4$i) ) + (i32.const -8) ) - (get_local $$rsize$0$i) + (get_local $$cond) ) ) - (get_local $$sub31$i) (get_local $$rsize$0$i) ) ) - (set_local $$cond$v$0$i - (if + (set_local $$rsize$0$i + (select + (get_local $$sub31$i) + (get_local $$rsize$0$i) (get_local $$cmp32$i) - (get_local $$cond4$i) - (get_local $$v$0$i) ) ) - (set_local $$rsize$0$i - (get_local $$sub31$rsize$0$i) - ) (set_local $$t$0$i (get_local $$cond4$i) ) (set_local $$v$0$i - (get_local $$cond$v$0$i) + (select + (get_local $$cond4$i) + (get_local $$v$0$i) + (get_local $$cmp32$i) + ) ) (br $while-in$7) ) @@ -13035,25 +12938,6 @@ ) ) (block - (set_local $$sub30$i - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$idx$0$i) - (i32.const 1) - ) - ) - ) - (set_local $$cond$i - (if - (i32.eq - (get_local $$idx$0$i) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub30$i) - ) - ) (set_local $$rsize$0$i$152 (get_local $$sub$i$138) ) @@ -13063,7 +12947,20 @@ (set_local $$sizebits$0$i (i32.shl (get_local $$and145) - (get_local $$cond$i) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$idx$0$i) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$idx$0$i) + (i32.const 31) + ) + ) ) ) (set_local $$t$0$i$151 @@ -13128,17 +13025,22 @@ ) ) ) + (set_local $$cmp45$i$155 + (i32.eq + (set_local $$54 + (i32.load offset=20 + (get_local $$t$0$i$151) + ) + ) + (i32.const 0) + ) + ) (set_local $$rst$1$i - (if + (select + (get_local $$rst$0$i) + (get_local $$54) (i32.or - (i32.eq - (set_local $$54 - (i32.load offset=20 - (get_local $$t$0$i$151) - ) - ) - (i32.const 0) - ) + (get_local $$cmp45$i$155) (i32.eq (get_local $$54) (set_local $$55 @@ -13160,8 +13062,6 @@ ) ) ) - (get_local $$rst$0$i) - (get_local $$54) ) ) (set_local $$sizebits$0$shl52$i @@ -13407,33 +13307,34 @@ (set_local $label (i32.const 0) ) - (set_local $$sub101$rsize$4$i - (if - (set_local $$cmp102$i - (i32.lt_u - (set_local $$sub101$i - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $$t$48$i) - ) - (i32.const -8) - ) - (get_local $$and145) + (set_local $$cmp102$i + (i32.lt_u + (set_local $$sub101$i + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $$t$48$i) ) + (i32.const -8) ) - (get_local $$rsize$49$i) + (get_local $$and145) ) ) + (get_local $$rsize$49$i) + ) + ) + (set_local $$sub101$rsize$4$i + (select (get_local $$sub101$i) (get_local $$rsize$49$i) + (get_local $$cmp102$i) ) ) (set_local $$t$4$v$4$i - (if - (get_local $$cmp102$i) + (select (get_local $$t$48$i) (get_local $$v$410$i) + (get_local $$cmp102$i) ) ) (if @@ -14249,38 +14150,29 @@ (br $do-once$29) ) ) - (set_local $$87 - (i32.load - (get_local $$arrayidx355$i) - ) - ) - (set_local $$sub381$i - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$I316$0$i) - (i32.const 1) - ) - ) - ) - (set_local $$cond383$i - (if - (i32.eq - (get_local $$I316$0$i) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub381$i) - ) - ) (set_local $$K373$0$i (i32.shl (get_local $$rsize$4$lcssa$i) - (get_local $$cond383$i) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$I316$0$i) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$I316$0$i) + (i32.const 31) + ) + ) ) ) (set_local $$T$0$i - (get_local $$87) + (i32.load + (get_local $$arrayidx355$i) + ) ) (loop $while-out$31 $while-in$32 (if @@ -15353,12 +15245,6 @@ ) (br $while-in$47) ) - (set_local $$sub172$i - (i32.add - (get_local $$tsize$795$i) - (i32.const -40) - ) - ) (set_local $$cmp$i$13$i (i32.eq (i32.and @@ -15373,28 +15259,24 @@ (i32.const 0) ) ) - (set_local $$and3$i$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$124) - ) - (i32.const 7) - ) - ) - (set_local $$cond$i$i - (if - (get_local $$cmp$i$13$i) - (i32.const 0) - (get_local $$and3$i$i) - ) - ) (i32.store (i32.const 200) (set_local $$add$ptr4$i$i (i32.add (get_local $$tbase$796$i) - (get_local $$cond$i$i) + (set_local $$cond$i$i + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$124) + ) + (i32.const 7) + ) + (get_local $$cmp$i$13$i) + ) + ) ) ) ) @@ -15402,7 +15284,10 @@ (i32.const 188) (set_local $$sub5$i$i (i32.sub - (get_local $$sub172$i) + (i32.add + (get_local $$tsize$795$i) + (i32.const -40) + ) (get_local $$cond$i$i) ) ) @@ -15523,11 +15408,6 @@ (get_local $$tsize$795$i) ) ) - (set_local $$131 - (i32.load - (i32.const 188) - ) - ) (set_local $$cmp$i$23$i (i32.eq (i32.and @@ -15542,42 +15422,42 @@ (i32.const 0) ) ) - (set_local $$and3$i$24$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$132) + (set_local $$add$ptr4$i$26$i + (i32.add + (get_local $$119) + (set_local $$cond$i$25$i + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$132) + ) + (i32.const 7) + ) + (get_local $$cmp$i$23$i) + ) ) - (i32.const 7) ) ) - (set_local $$cond$i$25$i - (if - (get_local $$cmp$i$23$i) - (i32.const 0) - (get_local $$and3$i$24$i) + (set_local $$sub5$i$27$i + (i32.add + (i32.sub + (get_local $$tsize$795$i) + (get_local $$cond$i$25$i) + ) + (i32.load + (i32.const 188) + ) ) ) (i32.store (i32.const 200) - (set_local $$add$ptr4$i$26$i - (i32.add - (get_local $$119) - (get_local $$cond$i$25$i) - ) - ) + (get_local $$add$ptr4$i$26$i) ) (i32.store (i32.const 188) - (set_local $$sub5$i$27$i - (i32.add - (i32.sub - (get_local $$tsize$795$i) - (get_local $$cond$i$25$i) - ) - (get_local $$131) - ) - ) + (get_local $$sub5$i$27$i) ) (i32.store offset=4 (get_local $$add$ptr4$i$26$i) @@ -15726,28 +15606,6 @@ (i32.const 0) ) ) - (set_local $$and3$i$35$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$140) - ) - (i32.const 7) - ) - ) - (set_local $$cond$i$36$i - (if - (get_local $$cmp$i$34$i) - (i32.const 0) - (get_local $$and3$i$35$i) - ) - ) - (set_local $$add$ptr4$i$37$i - (i32.add - (get_local $$tbase$796$i) - (get_local $$cond$i$36$i) - ) - ) (set_local $$cmp7$i$i (i32.eq (i32.and @@ -15762,20 +15620,40 @@ (i32.const 0) ) ) - (set_local $$and13$i$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$142) + (set_local $$sub$ptr$sub$i$41$i + (i32.sub + (set_local $$add$ptr16$i$i + (i32.add + (get_local $$add$ptr227$i) + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$142) + ) + (i32.const 7) + ) + (get_local $$cmp7$i$i) + ) + ) + ) + (set_local $$add$ptr4$i$37$i + (i32.add + (get_local $$tbase$796$i) + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$140) + ) + (i32.const 7) + ) + (get_local $$cmp$i$34$i) + ) + ) ) - (i32.const 7) - ) - ) - (set_local $$cond15$i$i - (if - (get_local $$cmp7$i$i) - (i32.const 0) - (get_local $$and13$i$i) ) ) (set_local $$add$ptr17$i$i @@ -15786,15 +15664,7 @@ ) (set_local $$sub18$i$i (i32.sub - (i32.sub - (set_local $$add$ptr16$i$i - (i32.add - (get_local $$add$ptr227$i) - (get_local $$cond15$i$i) - ) - ) - (get_local $$add$ptr4$i$37$i) - ) + (get_local $$sub$ptr$sub$i$41$i) (get_local $$nb$0) ) ) @@ -16740,38 +16610,29 @@ (br $do-once$52) ) ) - (set_local $$178 - (i32.load - (get_local $$arrayidx287$i$i) - ) - ) - (set_local $$sub313$i$i - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$I252$0$i$i) - (i32.const 1) - ) - ) - ) - (set_local $$cond315$i$i - (if - (i32.eq - (get_local $$I252$0$i$i) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub313$i$i) - ) - ) (set_local $$K305$0$i$i (i32.shl (get_local $$qsize$0$i$i) - (get_local $$cond315$i$i) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$I252$0$i$i) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$I252$0$i$i) + (i32.const 31) + ) + ) ) ) (set_local $$T$0$i$58$i - (get_local $$178) + (i32.load + (get_local $$arrayidx287$i$i) + ) ) (loop $while-out$71 $while-in$72 (if @@ -17004,59 +16865,44 @@ (i32.const 0) ) ) - (set_local $$and6$i$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$188) + (set_local $$cmp9$i$i + (i32.lt_u + (set_local $$add$ptr7$i$i + (i32.add + (get_local $$add$ptr2$i$i) + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$188) + ) + (i32.const 7) + ) + (get_local $$cmp$i$15$i) + ) + ) + ) + (set_local $$add$ptr8$i122$i + (i32.add + (get_local $$119) + (i32.const 16) + ) ) - (i32.const 7) - ) - ) - (set_local $$cond$i$16$i - (if - (get_local $$cmp$i$15$i) - (i32.const 0) - (get_local $$and6$i$i) ) ) (set_local $$add$ptr14$i$i (i32.add (set_local $$cond13$i$i - (if - (i32.lt_u - (set_local $$add$ptr7$i$i - (i32.add - (get_local $$add$ptr2$i$i) - (get_local $$cond$i$16$i) - ) - ) - (set_local $$add$ptr8$i122$i - (i32.add - (get_local $$119) - (i32.const 16) - ) - ) - ) + (select (get_local $$119) (get_local $$add$ptr7$i$i) + (get_local $$cmp9$i$i) ) ) (i32.const 8) ) ) - (set_local $$add$ptr15$i$i - (i32.add - (get_local $$cond13$i$i) - (i32.const 24) - ) - ) - (set_local $$sub16$i$i - (i32.add - (get_local $$tsize$795$i) - (i32.const -40) - ) - ) (set_local $$cmp$i$2$i$i (i32.eq (i32.and @@ -17071,28 +16917,24 @@ (i32.const 0) ) ) - (set_local $$and3$i$i$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$190) - ) - (i32.const 7) - ) - ) - (set_local $$cond$i$i$i - (if - (get_local $$cmp$i$2$i$i) - (i32.const 0) - (get_local $$and3$i$i$i) - ) - ) (i32.store (i32.const 200) (set_local $$add$ptr4$i$i$i (i32.add (get_local $$tbase$796$i) - (get_local $$cond$i$i$i) + (set_local $$cond$i$i$i + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$190) + ) + (i32.const 7) + ) + (get_local $$cmp$i$2$i$i) + ) + ) ) ) ) @@ -17100,7 +16942,10 @@ (i32.const 188) (set_local $$sub5$i$i$i (i32.sub - (get_local $$sub16$i$i) + (i32.add + (get_local $$tsize$795$i) + (i32.const -40) + ) (get_local $$cond$i$i$i) ) ) @@ -17175,7 +17020,10 @@ (get_local $$add$ptr14$i$i) ) (set_local $$p$0$i$i - (get_local $$add$ptr15$i$i) + (i32.add + (get_local $$cond13$i$i) + (i32.const 24) + ) ) (loop $while-out$75 $while-in$76 (i32.store @@ -17507,38 +17355,29 @@ (br $do-once$44) ) ) - (set_local $$200 - (i32.load - (get_local $$arrayidx91$i$i) - ) - ) - (set_local $$sub113$i$i - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$I57$0$i$i) - (i32.const 1) - ) - ) - ) - (set_local $$cond115$i$i - (if - (i32.eq - (get_local $$I57$0$i$i) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub113$i$i) - ) - ) (set_local $$K105$0$i$i (i32.shl (get_local $$sub$ptr$sub$i$i) - (get_local $$cond115$i$i) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$I57$0$i$i) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$I57$0$i$i) + (i32.const 31) + ) + ) ) ) (set_local $$T$0$i$i - (get_local $$200) + (i32.load + (get_local $$arrayidx91$i$i) + ) ) (loop $while-out$77 $while-in$78 (if @@ -17841,7 +17680,6 @@ (local $$63 i32) (local $$64 i32) (local $$66 i32) - (local $$67 i32) (local $$69 i32) (local $$72 i32) (local $$R$1$lcssa i32) @@ -17871,7 +17709,6 @@ (local $$child171 i32) (local $$child443 i32) (local $$cmp$i i32) - (local $$cond i32) (local $$dec i32) (local $$fd311 i32) (local $$fd347 i32) @@ -17888,7 +17725,6 @@ (local $$shl573 i32) (local $$shl600 i32) (local $$sp$0$i i32) - (local $$sub589 i32) (i32.load (i32.const 8) ) @@ -19591,38 +19427,29 @@ ) ) (block - (set_local $$67 - (i32.load - (get_local $$arrayidx567) - ) - ) - (set_local $$sub589 - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$I534$0) - (i32.const 1) - ) - ) - ) - (set_local $$cond - (if - (i32.eq - (get_local $$I534$0) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub589) - ) - ) (set_local $$K583$0 (i32.shl (get_local $$psize$2) - (get_local $$cond) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$I534$0) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$I534$0) + (i32.const 31) + ) + ) ) ) (set_local $$T$0 - (get_local $$67) + (i32.load + (get_local $$arrayidx567) + ) ) (loop $while-out$18 $while-in$19 (if @@ -20317,13 +20144,13 @@ ) (i32.store (i32.const 168) - (if + (select + (i32.const -1) + (i32.const 0) (i32.lt_s (get_local $high) (i32.const 0) ) - (i32.const -1) - (i32.const 0) ) ) (i32.shr_s @@ -20434,106 +20261,59 @@ (local $$2$1 i32) (local $$7$0 i32) (local $$7$1 i32) - (set_local $$1$0 - (i32.or - (i32.shr_s - (get_local $$a$1) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$1$1 - (i32.or - (i32.shr_s - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$2$0 - (i32.or - (i32.shr_s - (get_local $$b$1) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$2$1 - (i32.or - (i32.shr_s - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) (call $_i64Subtract (i32.xor (call $___udivmoddi4 (call $_i64Subtract (i32.xor - (get_local $$1$0) + (set_local $$1$0 + (i32.or + (i32.shr_s + (get_local $$a$1) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$a$0) ) (i32.xor - (get_local $$1$1) + (set_local $$1$1 + (i32.or + (i32.shr_s + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$a$1) ) (get_local $$1$0) @@ -20544,11 +20324,54 @@ ) (call $_i64Subtract (i32.xor - (get_local $$2$0) + (set_local $$2$0 + (i32.or + (i32.shr_s + (get_local $$b$1) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$b$0) ) (i32.xor - (get_local $$2$1) + (set_local $$2$1 + (i32.or + (i32.shr_s + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$b$1) ) (get_local $$2$0) @@ -20585,9 +20408,9 @@ (local $$1$0 i32) (local $$1$1 i32) (local $$rem i32) + (local $__stackBase__ i32) (local $$2$0 i32) (local $$2$1 i32) - (local $__stackBase__ i32) (local $$10$0 i32) (local $$10$1 i32) (set_local $__stackBase__ @@ -20604,107 +20427,57 @@ (i32.const 16) ) ) - (set_local $$rem - (get_local $__stackBase__) - ) - (set_local $$1$0 - (i32.or - (i32.shr_s - (get_local $$a$1) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$1$1 - (i32.or - (i32.shr_s - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$2$0 - (i32.or - (i32.shr_s - (get_local $$b$1) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$2$1 - (i32.or - (i32.shr_s - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) (call $___udivmoddi4 (call $_i64Subtract (i32.xor - (get_local $$1$0) + (set_local $$1$0 + (i32.or + (i32.shr_s + (get_local $$a$1) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$a$0) ) (i32.xor - (get_local $$1$1) + (set_local $$1$1 + (i32.or + (i32.shr_s + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$a$1) ) (get_local $$1$0) @@ -20715,11 +20488,54 @@ ) (call $_i64Subtract (i32.xor - (get_local $$2$0) + (set_local $$2$0 + (i32.or + (i32.shr_s + (get_local $$b$1) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$b$0) ) (i32.xor - (get_local $$2$1) + (set_local $$2$1 + (i32.or + (i32.shr_s + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$b$1) ) (get_local $$2$0) @@ -20728,7 +20544,9 @@ (i32.load (i32.const 168) ) - (get_local $$rem) + (set_local $$rem + (get_local $__stackBase__) + ) ) (set_local $$10$0 (call $_i64Subtract @@ -21756,13 +21574,13 @@ (i32.const 31) ) (i32.shl - (if + (select + (i32.const -1) + (i32.const 0) (i32.lt_s (get_local $$150$1) (i32.const 0) ) - (i32.const -1) - (i32.const 0) ) (i32.const 1) ) @@ -21782,24 +21600,24 @@ (i32.and (i32.or (i32.shr_s - (if + (select + (i32.const -1) + (i32.const 0) (i32.lt_s (get_local $$150$1) (i32.const 0) ) - (i32.const -1) - (i32.const 0) ) (i32.const 31) ) (i32.shl - (if + (select + (i32.const -1) + (i32.const 0) (i32.lt_s (get_local $$150$1) (i32.const 0) ) - (i32.const -1) - (i32.const 0) ) (i32.const 1) ) diff --git a/test/emcc_hello_world.fromasm.imprecise b/test/emcc_hello_world.fromasm.imprecise index 7f0e4caba..c5d341988 100644 --- a/test/emcc_hello_world.fromasm.imprecise +++ b/test/emcc_hello_world.fromasm.imprecise @@ -1524,7 +1524,6 @@ (local $$7 i32) (local $$and i32) (local $$cond i32) - (local $$ret$1 i32) (local $$ret$1$ i32) (local $$retval$0 i32) (local $$wbase i32) @@ -1665,145 +1664,144 @@ ) ) ) - (set_local $$ret$1 - (if - (i32.eq - (i32.load - (set_local $$buf_size - (i32.add - (get_local $$f) - (i32.const 48) - ) - ) - ) - (i32.const 0) - ) - (block - (set_local $$4 + (set_local $$ret$1$ + (select + (if + (i32.eq (i32.load - (set_local $$buf + (set_local $$buf_size (i32.add (get_local $$f) - (i32.const 44) + (i32.const 48) ) ) ) + (i32.const 0) ) - (i32.store - (get_local $$buf) - (get_local $$internal_buf) - ) - (i32.store - (set_local $$wbase - (i32.add - (get_local $$f) - (i32.const 28) + (block + (set_local $$4 + (i32.load + (set_local $$buf + (i32.add + (get_local $$f) + (i32.const 44) + ) + ) ) ) - (get_local $$internal_buf) - ) - (i32.store - (set_local $$wpos - (i32.add - (get_local $$f) - (i32.const 20) - ) + (i32.store + (get_local $$buf) + (get_local $$internal_buf) ) - (get_local $$internal_buf) - ) - (i32.store - (get_local $$buf_size) - (i32.const 80) - ) - (i32.store - (set_local $$wend - (i32.add - (get_local $$f) - (i32.const 16) + (i32.store + (set_local $$wbase + (i32.add + (get_local $$f) + (i32.const 28) + ) ) - ) - (i32.add (get_local $$internal_buf) - (i32.const 80) ) - ) - (set_local $$call21 - (call $_printf_core - (get_local $$f) - (get_local $$fmt) - (get_local $$ap2) - (get_local $$nl_arg) - (get_local $$nl_type) + (i32.store + (set_local $$wpos + (i32.add + (get_local $$f) + (i32.const 20) + ) + ) + (get_local $$internal_buf) ) - ) - (if - (i32.eq - (get_local $$4) - (i32.const 0) + (i32.store + (get_local $$buf_size) + (i32.const 80) ) - (get_local $$call21) - (block - (call_indirect $FUNCSIG$iiii + (i32.store + (set_local $$wend (i32.add - (i32.and - (i32.load offset=36 - (get_local $$f) - ) - (i32.const 7) - ) - (i32.const 2) + (get_local $$f) + (i32.const 16) ) + ) + (i32.add + (get_local $$internal_buf) + (i32.const 80) + ) + ) + (set_local $$call21 + (call $_printf_core (get_local $$f) - (i32.const 0) + (get_local $$fmt) + (get_local $$ap2) + (get_local $$nl_arg) + (get_local $$nl_type) + ) + ) + (if + (i32.eq + (get_local $$4) (i32.const 0) ) - (set_local $$$call21 - (if - (i32.eq - (i32.load - (get_local $$wpos) + (get_local $$call21) + (block + (call_indirect $FUNCSIG$iiii + (i32.add + (i32.and + (i32.load offset=36 + (get_local $$f) + ) + (i32.const 7) ) - (i32.const 0) + (i32.const 2) ) - (i32.const -1) - (get_local $$call21) + (get_local $$f) + (i32.const 0) + (i32.const 0) ) + (set_local $$$call21 + (select + (i32.const -1) + (get_local $$call21) + (i32.eq + (i32.load + (get_local $$wpos) + ) + (i32.const 0) + ) + ) + ) + (i32.store + (get_local $$buf) + (get_local $$4) + ) + (i32.store + (get_local $$buf_size) + (i32.const 0) + ) + (i32.store + (get_local $$wend) + (i32.const 0) + ) + (i32.store + (get_local $$wbase) + (i32.const 0) + ) + (i32.store + (get_local $$wpos) + (i32.const 0) + ) + (get_local $$$call21) ) - (i32.store - (get_local $$buf) - (get_local $$4) - ) - (i32.store - (get_local $$buf_size) - (i32.const 0) - ) - (i32.store - (get_local $$wend) - (i32.const 0) - ) - (i32.store - (get_local $$wbase) - (i32.const 0) - ) - (i32.store - (get_local $$wpos) - (i32.const 0) - ) - (get_local $$$call21) ) ) + (call $_printf_core + (get_local $$f) + (get_local $$fmt) + (get_local $$ap2) + (get_local $$nl_arg) + (get_local $$nl_type) + ) ) - (call $_printf_core - (get_local $$f) - (get_local $$fmt) - (get_local $$ap2) - (get_local $$nl_arg) - (get_local $$nl_type) - ) - ) - ) - (set_local $$ret$1$ - (if + (i32.const -1) (i32.eq (i32.and (set_local $$7 @@ -1815,8 +1813,6 @@ ) (i32.const 0) ) - (get_local $$ret$1) - (i32.const -1) ) ) (i32.store @@ -2891,13 +2887,13 @@ ) ) ) - (if + (select + (get_local $$s$2) + (i32.const 0) (i32.ne (get_local $$n$addr$3) (i32.const 0) ) - (get_local $$s$2) - (i32.const 0) ) ) (func $___syscall_ret (param $$r i32) (result i32) @@ -3102,10 +3098,10 @@ (local $$a$3539$i i32) (local $$i$0$lcssa i32) (local $$p$2 i32) - (local $$t$0 i32) (local $sp i32) (local $$add$ptr358$i i32) (local $$arraydecay208$add$ptr213$i i32) + (local $$t$0 i32) (local $$fl$0284 i32) (local $$fl$4 i32) (local $$fl$6 i32) @@ -3134,13 +3130,11 @@ (local $$a$2 i32) (local $$a$5$lcssa$i i32) (local $$add$ptr671$i i32) - (local $$add165$i i32) (local $$call384 i32) (local $$fl$3 i32) (local $$i$0316 i32) (local $$i$1$lcssa$i i32) (local $$i$2299 i32) - (local $$incdec$ptr292$a$3573$i i32) (local $$j$2$i i32) (local $$mul$i$240 f64) (local $$p$addr$2$i i32) @@ -3159,13 +3153,13 @@ (local $$12 i32) (local $$149 i32) (local $$181 f64) + (local $$7 i32) (local $$a$0 i32) (local $$a$5521$i i32) (local $$a$8$i i32) + (local $$add165$i i32) (local $$add441 i32) (local $$add653$i i32) - (local $$and219 i32) - (local $$argpos$0 i32) (local $$arrayidx$i$236 i32) (local $$cond271$i i32) (local $$d$0545$i i32) @@ -3188,8 +3182,8 @@ (local $$s$addr$0$lcssa$i$229 i32) (local $$sub$ptr$rhs$cast345$i i32) (local $$w$0 i32) - (local $$w$2 i32) (local $$z$0$lcssa i32) + (local $$z$4$i i32) (local $$$396$i f64) (local $$$pr477$i i32) (local $$126 i32) @@ -3203,6 +3197,8 @@ (local $$a$1$lcssa$i i32) (local $$a$2$ph$i i32) (local $$add$i$239 i32) + (local $$and219 i32) + (local $$argpos$0 i32) (local $$arrayidx119 i32) (local $$arrayidx68 i32) (local $$cmp450$lcssa$i i32) @@ -3213,6 +3209,7 @@ (local $$fl$0310 i32) (local $$i$3296 i32) (local $$incdec$ptr122$i i32) + (local $$incdec$ptr292$a$3573$i i32) (local $$incdec$ptr639$i i32) (local $$incdec$ptr681$i i32) (local $$incdec$ptr725$i i32) @@ -3236,6 +3233,7 @@ (local $$sub$ptr$sub789$i i32) (local $$sub256$i i32) (local $$t$1 i32) + (local $$w$2 i32) (local $$ws$0317 i32) (local $$ws$1326 i32) (local $$y$addr$2$i f64) @@ -3249,8 +3247,6 @@ (local $$$p$inc468$i i32) (local $$$pr$i i32) (local $$$pre566$i i32) - (local $$$sub514$i i32) - (local $$$sub562$i i32) (local $$1 i32) (local $$10 i32) (local $$101 i32) @@ -3265,7 +3261,6 @@ (local $$255 i32) (local $$29 i32) (local $$49 i32) - (local $$7 i32) (local $$a$6$i i32) (local $$add$i i32) (local $$add$i$203 i32) @@ -3273,7 +3268,6 @@ (local $$add$ptr i32) (local $$add$ptr311$z$4$i i32) (local $$add$ptr340 i32) - (local $$add$ptr43$arrayidx31 i32) (local $$add275$i i32) (local $$add313$i i32) (local $$add395 i32) @@ -3288,7 +3282,6 @@ (local $$carry262$0535$i i32) (local $$cmp184 i32) (local $$cmp37 i32) - (local $$cmp38$i i32) (local $$cond233$i i32) (local $$conv174 i32) (local $$conv174$lcssa i32) @@ -3357,17 +3350,16 @@ (local $$sub$ptr$lhs$cast317 i32) (local $$sub$ptr$lhs$cast694$i i32) (local $$sub$ptr$sub172$i i32) - (local $$sub$ptr$sub433$p$5 i32) (local $$sub$ptr$sub650$pn$i i32) (local $$sub735$i i32) (local $$sub806$i i32) (local $$tobool357 i32) (local $$wc i32) (local $$y$addr$3$i f64) - (local $$z$4$i i32) (local $$z$7$ph$i i32) (local $$$ i32) - (local $$$l10n$0 i32) + (local $$$sub514$i i32) + (local $$$sub562$i i32) (local $$0 i32) (local $$102 i32) (local $$103 i32) @@ -3394,6 +3386,7 @@ (local $$193 i32) (local $$200 i32) (local $$201 i32) + (local $$210 i32) (local $$215 i32) (local $$216 i32) (local $$217 i32) @@ -3424,26 +3417,16 @@ (local $$92 i32) (local $$95 i32) (local $$add$ptr213$i i32) - (local $$add$ptr311$i i32) - (local $$add$ptr359 i32) - (local $$add$ptr43 i32) + (local $$add$ptr43$arrayidx31 i32) (local $$add$ptr442$i i32) - (local $$add$ptr442$z$3$i i32) - (local $$add$ptr65$i i32) - (local $$add$ptr742$i i32) - (local $$add154$i i32) - (local $$add163$i i32) (local $$add269 i32) - (local $$add269$p$0 i32) (local $$add322 i32) (local $$add355$i i32) (local $$add414$i i32) (local $$and12$i i32) - (local $$and214 i32) (local $$and249 i32) (local $$and282$i i32) (local $$and294 i32) - (local $$and309 i32) (local $$and483$i i32) (local $$and62$i i32) (local $$arrayidx251$i i32) @@ -3452,21 +3435,28 @@ (local $$big$i i32) (local $$buf i32) (local $$call411 i32) + (local $$cmp265$i i32) + (local $$cmp270 i32) (local $$cmp299$i i32) + (local $$cmp308$i i32) + (local $$cmp323 i32) (local $$cmp338$i i32) (local $$cmp374$i i32) + (local $$cmp38$i i32) + (local $$cmp434 i32) + (local $$cmp442 i32) + (local $$cmp443$i i32) + (local $$cmp515$i i32) + (local $$cmp528$i i32) + (local $$cmp563$i i32) + (local $$cmp577$i i32) (local $$cmp614$i i32) (local $$cmp94$i i32) (local $$cnt$1$lcssa i32) (local $$cond$i i32) (local $$cond100$i i32) - (local $$cond245 i32) (local $$cond304$i i32) - (local $$cond426 i32) - (local $$cond43$i i32) (local $$cond629$i i32) - (local $$cond732$i i32) - (local $$cond800$i i32) (local $$conv116$i i32) (local $$conv216$i i32) (local $$conv48 i32) @@ -3484,8 +3474,6 @@ (local $$incdec$ptr169271$lcssa414 i32) (local $$incdec$ptr246$i i32) (local $$incdec$ptr288$i i32) - (local $$incdec$ptr292$570$i i32) - (local $$incdec$ptr292$i i32) (local $$incdec$ptr383 i32) (local $$incdec$ptr410 i32) (local $$incdec$ptr423$i i32) @@ -3505,14 +3493,11 @@ (local $$lor$ext$i i32) (local $$mul220$i f64) (local $$mul328$i i32) - (local $$mul335$i i32) (local $$mul437$i i32) (local $$mul499$i i32) (local $$notrhs$i i32) (local $$or$cond192 i32) (local $$or$cond384 i32) - (local $$p$2$add322 i32) - (local $$p$3 i32) (local $$r$0$a$9$i i32) (local $$retval$0$i i32) (local $$s$1$i$lcssa i32) @@ -3522,7 +3507,7 @@ (local $$sub$ptr$sub153$i i32) (local $$sub$ptr$sub159$i i32) (local $$sub$ptr$sub175$i i32) - (local $$sub$ptr$sub363 i32) + (local $$sub$ptr$sub433$p$5 i32) (local $$sub164 i32) (local $$sub203$i i32) (local $$sub264$i i32) @@ -3533,14 +3518,13 @@ (local $$sub562$i i32) (local $$sub626$le$i i32) (local $$sub74$i i32) - (local $$sub97$i i32) (local $$tobool135$i i32) (local $$tobool341$i i32) + (local $$tobool349 i32) (local $$tobool37$i i32) (local $$tobool56$i i32) (local $$tobool781$i i32) (local $$y$addr$1$i f64) - (local $$z$1 i32) (local $$z$7$add$ptr742$i i32) (set_local $sp (i32.load @@ -3948,104 +3932,98 @@ (br $label$continue$L1) ) ) - (block $label$break$L25 + (set_local $$argpos$0 (if - (i32.eq - (i32.and - (set_local $$conv48$307 + (i32.lt_u + (set_local $$isdigittmp + (i32.add (i32.shr_s (i32.shl - (set_local $$7 - (if - (i32.lt_u - (set_local $$isdigittmp - (i32.add - (i32.shr_s - (i32.shl - (set_local $$5 - (i32.load8_s - (set_local $$arrayidx31 - (i32.add - (get_local $$incdec$ptr169276$lcssa) - (i32.const 1) - ) - ) - ) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const -48) - ) + (set_local $$5 + (i32.load8_s + (set_local $$arrayidx31 + (i32.add + (get_local $$incdec$ptr169276$lcssa) + (i32.const 1) ) - (i32.const 10) ) - (block - (set_local $$add$ptr43 - (i32.add + ) + ) + (i32.const 24) + ) + (i32.const 24) + ) + (i32.const -48) + ) + ) + (i32.const 10) + ) + (block + (set_local $$7 + (i32.load8_s + (set_local $$add$ptr43$arrayidx31 + (select + (i32.add + (get_local $$incdec$ptr169276$lcssa) + (i32.const 3) + ) + (get_local $$arrayidx31) + (set_local $$cmp37 + (i32.eq + (i32.shr_s + (i32.shl + (i32.load8_s offset=2 (get_local $$incdec$ptr169276$lcssa) - (i32.const 3) ) + (i32.const 24) ) - (set_local $$add$ptr43$arrayidx31 - (if - (set_local $$cmp37 - (i32.eq - (i32.shr_s - (i32.shl - (i32.load8_s offset=2 - (get_local $$incdec$ptr169276$lcssa) - ) - (i32.const 24) - ) - (i32.const 24) - ) - (i32.const 36) - ) - ) - (get_local $$add$ptr43) - (get_local $$arrayidx31) - ) - ) - (set_local $$$l10n$0 - (if - (get_local $$cmp37) - (i32.const 1) - (get_local $$l10n$0) - ) - ) - (set_local $$argpos$0 - (if - (get_local $$cmp37) - (get_local $$isdigittmp) - (i32.const -1) - ) - ) - (set_local $$l10n$1 - (get_local $$$l10n$0) - ) - (set_local $$storemerge - (get_local $$add$ptr43$arrayidx31) - ) - (i32.load8_s - (get_local $$add$ptr43$arrayidx31) - ) - ) - (block - (set_local $$argpos$0 - (i32.const -1) - ) - (set_local $$l10n$1 - (get_local $$l10n$0) - ) - (set_local $$storemerge - (get_local $$arrayidx31) - ) - (get_local $$5) + (i32.const 24) ) + (i32.const 36) ) ) + ) + ) + ) + ) + (set_local $$l10n$1 + (select + (i32.const 1) + (get_local $$l10n$0) + (get_local $$cmp37) + ) + ) + (set_local $$storemerge + (get_local $$add$ptr43$arrayidx31) + ) + (select + (get_local $$isdigittmp) + (i32.const -1) + (get_local $$cmp37) + ) + ) + (block + (set_local $$7 + (get_local $$5) + ) + (set_local $$l10n$1 + (get_local $$l10n$0) + ) + (set_local $$storemerge + (get_local $$arrayidx31) + ) + (i32.const -1) + ) + ) + ) + (block $label$break$L25 + (if + (i32.eq + (i32.and + (set_local $$conv48$307 + (i32.shr_s + (i32.shl + (get_local $$7) (i32.const 24) ) (i32.const 24) @@ -5095,27 +5073,15 @@ ) ) ) - (set_local $$and214 - (i32.and - (get_local $$conv207) - (i32.const -33) - ) - ) - (set_local $$t$0 - (if - (get_local $$or$cond192) - (get_local $$and214) - (get_local $$conv207) - ) - ) - (set_local $$and219 - (i32.and - (get_local $$fl$1) - (i32.const -65537) - ) - ) (set_local $$fl$1$and219 - (if + (select + (get_local $$fl$1) + (set_local $$and219 + (i32.and + (get_local $$fl$1) + (i32.const -65537) + ) + ) (i32.eq (i32.and (get_local $$fl$1) @@ -5123,8 +5089,6 @@ ) (i32.const 0) ) - (get_local $$fl$1) - (get_local $$and219) ) ) (block $label$break$L75 @@ -5154,7 +5118,16 @@ (block $switch-case$34 (br_table $switch-case$49 $switch-default$127 $switch-case$47 $switch-default$127 $switch-case$52 $switch-case$51 $switch-case$50 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$48 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$36 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$53 $switch-default$127 $switch-case$44 $switch-case$42 $switch-case$126 $switch-case$55 $switch-case$54 $switch-default$127 $switch-case$41 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$45 $switch-case$34 $switch-case$40 $switch-case$35 $switch-default$127 $switch-default$127 $switch-case$46 $switch-default$127 $switch-case$43 $switch-default$127 $switch-default$127 $switch-case$37 $switch-default$127 (i32.sub - (get_local $$t$0) + (set_local $$t$0 + (select + (i32.and + (get_local $$conv207) + (i32.const -33) + ) + (get_local $$conv207) + (get_local $$or$cond192) + ) + ) (i32.const 65) ) ) @@ -5369,16 +5342,6 @@ ) (br $switch$24) ) - (set_local $$cond245 - (if - (i32.gt_u - (get_local $$p$0) - (i32.const 8) - ) - (get_local $$p$0) - (i32.const 8) - ) - ) (set_local $$fl$3 (i32.or (get_local $$fl$1$and219) @@ -5386,7 +5349,14 @@ ) ) (set_local $$p$1 - (get_local $$cond245) + (select + (get_local $$p$0) + (i32.const 8) + (i32.gt_u + (get_local $$p$0) + (i32.const 8) + ) + ) ) (set_local $$t$1 (i32.const 120) @@ -5535,29 +5505,29 @@ (get_local $$s$addr$0$lcssa$i$229) ) (block - (set_local $$add269$p$0 - (if - (i32.lt_s - (get_local $$p$0) - (set_local $$add269 - (i32.add - (i32.sub - (get_local $$sub$ptr$lhs$cast317) - (get_local $$s$addr$0$lcssa$i$229) - ) - (i32.const 1) + (set_local $$cmp270 + (i32.lt_s + (get_local $$p$0) + (set_local $$add269 + (i32.add + (i32.sub + (get_local $$sub$ptr$lhs$cast317) + (get_local $$s$addr$0$lcssa$i$229) ) + (i32.const 1) ) ) - (get_local $$add269) - (get_local $$p$0) ) ) (set_local $$fl$4 (get_local $$fl$1$and219) ) (set_local $$p$2 - (get_local $$add269$p$0) + (select + (get_local $$add269) + (get_local $$p$0) + (get_local $$cmp270) + ) ) (set_local $$pl$1 (i32.const 0) @@ -5644,7 +5614,9 @@ ) (block (set_local $$$ - (if + (select + (i32.const 4091) + (i32.const 4093) (i32.eq (set_local $$and294 (i32.and @@ -5654,8 +5626,6 @@ ) (i32.const 0) ) - (i32.const 4091) - (i32.const 4093) ) ) (set_local $$149 @@ -5763,18 +5733,21 @@ ) (br $switch$24) ) - (set_local $$a$1 - (if - (i32.ne - (set_local $$169 - (i32.load - (get_local $$arg) - ) + (set_local $$tobool349 + (i32.ne + (set_local $$169 + (i32.load + (get_local $$arg) ) - (i32.const 0) ) + (i32.const 0) + ) + ) + (set_local $$a$1 + (select (get_local $$169) (i32.const 4101) + (get_local $$tobool349) ) ) (set_local $label @@ -5899,7 +5872,9 @@ ) (block (set_local $$prefix$0$i - (if + (select + (i32.const 4109) + (i32.const 4114) (i32.eq (set_local $$and12$i (i32.and @@ -5909,8 +5884,6 @@ ) (i32.const 0) ) - (i32.const 4109) - (i32.const 4114) ) ) (set_local $$y$addr$0$i @@ -6006,14 +5979,13 @@ (i32.const 97) ) (block - (set_local $$add$ptr65$i - (i32.add - (get_local $$prefix$0$i) - (i32.const 9) - ) - ) (set_local $$prefix$0$add$ptr65$i - (if + (select + (get_local $$prefix$0$i) + (i32.add + (get_local $$prefix$0$i) + (i32.const 9) + ) (i32.eq (set_local $$and62$i (i32.and @@ -6023,8 +5995,6 @@ ) (i32.const 0) ) - (get_local $$prefix$0$i) - (get_local $$add$ptr65$i) ) ) (set_local $$add67$i @@ -6137,21 +6107,18 @@ (i32.const 0) ) ) - (set_local $$sub97$i - (i32.sub - (i32.const 0) - (get_local $$198) - ) - ) (set_local $$200 (i32.shr_s (i32.shl (i32.lt_s (set_local $$cond100$i - (if - (get_local $$cmp94$i) - (get_local $$sub97$i) + (select + (i32.sub + (i32.const 0) + (get_local $$198) + ) (get_local $$198) + (get_local $$cmp94$i) ) ) (i32.const 0) @@ -6354,41 +6321,34 @@ ) ) ) - (set_local $$add154$i - (i32.sub - (i32.add - (get_local $$sub$ptr$sub153$i) - (get_local $$p$0) - ) - (get_local $$incdec$ptr115$i) - ) - ) - (set_local $$add163$i - (i32.add - (i32.sub - (get_local $$sub$ptr$sub159$i) - (get_local $$incdec$ptr115$i) - ) - (get_local $$$pre566$i) - ) - ) - (set_local $$add165$i - (i32.add - (set_local $$l$0$i - (if - (get_local $$or$cond384) - (get_local $$add154$i) - (get_local $$add163$i) - ) - ) - (get_local $$add67$i) - ) - ) (call $_pad (get_local $$f) (i32.const 32) (get_local $$w$1) - (get_local $$add165$i) + (set_local $$add165$i + (i32.add + (set_local $$l$0$i + (select + (i32.sub + (i32.add + (get_local $$sub$ptr$sub153$i) + (get_local $$p$0) + ) + (get_local $$incdec$ptr115$i) + ) + (i32.add + (i32.sub + (get_local $$sub$ptr$sub159$i) + (get_local $$incdec$ptr115$i) + ) + (get_local $$$pre566$i) + ) + (get_local $$or$cond384) + ) + ) + (get_local $$add67$i) + ) + ) (get_local $$fl$1$and219) ) (if @@ -6484,66 +6444,69 @@ ) ) (br $do-once$56 - (if + (select + (get_local $$w$1) + (get_local $$add165$i) (i32.lt_s (get_local $$add165$i) (get_local $$w$1) ) - (get_local $$w$1) - (get_local $$add165$i) ) ) ) ) (set_local $$$p$i - (if + (select + (i32.const 6) + (get_local $$p$0) (i32.lt_s (get_local $$p$0) (i32.const 0) ) - (i32.const 6) - (get_local $$p$0) ) ) - (set_local $$sub$ptr$rhs$cast345$i - (set_local $$arraydecay208$add$ptr213$i - (if - (i32.lt_s - (if - (get_local $$tobool56$i) - (block - (i32.store - (get_local $$e2$i) - (set_local $$sub203$i - (i32.add - (i32.load - (get_local $$e2$i) - ) - (i32.const -28) - ) - ) - ) - (set_local $$y$addr$3$i - (f64.mul - (get_local $$mul$i$240) - (f64.const 268435456) - ) - ) - (get_local $$sub203$i) - ) - (block - (set_local $$y$addr$3$i - (get_local $$mul$i$240) - ) + (set_local $$210 + (if + (get_local $$tobool56$i) + (block + (i32.store + (get_local $$e2$i) + (set_local $$sub203$i + (i32.add (i32.load (get_local $$e2$i) ) + (i32.const -28) ) ) - (i32.const 0) ) + (set_local $$y$addr$3$i + (f64.mul + (get_local $$mul$i$240) + (f64.const 268435456) + ) + ) + (get_local $$sub203$i) + ) + (block + (set_local $$y$addr$3$i + (get_local $$mul$i$240) + ) + (i32.load + (get_local $$e2$i) + ) + ) + ) + ) + (set_local $$sub$ptr$rhs$cast345$i + (set_local $$arraydecay208$add$ptr213$i + (select (get_local $$big$i) (get_local $$add$ptr213$i) + (i32.lt_s + (get_local $$210) + (i32.const 0) + ) ) ) ) @@ -6621,13 +6584,13 @@ ) (loop $while-out$68 $while-in$69 (set_local $$cond233$i - (if + (select + (i32.const 29) + (get_local $$211) (i32.gt_s (get_local $$211) (i32.const 29) ) - (i32.const 29) - (get_local $$211) ) ) (set_local $$a$2$ph$i @@ -6878,22 +6841,25 @@ (get_local $$z$1$lcssa$i) ) (loop $while-out$76 $while-in$77 - (set_local $$cond271$i - (if - (i32.gt_s - (set_local $$sub264$i - (i32.sub - (i32.const 0) - (get_local $$223) - ) + (set_local $$cmp265$i + (i32.gt_s + (set_local $$sub264$i + (i32.sub + (i32.const 0) + (get_local $$223) ) - (i32.const 9) ) (i32.const 9) + ) + ) + (set_local $$cond271$i + (select + (i32.const 9) (get_local $$sub264$i) + (get_local $$cmp265$i) ) ) - (set_local $$z$4$i + (set_local $$incdec$ptr292$a$3573$i (block $do-once$78 (if (i32.lt_u @@ -6976,22 +6942,19 @@ ) (br $while-in$81) ) - (set_local $$incdec$ptr292$i - (i32.add - (get_local $$a$3539$i) - (i32.const 4) - ) - ) (set_local $$incdec$ptr292$a$3$i - (if + (select + (i32.add + (get_local $$a$3539$i) + (i32.const 4) + ) + (get_local $$a$3539$i) (i32.eq (i32.load (get_local $$a$3539$i) ) (i32.const 0) ) - (get_local $$incdec$ptr292$i) - (get_local $$a$3539$i) ) ) (if @@ -7000,11 +6963,11 @@ (i32.const 0) ) (block - (set_local $$incdec$ptr292$a$3573$i - (get_local $$incdec$ptr292$a$3$i) + (set_local $$z$4$i + (get_local $$z$3538$i) ) (br $do-once$78 - (get_local $$z$3538$i) + (get_local $$incdec$ptr292$a$3$i) ) ) ) @@ -7012,67 +6975,64 @@ (get_local $$z$3538$i) (get_local $$mul286$i$lcssa) ) - (set_local $$incdec$ptr292$a$3573$i - (get_local $$incdec$ptr292$a$3$i) - ) - (i32.add - (get_local $$z$3538$i) - (i32.const 4) + (set_local $$z$4$i + (i32.add + (get_local $$z$3538$i) + (i32.const 4) + ) ) + (get_local $$incdec$ptr292$a$3$i) ) (block - (set_local $$incdec$ptr292$570$i + (set_local $$z$4$i + (get_local $$z$3538$i) + ) + (select (i32.add (get_local $$a$3539$i) (i32.const 4) ) - ) - (set_local $$incdec$ptr292$a$3573$i - (if - (i32.eq - (i32.load - (get_local $$a$3539$i) - ) - (i32.const 0) + (get_local $$a$3539$i) + (i32.eq + (i32.load + (get_local $$a$3539$i) ) - (get_local $$incdec$ptr292$570$i) - (get_local $$a$3539$i) + (i32.const 0) ) ) - (get_local $$z$3538$i) ) ) ) ) - (set_local $$add$ptr311$i - (i32.add - (set_local $$cond304$i - (if - (get_local $$cmp299$i) - (get_local $$arraydecay208$add$ptr213$i) - (get_local $$incdec$ptr292$a$3573$i) + (set_local $$cmp308$i + (i32.gt_s + (i32.shr_s + (i32.sub + (get_local $$z$4$i) + (set_local $$cond304$i + (select + (get_local $$arraydecay208$add$ptr213$i) + (get_local $$incdec$ptr292$a$3573$i) + (get_local $$cmp299$i) + ) + ) ) - ) - (i32.shl - (get_local $$add275$i) (i32.const 2) ) + (get_local $$add275$i) ) ) (set_local $$add$ptr311$z$4$i - (if - (i32.gt_s - (i32.shr_s - (i32.sub - (get_local $$z$4$i) - (get_local $$cond304$i) - ) + (select + (i32.add + (get_local $$cond304$i) + (i32.shl + (get_local $$add275$i) (i32.const 2) ) - (get_local $$add275$i) ) - (get_local $$add$ptr311$i) (get_local $$z$4$i) + (get_local $$cmp308$i) ) ) (i32.store @@ -7207,16 +7167,6 @@ ) ) ) - (set_local $$mul335$i - (if - (i32.ne - (get_local $$or$i$241) - (i32.const 102) - ) - (get_local $$e$1$i) - (i32.const 0) - ) - ) (set_local $$a$9$ph$i (if (i32.lt_s @@ -7224,7 +7174,14 @@ (i32.add (i32.sub (get_local $$$p$i) - (get_local $$mul335$i) + (select + (get_local $$e$1$i) + (i32.const 0) + (i32.ne + (get_local $$or$i$241) + (i32.const 102) + ) + ) ) (i32.shr_s (i32.shl @@ -7393,7 +7350,9 @@ ) (block (set_local $$$396$i - (if + (select + (f64.const 9007199254740992) + (f64.const 9007199254740994) (i32.eq (i32.and (i32.and @@ -7407,8 +7366,6 @@ ) (i32.const 0) ) - (f64.const 9007199254740992) - (f64.const 9007199254740994) ) ) (set_local $$small$0$i @@ -7426,7 +7383,9 @@ ) ) (f64.const 0.5) - (if + (select + (f64.const 1) + (f64.const 1.5) (i32.and (get_local $$cmp374$i) (i32.eq @@ -7434,8 +7393,6 @@ (get_local $$div384$i) ) ) - (f64.const 1) - (f64.const 1.5) ) ) ) @@ -7700,26 +7657,26 @@ ) ) ) - (set_local $$add$ptr442$z$3$i - (if - (i32.gt_u - (get_local $$z$3$lcssa$i) - (set_local $$add$ptr442$i - (i32.add - (get_local $$d$4$i) - (i32.const 4) - ) + (set_local $$cmp443$i + (i32.gt_u + (get_local $$z$3$lcssa$i) + (set_local $$add$ptr442$i + (i32.add + (get_local $$d$4$i) + (i32.const 4) ) ) - (get_local $$add$ptr442$i) - (get_local $$z$3$lcssa$i) ) ) (set_local $$e$5$ph$i (get_local $$e$4$i) ) (set_local $$z$7$ph$i - (get_local $$add$ptr442$z$3$i) + (select + (get_local $$add$ptr442$i) + (get_local $$z$3$lcssa$i) + (get_local $$cmp443$i) + ) ) (get_local $$a$8$i) ) @@ -7984,29 +7941,34 @@ (i32.const 102) ) (block - (set_local $$$sub514$i - (if - (i32.lt_s - (set_local $$sub514$i - (i32.sub - (get_local $$mul513$i) - (get_local $$j$2$i) - ) + (set_local $$cmp515$i + (i32.lt_s + (set_local $$sub514$i + (i32.sub + (get_local $$mul513$i) + (get_local $$j$2$i) ) - (i32.const 0) ) (i32.const 0) - (get_local $$sub514$i) ) ) - (set_local $$p$addr$3$i - (if - (i32.lt_s - (get_local $$p$addr$2$i) - (get_local $$$sub514$i) + (set_local $$cmp528$i + (i32.lt_s + (get_local $$p$addr$2$i) + (set_local $$$sub514$i + (select + (i32.const 0) + (get_local $$sub514$i) + (get_local $$cmp515$i) + ) ) + ) + ) + (set_local $$p$addr$3$i + (select (get_local $$p$addr$2$i) (get_local $$$sub514$i) + (get_local $$cmp528$i) ) ) (set_local $$t$addr$1$i @@ -8015,32 +7977,37 @@ (i32.const 0) ) (block - (set_local $$$sub562$i - (if - (i32.lt_s - (set_local $$sub562$i - (i32.sub - (i32.add - (get_local $$mul513$i) - (get_local $$e$5$ph$i) - ) - (get_local $$j$2$i) + (set_local $$cmp563$i + (i32.lt_s + (set_local $$sub562$i + (i32.sub + (i32.add + (get_local $$mul513$i) + (get_local $$e$5$ph$i) ) + (get_local $$j$2$i) ) - (i32.const 0) ) (i32.const 0) - (get_local $$sub562$i) ) ) - (set_local $$p$addr$3$i - (if - (i32.lt_s - (get_local $$p$addr$2$i) - (get_local $$$sub562$i) + (set_local $$cmp577$i + (i32.lt_s + (get_local $$p$addr$2$i) + (set_local $$$sub562$i + (select + (i32.const 0) + (get_local $$sub562$i) + (get_local $$cmp563$i) + ) ) + ) + ) + (set_local $$p$addr$3$i + (select (get_local $$p$addr$2$i) (get_local $$$sub562$i) + (get_local $$cmp577$i) ) ) (set_local $$t$addr$1$i @@ -8092,13 +8059,13 @@ ) (block (set_local $$sub$ptr$sub650$pn$i - (if + (select + (get_local $$e$5$ph$i) + (i32.const 0) (i32.gt_s (get_local $$e$5$ph$i) (i32.const 0) ) - (get_local $$e$5$ph$i) - (i32.const 0) ) ) (i32.const 0) @@ -8109,13 +8076,13 @@ (i32.shl (i32.lt_s (set_local $$cond629$i - (if + (select + (get_local $$sub626$le$i) + (get_local $$e$5$ph$i) (i32.lt_s (get_local $$e$5$ph$i) (i32.const 0) ) - (get_local $$sub626$le$i) - (get_local $$e$5$ph$i) ) ) (i32.const 0) @@ -8272,13 +8239,13 @@ (block (set_local $$d$5494$i (set_local $$r$0$a$9$i - (if + (select + (get_local $$arraydecay208$add$ptr213$i) + (get_local $$a$9$ph$i) (i32.gt_u (get_local $$a$9$ph$i) (get_local $$arraydecay208$add$ptr213$i) ) - (get_local $$arraydecay208$add$ptr213$i) - (get_local $$a$9$ph$i) ) ) ) @@ -8510,22 +8477,17 @@ ) (i32.const 0) ) - (block - (set_local $$cond732$i - (if - (i32.gt_s - (get_local $$p$addr$4489$i) - (i32.const 9) - ) - (i32.const 9) + (call $___fwritex + (get_local $$s715$0$lcssa$i) + (select + (i32.const 9) + (get_local $$p$addr$4489$i) + (i32.gt_s (get_local $$p$addr$4489$i) + (i32.const 9) ) ) - (call $___fwritex - (get_local $$s715$0$lcssa$i) - (get_local $$cond732$i) - (get_local $$f) - ) + (get_local $$f) ) ) (set_local $$sub735$i @@ -8584,17 +8546,14 @@ ) ) (block - (set_local $$add$ptr742$i - (i32.add - (get_local $$a$9$ph$i) - (i32.const 4) - ) - ) (set_local $$z$7$add$ptr742$i - (if - (get_local $$cmp450$lcssa$i) + (select (get_local $$z$7$i$lcssa) - (get_local $$add$ptr742$i) + (i32.add + (get_local $$a$9$ph$i) + (i32.const 4) + ) + (get_local $$cmp450$lcssa$i) ) ) (if @@ -8772,22 +8731,17 @@ ) (i32.const 0) ) - (block - (set_local $$cond800$i - (if - (i32.gt_s - (get_local $$p$addr$5501$i) - (get_local $$sub$ptr$sub789$i) - ) - (get_local $$sub$ptr$sub789$i) + (call $___fwritex + (get_local $$s753$2$i) + (select + (get_local $$sub$ptr$sub789$i) + (get_local $$p$addr$5501$i) + (i32.gt_s (get_local $$p$addr$5501$i) + (get_local $$sub$ptr$sub789$i) ) ) - (call $___fwritex - (get_local $$s753$2$i) - (get_local $$cond800$i) - (get_local $$f) - ) + (get_local $$f) ) ) (if @@ -8875,18 +8829,20 @@ (i32.const 8192) ) ) - (if + (select + (get_local $$w$1) + (get_local $$add653$i) (i32.lt_s (get_local $$add653$i) (get_local $$w$1) ) - (get_local $$w$1) - (get_local $$add653$i) ) ) (block (set_local $$cond$i - (if + (select + (i32.const 4127) + (i32.const 4131) (set_local $$tobool37$i (i32.ne (i32.and @@ -8896,41 +8852,35 @@ (i32.const 0) ) ) - (i32.const 4127) - (i32.const 4131) - ) - ) - (set_local $$cmp38$i - (i32.or - (f64.ne - (get_local $$y$addr$0$i) - (get_local $$y$addr$0$i) - ) - (f64.ne - (f64.const 0) - (f64.const 0) - ) - ) - ) - (set_local $$cond43$i - (if - (get_local $$tobool37$i) - (i32.const 4135) - (i32.const 4139) ) ) (set_local $$pl$1$i - (if - (get_local $$cmp38$i) + (select (i32.const 0) (get_local $$pl$0$i) + (set_local $$cmp38$i + (i32.or + (f64.ne + (get_local $$y$addr$0$i) + (get_local $$y$addr$0$i) + ) + (f64.ne + (f64.const 0) + (f64.const 0) + ) + ) + ) ) ) (set_local $$s35$0$i - (if - (get_local $$cmp38$i) - (get_local $$cond43$i) + (select + (select + (i32.const 4135) + (i32.const 4139) + (get_local $$tobool37$i) + ) (get_local $$cond$i) + (get_local $$cmp38$i) ) ) (call $_pad @@ -8992,13 +8942,13 @@ (i32.const 8192) ) ) - (if + (select + (get_local $$w$1) + (get_local $$add$i$239) (i32.lt_s (get_local $$add$i$239) (get_local $$w$1) ) - (get_local $$w$1) - (get_local $$add$i$239) ) ) ) @@ -9297,32 +9247,6 @@ (i32.const 0) ) ) - (set_local $$sub$ptr$sub363 - (i32.sub - (get_local $$call356) - (get_local $$a$1) - ) - ) - (set_local $$add$ptr359 - (i32.add - (get_local $$a$1) - (get_local $$p$0) - ) - ) - (set_local $$z$1 - (if - (get_local $$tobool357) - (get_local $$add$ptr359) - (get_local $$call356) - ) - ) - (set_local $$p$3 - (if - (get_local $$tobool357) - (get_local $$p$0) - (get_local $$sub$ptr$sub363) - ) - ) (set_local $$a$2 (get_local $$a$1) ) @@ -9330,7 +9254,14 @@ (get_local $$and219) ) (set_local $$p$5 - (get_local $$p$3) + (select + (get_local $$p$0) + (i32.sub + (get_local $$call356) + (get_local $$a$1) + ) + (get_local $$tobool357) + ) ) (set_local $$pl$2 (i32.const 0) @@ -9339,7 +9270,14 @@ (i32.const 4091) ) (set_local $$z$2 - (get_local $$z$1) + (select + (i32.add + (get_local $$a$1) + (get_local $$p$0) + ) + (get_local $$call356) + (get_local $$tobool357) + ) ) ) (if @@ -9610,16 +9548,6 @@ (i32.const 8192) ) ) - (set_local $$cond426 - (if - (i32.gt_s - (get_local $$w$1) - (get_local $$i$0$lcssa368) - ) - (get_local $$w$1) - (get_local $$i$0$lcssa368) - ) - ) (set_local $$cnt$0 (get_local $$cnt$1) ) @@ -9627,7 +9555,14 @@ (get_local $$incdec$ptr169$lcssa) ) (set_local $$l$0 - (get_local $$cond426) + (select + (get_local $$w$1) + (get_local $$i$0$lcssa368) + (i32.gt_s + (get_local $$w$1) + (get_local $$i$0$lcssa368) + ) + ) ) (set_local $$l10n$0 (get_local $$l10n$3) @@ -9644,20 +9579,17 @@ (set_local $label (i32.const 0) ) - (set_local $$and309 - (i32.and - (get_local $$fl$4) - (i32.const -65537) - ) - ) (set_local $$and309$fl$4 - (if + (select + (i32.and + (get_local $$fl$4) + (i32.const -65537) + ) + (get_local $$fl$4) (i32.gt_s (get_local $$p$2) (i32.const -1) ) - (get_local $$and309) - (get_local $$fl$4) ) ) (set_local $$a$2 @@ -9687,35 +9619,35 @@ ) ) (block - (set_local $$p$2$add322 - (if - (i32.gt_s - (get_local $$p$2) - (set_local $$add322 - (i32.add - (i32.xor - (i32.and - (get_local $$159) - (i32.const 1) - ) + (set_local $$cmp323 + (i32.gt_s + (get_local $$p$2) + (set_local $$add322 + (i32.add + (i32.xor + (i32.and + (get_local $$159) (i32.const 1) ) - (i32.sub - (get_local $$sub$ptr$lhs$cast317) - (get_local $$a$0) - ) + (i32.const 1) + ) + (i32.sub + (get_local $$sub$ptr$lhs$cast317) + (get_local $$a$0) ) ) ) - (get_local $$p$2) - (get_local $$add322) ) ) (set_local $$fl$6 (get_local $$and309$fl$4) ) (set_local $$p$5 - (get_local $$p$2$add322) + (select + (get_local $$p$2) + (get_local $$add322) + (get_local $$cmp323) + ) ) (set_local $$pl$2 (get_local $$pl$1) @@ -9750,40 +9682,44 @@ ) ) ) - (set_local $$sub$ptr$sub433$p$5 - (if - (i32.lt_s - (get_local $$p$5) - (set_local $$sub$ptr$sub433 - (i32.sub - (get_local $$z$2) - (get_local $$a$2) - ) + (set_local $$cmp434 + (i32.lt_s + (get_local $$p$5) + (set_local $$sub$ptr$sub433 + (i32.sub + (get_local $$z$2) + (get_local $$a$2) ) ) - (get_local $$sub$ptr$sub433) - (get_local $$p$5) ) ) - (set_local $$w$2 - (if - (i32.lt_s - (get_local $$w$1) - (set_local $$add441 - (i32.add - (get_local $$pl$2) - (get_local $$sub$ptr$sub433$p$5) + (set_local $$cmp442 + (i32.lt_s + (get_local $$w$1) + (set_local $$add441 + (i32.add + (get_local $$pl$2) + (set_local $$sub$ptr$sub433$p$5 + (select + (get_local $$sub$ptr$sub433) + (get_local $$p$5) + (get_local $$cmp434) + ) ) ) ) - (get_local $$add441) - (get_local $$w$1) ) ) (call $_pad (get_local $$f) (i32.const 32) - (get_local $$w$2) + (set_local $$w$2 + (select + (get_local $$add441) + (get_local $$w$1) + (get_local $$cmp442) + ) + ) (get_local $$add441) (get_local $$fl$6) ) @@ -10846,7 +10782,7 @@ (local $$1 i32) (local $$2 i32) (local $$3 i32) - (local $$cond i32) + (local $$cmp1 i32) (local $$sub5 i32) (set_local $sp (i32.load @@ -10892,25 +10828,25 @@ ) ) (block - (set_local $$cond - (if - (i32.gt_u - (set_local $$sub - (i32.sub - (get_local $$w) - (get_local $$l) - ) + (set_local $$cmp1 + (i32.gt_u + (set_local $$sub + (i32.sub + (get_local $$w) + (get_local $$l) ) - (i32.const 256) ) (i32.const 256) - (get_local $$sub) ) ) (call $_memset (get_local $$pad) (get_local $$c) - (get_local $$cond) + (select + (i32.const 256) + (get_local $$sub) + (get_local $$cmp1) + ) ) (set_local $$tobool$i$16 (i32.eq @@ -11086,7 +11022,6 @@ (local $$RP$1$i i32) (local $$RP$1$i$167 i32) (local $$RP$1$i$i i32) - (local $$add$ptr4$i$37$i i32) (local $$arrayidx$i$20$i i32) (local $$arrayidx103 i32) (local $$arrayidx196$i i32) @@ -11095,7 +11030,6 @@ (local $$br$2$ph$i i32) (local $$cond4$i i32) (local $$rsize$0$i i32) - (local $$shr i32) (local $$sub160 i32) (local $$sub18$i$i i32) (local $$v$3$i i32) @@ -11127,6 +11061,8 @@ (local $$T$0$i$lcssa i32) (local $$add$ptr$i i32) (local $$add$ptr227$i i32) + (local $$add$ptr4$i$26$i i32) + (local $$add$ptr4$i$37$i i32) (local $$add26$i$i i32) (local $$and80$i i32) (local $$arrayidx$i$i i32) @@ -11142,10 +11078,12 @@ (local $$rsize$0$i$152 i32) (local $$rsize$1$i i32) (local $$rsize$3$i i32) + (local $$shr i32) (local $$shr3 i32) (local $$sizebits$0$i i32) (local $$ssize$5$i i32) (local $$sub101$rsize$4$i i32) + (local $$sub5$i$27$i i32) (local $$sub91 i32) (local $$t$0$i i32) (local $$t$2$i i32) @@ -11180,7 +11118,6 @@ (local $$add$ptr$i$i$i$lcssa i32) (local $$add$ptr166 i32) (local $$add$ptr24$i$i i32) - (local $$add$ptr4$i$26$i i32) (local $$add$ptr4$i$i i32) (local $$add$ptr4$i$i$i i32) (local $$add$ptr95 i32) @@ -11201,9 +11138,8 @@ (local $$arrayidx66 i32) (local $$call132$i i32) (local $$child$i$i i32) - (local $$cond$i$25$i i32) - (local $$cond$i$i i32) - (local $$cond$i$i$i i32) + (local $$cmp102$i i32) + (local $$cmp32$i i32) (local $$fd68$pre$phi$i$iZ2D i32) (local $$head$i$17$i i32) (local $$p$0$i$i i32) @@ -11220,7 +11156,6 @@ (local $$sp$1107$i$lcssa i32) (local $$sub$i$138 i32) (local $$sub33$i i32) - (local $$sub5$i$27$i i32) (local $$sub5$i$i i32) (local $$sub5$i$i$i i32) (local $$v$0$i$153 i32) @@ -11241,7 +11176,6 @@ (local $$127 i32) (local $$128 i32) (local $$129 i32) - (local $$131 i32) (local $$132 i32) (local $$135 i32) (local $$137 i32) @@ -11260,7 +11194,6 @@ (local $$174 i32) (local $$175 i32) (local $$177 i32) - (local $$178 i32) (local $$180 i32) (local $$183 i32) (local $$185 i32) @@ -11270,7 +11203,6 @@ (local $$196 i32) (local $$197 i32) (local $$199 i32) - (local $$200 i32) (local $$202 i32) (local $$205 i32) (local $$207 i32) @@ -11302,7 +11234,6 @@ (local $$83 i32) (local $$84 i32) (local $$86 i32) - (local $$87 i32) (local $$89 i32) (local $$92 i32) (local $$97 i32) @@ -11315,7 +11246,6 @@ (local $$add$i$180 i32) (local $$add$i$i i32) (local $$add$ptr$i$i$i i32) - (local $$add$ptr15$i$i i32) (local $$add$ptr193 i32) (local $$add$ptr2$i$i i32) (local $$add$ptr262$i i32) @@ -11331,20 +11261,14 @@ (local $$add346$i i32) (local $$add83$i$i i32) (local $$add9$i i32) - (local $$and i32) (local $$and$i$143 i32) (local $$and12$i i32) (local $$and13$i i32) - (local $$and13$i$i i32) (local $$and17$i i32) (local $$and209$i$i i32) (local $$and264$i$i i32) (local $$and268$i$i i32) (local $$and273$i$i i32) - (local $$and3$i$24$i i32) - (local $$and3$i$35$i i32) - (local $$and3$i$i i32) - (local $$and3$i$i$i i32) (local $$and32$i i32) (local $$and331$i i32) (local $$and336$i i32) @@ -11354,7 +11278,6 @@ (local $$and53 i32) (local $$and57 i32) (local $$and6$i i32) - (local $$and6$i$i i32) (local $$and61 i32) (local $$and69$i$i i32) (local $$and73$i$i i32) @@ -11402,18 +11325,13 @@ (local $$cmp$i$2$i$i i32) (local $$cmp$i$23$i i32) (local $$cmp$i$34$i i32) - (local $$cmp102$i i32) - (local $$cmp32$i i32) + (local $$cmp45$i$155 i32) (local $$cmp49$i i32) (local $$cmp7$i$i i32) - (local $$cond$i i32) - (local $$cond$i$16$i i32) - (local $$cond$i$36$i i32) - (local $$cond$v$0$i i32) - (local $$cond115$i$i i32) - (local $$cond15$i$i i32) - (local $$cond315$i$i i32) - (local $$cond383$i i32) + (local $$cmp9$i$i i32) + (local $$cond$i$25$i i32) + (local $$cond$i$i i32) + (local $$cond$i$i$i i32) (local $$fd139$i i32) (local $$fd148$i$i i32) (local $$fd344$i$i i32) @@ -11485,19 +11403,13 @@ (local $$sub i32) (local $$sub$i$181 i32) (local $$sub$ptr$sub$i i32) + (local $$sub$ptr$sub$i$41$i i32) (local $$sub101$i i32) (local $$sub112$i i32) - (local $$sub113$i$i i32) - (local $$sub16$i$i i32) - (local $$sub172$i i32) (local $$sub190 i32) (local $$sub2$i i32) (local $$sub260$i i32) - (local $$sub30$i i32) (local $$sub31$i i32) - (local $$sub31$rsize$0$i i32) - (local $$sub313$i$i i32) - (local $$sub381$i i32) (local $$sub41$i i32) (local $$sub42 i32) (local $$sub44 i32) @@ -11514,30 +11426,6 @@ (i32.const 245) ) (block - (set_local $$and - (i32.and - (i32.add - (get_local $$bytes) - (i32.const 11) - ) - (i32.const -8) - ) - ) - (set_local $$shr - (i32.shr_u - (set_local $$cond - (if - (i32.lt_u - (get_local $$bytes) - (i32.const 11) - ) - (i32.const 16) - (get_local $$and) - ) - ) - (i32.const 3) - ) - ) (if (i32.ne (i32.and @@ -11548,7 +11436,27 @@ (i32.const 176) ) ) - (get_local $$shr) + (set_local $$shr + (i32.shr_u + (set_local $$cond + (select + (i32.const 16) + (i32.and + (i32.add + (get_local $$bytes) + (i32.const 11) + ) + (i32.const -8) + ) + (i32.lt_u + (get_local $$bytes) + (i32.const 11) + ) + ) + ) + (i32.const 3) + ) + ) ) ) (i32.const 3) @@ -12233,43 +12141,38 @@ (get_local $$22) ) ) - (set_local $$sub31$rsize$0$i - (if - (set_local $$cmp32$i - (i32.lt_u - (set_local $$sub31$i - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $$cond4$i) - ) - (i32.const -8) - ) - (get_local $$cond) + (set_local $$cmp32$i + (i32.lt_u + (set_local $$sub31$i + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $$cond4$i) ) + (i32.const -8) ) - (get_local $$rsize$0$i) + (get_local $$cond) ) ) - (get_local $$sub31$i) (get_local $$rsize$0$i) ) ) - (set_local $$cond$v$0$i - (if + (set_local $$rsize$0$i + (select + (get_local $$sub31$i) + (get_local $$rsize$0$i) (get_local $$cmp32$i) - (get_local $$cond4$i) - (get_local $$v$0$i) ) ) - (set_local $$rsize$0$i - (get_local $$sub31$rsize$0$i) - ) (set_local $$t$0$i (get_local $$cond4$i) ) (set_local $$v$0$i - (get_local $$cond$v$0$i) + (select + (get_local $$cond4$i) + (get_local $$v$0$i) + (get_local $$cmp32$i) + ) ) (br $while-in$7) ) @@ -13033,25 +12936,6 @@ ) ) (block - (set_local $$sub30$i - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$idx$0$i) - (i32.const 1) - ) - ) - ) - (set_local $$cond$i - (if - (i32.eq - (get_local $$idx$0$i) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub30$i) - ) - ) (set_local $$rsize$0$i$152 (get_local $$sub$i$138) ) @@ -13061,7 +12945,20 @@ (set_local $$sizebits$0$i (i32.shl (get_local $$and145) - (get_local $$cond$i) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$idx$0$i) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$idx$0$i) + (i32.const 31) + ) + ) ) ) (set_local $$t$0$i$151 @@ -13126,17 +13023,22 @@ ) ) ) + (set_local $$cmp45$i$155 + (i32.eq + (set_local $$54 + (i32.load offset=20 + (get_local $$t$0$i$151) + ) + ) + (i32.const 0) + ) + ) (set_local $$rst$1$i - (if + (select + (get_local $$rst$0$i) + (get_local $$54) (i32.or - (i32.eq - (set_local $$54 - (i32.load offset=20 - (get_local $$t$0$i$151) - ) - ) - (i32.const 0) - ) + (get_local $$cmp45$i$155) (i32.eq (get_local $$54) (set_local $$55 @@ -13158,8 +13060,6 @@ ) ) ) - (get_local $$rst$0$i) - (get_local $$54) ) ) (set_local $$sizebits$0$shl52$i @@ -13405,33 +13305,34 @@ (set_local $label (i32.const 0) ) - (set_local $$sub101$rsize$4$i - (if - (set_local $$cmp102$i - (i32.lt_u - (set_local $$sub101$i - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $$t$48$i) - ) - (i32.const -8) - ) - (get_local $$and145) + (set_local $$cmp102$i + (i32.lt_u + (set_local $$sub101$i + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $$t$48$i) ) + (i32.const -8) ) - (get_local $$rsize$49$i) + (get_local $$and145) ) ) + (get_local $$rsize$49$i) + ) + ) + (set_local $$sub101$rsize$4$i + (select (get_local $$sub101$i) (get_local $$rsize$49$i) + (get_local $$cmp102$i) ) ) (set_local $$t$4$v$4$i - (if - (get_local $$cmp102$i) + (select (get_local $$t$48$i) (get_local $$v$410$i) + (get_local $$cmp102$i) ) ) (if @@ -14247,38 +14148,29 @@ (br $do-once$29) ) ) - (set_local $$87 - (i32.load - (get_local $$arrayidx355$i) - ) - ) - (set_local $$sub381$i - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$I316$0$i) - (i32.const 1) - ) - ) - ) - (set_local $$cond383$i - (if - (i32.eq - (get_local $$I316$0$i) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub381$i) - ) - ) (set_local $$K373$0$i (i32.shl (get_local $$rsize$4$lcssa$i) - (get_local $$cond383$i) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$I316$0$i) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$I316$0$i) + (i32.const 31) + ) + ) ) ) (set_local $$T$0$i - (get_local $$87) + (i32.load + (get_local $$arrayidx355$i) + ) ) (loop $while-out$31 $while-in$32 (if @@ -15351,12 +15243,6 @@ ) (br $while-in$47) ) - (set_local $$sub172$i - (i32.add - (get_local $$tsize$795$i) - (i32.const -40) - ) - ) (set_local $$cmp$i$13$i (i32.eq (i32.and @@ -15371,28 +15257,24 @@ (i32.const 0) ) ) - (set_local $$and3$i$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$124) - ) - (i32.const 7) - ) - ) - (set_local $$cond$i$i - (if - (get_local $$cmp$i$13$i) - (i32.const 0) - (get_local $$and3$i$i) - ) - ) (i32.store (i32.const 200) (set_local $$add$ptr4$i$i (i32.add (get_local $$tbase$796$i) - (get_local $$cond$i$i) + (set_local $$cond$i$i + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$124) + ) + (i32.const 7) + ) + (get_local $$cmp$i$13$i) + ) + ) ) ) ) @@ -15400,7 +15282,10 @@ (i32.const 188) (set_local $$sub5$i$i (i32.sub - (get_local $$sub172$i) + (i32.add + (get_local $$tsize$795$i) + (i32.const -40) + ) (get_local $$cond$i$i) ) ) @@ -15521,11 +15406,6 @@ (get_local $$tsize$795$i) ) ) - (set_local $$131 - (i32.load - (i32.const 188) - ) - ) (set_local $$cmp$i$23$i (i32.eq (i32.and @@ -15540,42 +15420,42 @@ (i32.const 0) ) ) - (set_local $$and3$i$24$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$132) + (set_local $$add$ptr4$i$26$i + (i32.add + (get_local $$119) + (set_local $$cond$i$25$i + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$132) + ) + (i32.const 7) + ) + (get_local $$cmp$i$23$i) + ) ) - (i32.const 7) ) ) - (set_local $$cond$i$25$i - (if - (get_local $$cmp$i$23$i) - (i32.const 0) - (get_local $$and3$i$24$i) + (set_local $$sub5$i$27$i + (i32.add + (i32.sub + (get_local $$tsize$795$i) + (get_local $$cond$i$25$i) + ) + (i32.load + (i32.const 188) + ) ) ) (i32.store (i32.const 200) - (set_local $$add$ptr4$i$26$i - (i32.add - (get_local $$119) - (get_local $$cond$i$25$i) - ) - ) + (get_local $$add$ptr4$i$26$i) ) (i32.store (i32.const 188) - (set_local $$sub5$i$27$i - (i32.add - (i32.sub - (get_local $$tsize$795$i) - (get_local $$cond$i$25$i) - ) - (get_local $$131) - ) - ) + (get_local $$sub5$i$27$i) ) (i32.store offset=4 (get_local $$add$ptr4$i$26$i) @@ -15724,28 +15604,6 @@ (i32.const 0) ) ) - (set_local $$and3$i$35$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$140) - ) - (i32.const 7) - ) - ) - (set_local $$cond$i$36$i - (if - (get_local $$cmp$i$34$i) - (i32.const 0) - (get_local $$and3$i$35$i) - ) - ) - (set_local $$add$ptr4$i$37$i - (i32.add - (get_local $$tbase$796$i) - (get_local $$cond$i$36$i) - ) - ) (set_local $$cmp7$i$i (i32.eq (i32.and @@ -15760,20 +15618,40 @@ (i32.const 0) ) ) - (set_local $$and13$i$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$142) + (set_local $$sub$ptr$sub$i$41$i + (i32.sub + (set_local $$add$ptr16$i$i + (i32.add + (get_local $$add$ptr227$i) + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$142) + ) + (i32.const 7) + ) + (get_local $$cmp7$i$i) + ) + ) + ) + (set_local $$add$ptr4$i$37$i + (i32.add + (get_local $$tbase$796$i) + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$140) + ) + (i32.const 7) + ) + (get_local $$cmp$i$34$i) + ) + ) ) - (i32.const 7) - ) - ) - (set_local $$cond15$i$i - (if - (get_local $$cmp7$i$i) - (i32.const 0) - (get_local $$and13$i$i) ) ) (set_local $$add$ptr17$i$i @@ -15784,15 +15662,7 @@ ) (set_local $$sub18$i$i (i32.sub - (i32.sub - (set_local $$add$ptr16$i$i - (i32.add - (get_local $$add$ptr227$i) - (get_local $$cond15$i$i) - ) - ) - (get_local $$add$ptr4$i$37$i) - ) + (get_local $$sub$ptr$sub$i$41$i) (get_local $$nb$0) ) ) @@ -16738,38 +16608,29 @@ (br $do-once$52) ) ) - (set_local $$178 - (i32.load - (get_local $$arrayidx287$i$i) - ) - ) - (set_local $$sub313$i$i - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$I252$0$i$i) - (i32.const 1) - ) - ) - ) - (set_local $$cond315$i$i - (if - (i32.eq - (get_local $$I252$0$i$i) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub313$i$i) - ) - ) (set_local $$K305$0$i$i (i32.shl (get_local $$qsize$0$i$i) - (get_local $$cond315$i$i) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$I252$0$i$i) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$I252$0$i$i) + (i32.const 31) + ) + ) ) ) (set_local $$T$0$i$58$i - (get_local $$178) + (i32.load + (get_local $$arrayidx287$i$i) + ) ) (loop $while-out$71 $while-in$72 (if @@ -17002,59 +16863,44 @@ (i32.const 0) ) ) - (set_local $$and6$i$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$188) + (set_local $$cmp9$i$i + (i32.lt_u + (set_local $$add$ptr7$i$i + (i32.add + (get_local $$add$ptr2$i$i) + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$188) + ) + (i32.const 7) + ) + (get_local $$cmp$i$15$i) + ) + ) + ) + (set_local $$add$ptr8$i122$i + (i32.add + (get_local $$119) + (i32.const 16) + ) ) - (i32.const 7) - ) - ) - (set_local $$cond$i$16$i - (if - (get_local $$cmp$i$15$i) - (i32.const 0) - (get_local $$and6$i$i) ) ) (set_local $$add$ptr14$i$i (i32.add (set_local $$cond13$i$i - (if - (i32.lt_u - (set_local $$add$ptr7$i$i - (i32.add - (get_local $$add$ptr2$i$i) - (get_local $$cond$i$16$i) - ) - ) - (set_local $$add$ptr8$i122$i - (i32.add - (get_local $$119) - (i32.const 16) - ) - ) - ) + (select (get_local $$119) (get_local $$add$ptr7$i$i) + (get_local $$cmp9$i$i) ) ) (i32.const 8) ) ) - (set_local $$add$ptr15$i$i - (i32.add - (get_local $$cond13$i$i) - (i32.const 24) - ) - ) - (set_local $$sub16$i$i - (i32.add - (get_local $$tsize$795$i) - (i32.const -40) - ) - ) (set_local $$cmp$i$2$i$i (i32.eq (i32.and @@ -17069,28 +16915,24 @@ (i32.const 0) ) ) - (set_local $$and3$i$i$i - (i32.and - (i32.sub - (i32.const 0) - (get_local $$190) - ) - (i32.const 7) - ) - ) - (set_local $$cond$i$i$i - (if - (get_local $$cmp$i$2$i$i) - (i32.const 0) - (get_local $$and3$i$i$i) - ) - ) (i32.store (i32.const 200) (set_local $$add$ptr4$i$i$i (i32.add (get_local $$tbase$796$i) - (get_local $$cond$i$i$i) + (set_local $$cond$i$i$i + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (get_local $$190) + ) + (i32.const 7) + ) + (get_local $$cmp$i$2$i$i) + ) + ) ) ) ) @@ -17098,7 +16940,10 @@ (i32.const 188) (set_local $$sub5$i$i$i (i32.sub - (get_local $$sub16$i$i) + (i32.add + (get_local $$tsize$795$i) + (i32.const -40) + ) (get_local $$cond$i$i$i) ) ) @@ -17173,7 +17018,10 @@ (get_local $$add$ptr14$i$i) ) (set_local $$p$0$i$i - (get_local $$add$ptr15$i$i) + (i32.add + (get_local $$cond13$i$i) + (i32.const 24) + ) ) (loop $while-out$75 $while-in$76 (i32.store @@ -17505,38 +17353,29 @@ (br $do-once$44) ) ) - (set_local $$200 - (i32.load - (get_local $$arrayidx91$i$i) - ) - ) - (set_local $$sub113$i$i - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$I57$0$i$i) - (i32.const 1) - ) - ) - ) - (set_local $$cond115$i$i - (if - (i32.eq - (get_local $$I57$0$i$i) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub113$i$i) - ) - ) (set_local $$K105$0$i$i (i32.shl (get_local $$sub$ptr$sub$i$i) - (get_local $$cond115$i$i) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$I57$0$i$i) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$I57$0$i$i) + (i32.const 31) + ) + ) ) ) (set_local $$T$0$i$i - (get_local $$200) + (i32.load + (get_local $$arrayidx91$i$i) + ) ) (loop $while-out$77 $while-in$78 (if @@ -17839,7 +17678,6 @@ (local $$63 i32) (local $$64 i32) (local $$66 i32) - (local $$67 i32) (local $$69 i32) (local $$72 i32) (local $$R$1$lcssa i32) @@ -17869,7 +17707,6 @@ (local $$child171 i32) (local $$child443 i32) (local $$cmp$i i32) - (local $$cond i32) (local $$dec i32) (local $$fd311 i32) (local $$fd347 i32) @@ -17886,7 +17723,6 @@ (local $$shl573 i32) (local $$shl600 i32) (local $$sp$0$i i32) - (local $$sub589 i32) (i32.load (i32.const 8) ) @@ -19589,38 +19425,29 @@ ) ) (block - (set_local $$67 - (i32.load - (get_local $$arrayidx567) - ) - ) - (set_local $$sub589 - (i32.sub - (i32.const 25) - (i32.shr_u - (get_local $$I534$0) - (i32.const 1) - ) - ) - ) - (set_local $$cond - (if - (i32.eq - (get_local $$I534$0) - (i32.const 31) - ) - (i32.const 0) - (get_local $$sub589) - ) - ) (set_local $$K583$0 (i32.shl (get_local $$psize$2) - (get_local $$cond) + (select + (i32.const 0) + (i32.sub + (i32.const 25) + (i32.shr_u + (get_local $$I534$0) + (i32.const 1) + ) + ) + (i32.eq + (get_local $$I534$0) + (i32.const 31) + ) + ) ) ) (set_local $$T$0 - (get_local $$67) + (i32.load + (get_local $$arrayidx567) + ) ) (loop $while-out$18 $while-in$19 (if @@ -20315,13 +20142,13 @@ ) (i32.store (i32.const 168) - (if + (select + (i32.const -1) + (i32.const 0) (i32.lt_s (get_local $high) (i32.const 0) ) - (i32.const -1) - (i32.const 0) ) ) (i32.shr_s @@ -20432,106 +20259,59 @@ (local $$2$1 i32) (local $$7$0 i32) (local $$7$1 i32) - (set_local $$1$0 - (i32.or - (i32.shr_s - (get_local $$a$1) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$1$1 - (i32.or - (i32.shr_s - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$2$0 - (i32.or - (i32.shr_s - (get_local $$b$1) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$2$1 - (i32.or - (i32.shr_s - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) (call $_i64Subtract (i32.xor (call $___udivmoddi4 (call $_i64Subtract (i32.xor - (get_local $$1$0) + (set_local $$1$0 + (i32.or + (i32.shr_s + (get_local $$a$1) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$a$0) ) (i32.xor - (get_local $$1$1) + (set_local $$1$1 + (i32.or + (i32.shr_s + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$a$1) ) (get_local $$1$0) @@ -20542,11 +20322,54 @@ ) (call $_i64Subtract (i32.xor - (get_local $$2$0) + (set_local $$2$0 + (i32.or + (i32.shr_s + (get_local $$b$1) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$b$0) ) (i32.xor - (get_local $$2$1) + (set_local $$2$1 + (i32.or + (i32.shr_s + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$b$1) ) (get_local $$2$0) @@ -20583,9 +20406,9 @@ (local $$1$0 i32) (local $$1$1 i32) (local $$rem i32) + (local $__stackBase__ i32) (local $$2$0 i32) (local $$2$1 i32) - (local $__stackBase__ i32) (local $$10$0 i32) (local $$10$1 i32) (set_local $__stackBase__ @@ -20602,107 +20425,57 @@ (i32.const 16) ) ) - (set_local $$rem - (get_local $__stackBase__) - ) - (set_local $$1$0 - (i32.or - (i32.shr_s - (get_local $$a$1) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$1$1 - (i32.or - (i32.shr_s - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$a$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$2$0 - (i32.or - (i32.shr_s - (get_local $$b$1) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) - (set_local $$2$1 - (i32.or - (i32.shr_s - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 31) - ) - (i32.shl - (if - (i32.lt_s - (get_local $$b$1) - (i32.const 0) - ) - (i32.const -1) - (i32.const 0) - ) - (i32.const 1) - ) - ) - ) (call $___udivmoddi4 (call $_i64Subtract (i32.xor - (get_local $$1$0) + (set_local $$1$0 + (i32.or + (i32.shr_s + (get_local $$a$1) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$a$0) ) (i32.xor - (get_local $$1$1) + (set_local $$1$1 + (i32.or + (i32.shr_s + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$a$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$a$1) ) (get_local $$1$0) @@ -20713,11 +20486,54 @@ ) (call $_i64Subtract (i32.xor - (get_local $$2$0) + (set_local $$2$0 + (i32.or + (i32.shr_s + (get_local $$b$1) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$b$0) ) (i32.xor - (get_local $$2$1) + (set_local $$2$1 + (i32.or + (i32.shr_s + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 31) + ) + (i32.shl + (select + (i32.const -1) + (i32.const 0) + (i32.lt_s + (get_local $$b$1) + (i32.const 0) + ) + ) + (i32.const 1) + ) + ) + ) (get_local $$b$1) ) (get_local $$2$0) @@ -20726,7 +20542,9 @@ (i32.load (i32.const 168) ) - (get_local $$rem) + (set_local $$rem + (get_local $__stackBase__) + ) ) (set_local $$10$0 (call $_i64Subtract @@ -21754,13 +21572,13 @@ (i32.const 31) ) (i32.shl - (if + (select + (i32.const -1) + (i32.const 0) (i32.lt_s (get_local $$150$1) (i32.const 0) ) - (i32.const -1) - (i32.const 0) ) (i32.const 1) ) @@ -21780,24 +21598,24 @@ (i32.and (i32.or (i32.shr_s - (if + (select + (i32.const -1) + (i32.const 0) (i32.lt_s (get_local $$150$1) (i32.const 0) ) - (i32.const -1) - (i32.const 0) ) (i32.const 31) ) (i32.shl - (if + (select + (i32.const -1) + (i32.const 0) (i32.lt_s (get_local $$150$1) (i32.const 0) ) - (i32.const -1) - (i32.const 0) ) (i32.const 1) ) diff --git a/test/memorygrowth.fromasm b/test/memorygrowth.fromasm index d1e8831b3..2927c2f6e 100644 --- a/test/memorygrowth.fromasm +++ b/test/memorygrowth.fromasm @@ -49,12 +49,12 @@ (local $q i32) (local $V i32) (local $ja i32) - (local $c i32) (local $aa i32) (local $d i32) + (local $c i32) (local $g i32) - (local $la i32) (local $f i32) + (local $la i32) (local $N i32) (local $t i32) (local $o i32) @@ -156,27 +156,6 @@ (i32.const 245) ) (block - (set_local $e - (i32.shr_u - (set_local $d - (if - (i32.lt_u - (get_local $a) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (get_local $a) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (i32.const 3) - ) - ) (if (i32.and (set_local $g @@ -186,7 +165,27 @@ (i32.const 1208) ) ) - (get_local $e) + (set_local $e + (i32.shr_u + (set_local $d + (select + (i32.const 16) + (i32.and + (i32.add + (get_local $a) + (i32.const 11) + ) + (i32.const -8) + ) + (i32.lt_u + (get_local $a) + (i32.const 11) + ) + ) + ) + (i32.const 3) + ) + ) ) ) (i32.const 3) @@ -850,36 +849,37 @@ ) ) ) - (set_local $e - (if - (set_local $f - (i32.lt_u - (set_local $j - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $B) - ) - (i32.const -8) - ) - (get_local $d) + (set_local $f + (i32.lt_u + (set_local $j + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $B) ) + (i32.const -8) ) - (get_local $e) + (get_local $d) ) ) + (get_local $e) + ) + ) + (set_local $e + (select (get_local $j) (get_local $e) + (get_local $f) ) ) (set_local $g (get_local $B) ) (set_local $s - (if - (get_local $f) + (select (get_local $B) (get_local $s) + (get_local $f) ) ) (br $while-in$7) @@ -1600,11 +1600,7 @@ (set_local $s (i32.shl (get_local $e) - (if - (i32.eq - (get_local $J) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -1613,6 +1609,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $J) + (i32.const 31) + ) ) ) ) @@ -1679,14 +1679,16 @@ ) ) (set_local $m - (if + (select + (get_local $j) + (set_local $l + (i32.load offset=20 + (get_local $o) + ) + ) (i32.or (i32.eq - (set_local $l - (i32.load offset=20 - (get_local $o) - ) - ) + (get_local $l) (i32.const 0) ) (i32.eq @@ -1710,8 +1712,6 @@ ) ) ) - (get_local $j) - (get_local $l) ) ) (if @@ -1961,33 +1961,34 @@ (set_local $N (i32.const 0) ) - (set_local $g - (if - (set_local $s - (i32.lt_u - (set_local $i - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $P) - ) - (i32.const -8) - ) - (get_local $e) + (set_local $s + (i32.lt_u + (set_local $i + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $P) ) + (i32.const -8) ) - (get_local $O) + (get_local $e) ) ) + (get_local $O) + ) + ) + (set_local $g + (select (get_local $i) (get_local $O) + (get_local $s) ) ) (set_local $i - (if - (get_local $s) + (select (get_local $P) (get_local $Q) + (get_local $s) ) ) (if @@ -2753,11 +2754,7 @@ (set_local $q (i32.shl (get_local $U) - (if - (i32.eq - (get_local $ba) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -2766,6 +2763,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $ba) + (i32.const 31) + ) ) ) ) @@ -3831,27 +3832,32 @@ (get_local $ia) ) ) - (set_local $ca - (if - (i32.eq - (i32.and - (set_local $ka - (i32.add - (get_local $ja) - (i32.const 8) + (set_local $ka + (i32.add + (get_local $ja) + (set_local $ca + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $ka + (i32.add + (get_local $ja) + (i32.const 8) + ) + ) ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $ka) + (i32.const 7) + ) + (i32.const 0) ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $ka) ) - (i32.const 7) ) ) ) @@ -3868,12 +3874,7 @@ ) (i32.store (i32.const 1232) - (set_local $ka - (i32.add - (get_local $ja) - (get_local $ca) - ) - ) + (get_local $ka) ) (i32.store (i32.const 1220) @@ -4008,26 +4009,26 @@ (set_local $ca (i32.add (get_local $ha) - (if - (i32.eq - (i32.and + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) (set_local $ka (i32.add (get_local $ha) (i32.const 8) ) ) - (i32.const 7) ) - (i32.const 0) + (i32.const 7) ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) + (i32.eq + (i32.and (get_local $ka) + (i32.const 7) ) - (i32.const 7) + (i32.const 0) ) ) ) @@ -4035,26 +4036,26 @@ (set_local $ma (i32.add (get_local $c) - (if - (i32.eq - (i32.and + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) (set_local $ka (i32.add (get_local $c) (i32.const 8) ) ) - (i32.const 7) ) - (i32.const 0) + (i32.const 7) ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) + (i32.eq + (i32.and (get_local $ka) + (i32.const 7) ) - (i32.const 7) + (i32.const 0) ) ) ) @@ -4985,11 +4986,7 @@ (set_local $aa (i32.shl (get_local $Ea) - (if - (i32.eq - (get_local $Ha) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -4998,6 +4995,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $Ha) + (i32.const 31) + ) ) ) ) @@ -5227,30 +5228,32 @@ (set_local $ka (i32.add (set_local $ca - (if - (i32.lt_u - (set_local $ka - (i32.add - (get_local $ca) - (if - (i32.eq - (i32.and - (get_local $ea) - (i32.const 7) - ) + (select + (get_local $ja) + (set_local $ka + (i32.add + (get_local $ca) + (select + (i32.const 0) + (i32.and + (i32.sub (i32.const 0) + (get_local $ea) ) - (i32.const 0) + (i32.const 7) + ) + (i32.eq (i32.and - (i32.sub - (i32.const 0) - (get_local $ea) - ) + (get_local $ea) (i32.const 7) ) + (i32.const 0) ) ) ) + ) + (i32.lt_u + (get_local $ka) (set_local $ea (i32.add (get_local $ja) @@ -5258,43 +5261,40 @@ ) ) ) - (get_local $ja) - (get_local $ka) ) ) (i32.const 8) ) ) - (set_local $c - (if - (i32.eq - (i32.and - (set_local $ma - (i32.add - (get_local $ha) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $ma) - ) - (i32.const 7) - ) - ) - ) (i32.store (i32.const 1232) (set_local $ma (i32.add (get_local $ha) - (get_local $c) + (set_local $c + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $ma + (i32.add + (get_local $ha) + (i32.const 8) + ) + ) + ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $ma) + (i32.const 7) + ) + (i32.const 0) + ) + ) + ) ) ) ) @@ -5701,11 +5701,7 @@ (set_local $ma (i32.shl (get_local $ka) - (if - (i32.eq - (get_local $Oa) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -5714,6 +5710,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $Oa) + (i32.const 31) + ) ) ) ) @@ -5957,36 +5957,35 @@ ) ) ) - (set_local $c - (if - (i32.eq - (i32.and - (set_local $ma - (i32.add - (get_local $ha) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $ma) - ) - (i32.const 7) - ) - ) - ) (i32.store (i32.const 1232) (set_local $ma (i32.add (get_local $ha) - (get_local $c) + (set_local $c + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $ma + (i32.add + (get_local $ha) + (i32.const 8) + ) + ) + ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $ma) + (i32.const 7) + ) + (i32.const 0) + ) + ) + ) ) ) ) @@ -7742,11 +7741,7 @@ (set_local $F (i32.shl (get_local $D) - (if - (i32.eq - (get_local $G) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -7755,6 +7750,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $G) + (i32.const 31) + ) ) ) ) diff --git a/test/memorygrowth.fromasm.imprecise b/test/memorygrowth.fromasm.imprecise index d1e8831b3..2927c2f6e 100644 --- a/test/memorygrowth.fromasm.imprecise +++ b/test/memorygrowth.fromasm.imprecise @@ -49,12 +49,12 @@ (local $q i32) (local $V i32) (local $ja i32) - (local $c i32) (local $aa i32) (local $d i32) + (local $c i32) (local $g i32) - (local $la i32) (local $f i32) + (local $la i32) (local $N i32) (local $t i32) (local $o i32) @@ -156,27 +156,6 @@ (i32.const 245) ) (block - (set_local $e - (i32.shr_u - (set_local $d - (if - (i32.lt_u - (get_local $a) - (i32.const 11) - ) - (i32.const 16) - (i32.and - (i32.add - (get_local $a) - (i32.const 11) - ) - (i32.const -8) - ) - ) - ) - (i32.const 3) - ) - ) (if (i32.and (set_local $g @@ -186,7 +165,27 @@ (i32.const 1208) ) ) - (get_local $e) + (set_local $e + (i32.shr_u + (set_local $d + (select + (i32.const 16) + (i32.and + (i32.add + (get_local $a) + (i32.const 11) + ) + (i32.const -8) + ) + (i32.lt_u + (get_local $a) + (i32.const 11) + ) + ) + ) + (i32.const 3) + ) + ) ) ) (i32.const 3) @@ -850,36 +849,37 @@ ) ) ) - (set_local $e - (if - (set_local $f - (i32.lt_u - (set_local $j - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $B) - ) - (i32.const -8) - ) - (get_local $d) + (set_local $f + (i32.lt_u + (set_local $j + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $B) ) + (i32.const -8) ) - (get_local $e) + (get_local $d) ) ) + (get_local $e) + ) + ) + (set_local $e + (select (get_local $j) (get_local $e) + (get_local $f) ) ) (set_local $g (get_local $B) ) (set_local $s - (if - (get_local $f) + (select (get_local $B) (get_local $s) + (get_local $f) ) ) (br $while-in$7) @@ -1600,11 +1600,7 @@ (set_local $s (i32.shl (get_local $e) - (if - (i32.eq - (get_local $J) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -1613,6 +1609,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $J) + (i32.const 31) + ) ) ) ) @@ -1679,14 +1679,16 @@ ) ) (set_local $m - (if + (select + (get_local $j) + (set_local $l + (i32.load offset=20 + (get_local $o) + ) + ) (i32.or (i32.eq - (set_local $l - (i32.load offset=20 - (get_local $o) - ) - ) + (get_local $l) (i32.const 0) ) (i32.eq @@ -1710,8 +1712,6 @@ ) ) ) - (get_local $j) - (get_local $l) ) ) (if @@ -1961,33 +1961,34 @@ (set_local $N (i32.const 0) ) - (set_local $g - (if - (set_local $s - (i32.lt_u - (set_local $i - (i32.sub - (i32.and - (i32.load offset=4 - (get_local $P) - ) - (i32.const -8) - ) - (get_local $e) + (set_local $s + (i32.lt_u + (set_local $i + (i32.sub + (i32.and + (i32.load offset=4 + (get_local $P) ) + (i32.const -8) ) - (get_local $O) + (get_local $e) ) ) + (get_local $O) + ) + ) + (set_local $g + (select (get_local $i) (get_local $O) + (get_local $s) ) ) (set_local $i - (if - (get_local $s) + (select (get_local $P) (get_local $Q) + (get_local $s) ) ) (if @@ -2753,11 +2754,7 @@ (set_local $q (i32.shl (get_local $U) - (if - (i32.eq - (get_local $ba) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -2766,6 +2763,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $ba) + (i32.const 31) + ) ) ) ) @@ -3831,27 +3832,32 @@ (get_local $ia) ) ) - (set_local $ca - (if - (i32.eq - (i32.and - (set_local $ka - (i32.add - (get_local $ja) - (i32.const 8) + (set_local $ka + (i32.add + (get_local $ja) + (set_local $ca + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $ka + (i32.add + (get_local $ja) + (i32.const 8) + ) + ) ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $ka) + (i32.const 7) + ) + (i32.const 0) ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $ka) ) - (i32.const 7) ) ) ) @@ -3868,12 +3874,7 @@ ) (i32.store (i32.const 1232) - (set_local $ka - (i32.add - (get_local $ja) - (get_local $ca) - ) - ) + (get_local $ka) ) (i32.store (i32.const 1220) @@ -4008,26 +4009,26 @@ (set_local $ca (i32.add (get_local $ha) - (if - (i32.eq - (i32.and + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) (set_local $ka (i32.add (get_local $ha) (i32.const 8) ) ) - (i32.const 7) ) - (i32.const 0) + (i32.const 7) ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) + (i32.eq + (i32.and (get_local $ka) + (i32.const 7) ) - (i32.const 7) + (i32.const 0) ) ) ) @@ -4035,26 +4036,26 @@ (set_local $ma (i32.add (get_local $c) - (if - (i32.eq - (i32.and + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) (set_local $ka (i32.add (get_local $c) (i32.const 8) ) ) - (i32.const 7) ) - (i32.const 0) + (i32.const 7) ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) + (i32.eq + (i32.and (get_local $ka) + (i32.const 7) ) - (i32.const 7) + (i32.const 0) ) ) ) @@ -4985,11 +4986,7 @@ (set_local $aa (i32.shl (get_local $Ea) - (if - (i32.eq - (get_local $Ha) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -4998,6 +4995,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $Ha) + (i32.const 31) + ) ) ) ) @@ -5227,30 +5228,32 @@ (set_local $ka (i32.add (set_local $ca - (if - (i32.lt_u - (set_local $ka - (i32.add - (get_local $ca) - (if - (i32.eq - (i32.and - (get_local $ea) - (i32.const 7) - ) + (select + (get_local $ja) + (set_local $ka + (i32.add + (get_local $ca) + (select + (i32.const 0) + (i32.and + (i32.sub (i32.const 0) + (get_local $ea) ) - (i32.const 0) + (i32.const 7) + ) + (i32.eq (i32.and - (i32.sub - (i32.const 0) - (get_local $ea) - ) + (get_local $ea) (i32.const 7) ) + (i32.const 0) ) ) ) + ) + (i32.lt_u + (get_local $ka) (set_local $ea (i32.add (get_local $ja) @@ -5258,43 +5261,40 @@ ) ) ) - (get_local $ja) - (get_local $ka) ) ) (i32.const 8) ) ) - (set_local $c - (if - (i32.eq - (i32.and - (set_local $ma - (i32.add - (get_local $ha) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $ma) - ) - (i32.const 7) - ) - ) - ) (i32.store (i32.const 1232) (set_local $ma (i32.add (get_local $ha) - (get_local $c) + (set_local $c + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $ma + (i32.add + (get_local $ha) + (i32.const 8) + ) + ) + ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $ma) + (i32.const 7) + ) + (i32.const 0) + ) + ) + ) ) ) ) @@ -5701,11 +5701,7 @@ (set_local $ma (i32.shl (get_local $ka) - (if - (i32.eq - (get_local $Oa) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -5714,6 +5710,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $Oa) + (i32.const 31) + ) ) ) ) @@ -5957,36 +5957,35 @@ ) ) ) - (set_local $c - (if - (i32.eq - (i32.and - (set_local $ma - (i32.add - (get_local $ha) - (i32.const 8) - ) - ) - (i32.const 7) - ) - (i32.const 0) - ) - (i32.const 0) - (i32.and - (i32.sub - (i32.const 0) - (get_local $ma) - ) - (i32.const 7) - ) - ) - ) (i32.store (i32.const 1232) (set_local $ma (i32.add (get_local $ha) - (get_local $c) + (set_local $c + (select + (i32.const 0) + (i32.and + (i32.sub + (i32.const 0) + (set_local $ma + (i32.add + (get_local $ha) + (i32.const 8) + ) + ) + ) + (i32.const 7) + ) + (i32.eq + (i32.and + (get_local $ma) + (i32.const 7) + ) + (i32.const 0) + ) + ) + ) ) ) ) @@ -7742,11 +7741,7 @@ (set_local $F (i32.shl (get_local $D) - (if - (i32.eq - (get_local $G) - (i32.const 31) - ) + (select (i32.const 0) (i32.sub (i32.const 25) @@ -7755,6 +7750,10 @@ (i32.const 1) ) ) + (i32.eq + (get_local $G) + (i32.const 31) + ) ) ) ) diff --git a/test/passes/remove-unused-brs.txt b/test/passes/remove-unused-brs.txt index 153075b1a..a7bd70ecc 100644 --- a/test/passes/remove-unused-brs.txt +++ b/test/passes/remove-unused-brs.txt @@ -90,8 +90,7 @@ ) (func $b12-yes (result i32) (block $topmost - (if - (i32.const 1) + (select (block $block1 (i32.const 12) (i32.const 1) @@ -100,6 +99,7 @@ (i32.const 27) (i32.const 2) ) + (i32.const 1) ) ) ) @@ -126,14 +126,14 @@ ) (func $b14 (result i32) (block $topmost - (if - (i32.const 1) + (select (block $block1 (i32.const 12) ) (block $block3 (i32.const 27) ) + (i32.const 1) ) ) ) @@ -174,38 +174,38 @@ ) (func $b17 (block $a - (if - (i32.const 0) + (select (block $block1 ) (block $block3 ) + (i32.const 0) ) ) (block $a - (if - (i32.const 0) + (select (i32.const 1) (block $block6 ) + (i32.const 0) ) ) (block $a - (if - (i32.const 0) + (select (block $block8 ) (i32.const 1) + (i32.const 0) ) ) (block $c (block $b - (if - (i32.const 0) + (select (block $block11 ) (block $block13 ) + (i32.const 0) ) ) ) @@ -221,11 +221,11 @@ ) (func $ret-3 (block $block0 - (if - (i32.const 0) + (select (nop) (block $block3 ) + (i32.const 0) ) ) ) @@ -236,4 +236,49 @@ ) ) ) + (func $no-select-but-the-last + (block $a + (if + (i32.const 0) + (i32.const 1) + (block $block2 + (br $a + (i32.const 2) + ) + (i32.const 3) + ) + ) + (if + (i32.const 0) + (block $block4 + (br $a + (i32.const 2) + ) + (i32.const 3) + ) + (i32.const 1) + ) + (if + (block $block6 + (br $a + (i32.const 2) + ) + (i32.const 3) + ) + (i32.const 0) + (i32.const 1) + ) + (select + (block $a + (i32.const 1) + ) + (block $a + (i32.const 2) + ) + (block $a + (i32.const 0) + ) + ) + ) + ) ) diff --git a/test/passes/remove-unused-brs.wast b/test/passes/remove-unused-brs.wast index 8d614c041..dc67ad4da 100644 --- a/test/passes/remove-unused-brs.wast +++ b/test/passes/remove-unused-brs.wast @@ -258,5 +258,44 @@ ) ) ) + (func $no-select-but-the-last + (block $a + (if + (i32.const 0) + (i32.const 1) + (block + (br $a (i32.const 2)) + (i32.const 3) + ) + ) + (if + (i32.const 0) + (block + (br $a (i32.const 2)) + (i32.const 3) + ) + (i32.const 1) + ) + (if + (block + (br $a (i32.const 2)) + (i32.const 3) + ) + (i32.const 0) + (i32.const 1) + ) + (if ;; brs to the inner $a's get removed, the it is selectifiable + (block $a + (br $a (i32.const 0)) + ) + (block $a + (br $a (i32.const 1)) + ) + (block $a + (br $a (i32.const 2)) + ) + ) + ) + ) ) |