diff options
-rw-r--r-- | src/pass.h | 5 | ||||
-rw-r--r-- | src/passes/Inlining.cpp | 3 | ||||
-rw-r--r-- | src/tools/optimization-options.h | 10 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 3 | ||||
-rw-r--r-- | test/lit/help/optimization-opts.test | 5 | ||||
-rw-r--r-- | test/lit/passes/inlining-optimizing_optimize-level=3.wast | 1201 | ||||
-rw-r--r-- | test/lit/passes/inlining_splitting.wast | 2 |
7 files changed, 601 insertions, 628 deletions
diff --git a/src/pass.h b/src/pass.h index 802a34ab5..2bb34aeea 100644 --- a/src/pass.h +++ b/src/pass.h @@ -82,6 +82,11 @@ struct InliningOptions { // Loops usually mean the function does heavy work, so the call overhead // is not significant and we do not inline such functions by default. bool allowFunctionsWithLoops = false; + // The number of ifs to allow partial inlining of their conditions. A value of + // zero disables partial inlining. + // TODO: Investigate enabling this. Locally 4 appears useful on real-world + // code, but reports of regressions have arrived. + Index partialInliningIfs = 0; }; struct PassOptions { diff --git a/src/passes/Inlining.cpp b/src/passes/Inlining.cpp index e1ae4c2a8..7467d2559 100644 --- a/src/passes/Inlining.cpp +++ b/src/passes/Inlining.cpp @@ -641,8 +641,7 @@ private: // without an else. // Find the number of ifs. - // TODO: Investigate more values here. 4 appears useful on real-world code. - const Index MaxIfs = 4; + const Index MaxIfs = options.inlining.partialInliningIfs; Index numIfs = 0; while (getIf(body, numIfs) && numIfs <= MaxIfs) { numIfs++; diff --git a/src/tools/optimization-options.h b/src/tools/optimization-options.h index 58a8e3980..8d526f92f 100644 --- a/src/tools/optimization-options.h +++ b/src/tools/optimization-options.h @@ -171,6 +171,16 @@ struct OptimizationOptions : public ToolOptions { [this](Options* o, const std::string&) { passOptions.inlining.allowFunctionsWithLoops = true; }) + .add("--partial-inlining-ifs", + "-pii", + "Number of ifs allowed in partial inlining (zero means partial " + "inlining is disabled) (default: " + + std::to_string(InliningOptions().partialInliningIfs) + ')', + Options::Arguments::One, + [this](Options* o, const std::string& argument) { + passOptions.inlining.partialInliningIfs = + static_cast<Index>(std::stoi(argument)); + }) .add("--ignore-implicit-traps", "-iit", "Optimize under the helpful assumption that no surprising traps " diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c index f493914aa..67a3a7b26 100644 --- a/test/example/c-api-kitchen-sink.c +++ b/test/example/c-api-kitchen-sink.c @@ -263,8 +263,7 @@ void test_features() { printf("BinaryenFeatureMemory64: %d\n", BinaryenFeatureMemory64()); printf("BinaryenFeatureTypedFunctionReferences: %d\n", BinaryenFeatureTypedFunctionReferences()); - printf("BinaryenFeatureRelaxedSIMD: %d\n", - BinaryenFeatureRelaxedSIMD()); + printf("BinaryenFeatureRelaxedSIMD: %d\n", BinaryenFeatureRelaxedSIMD()); printf("BinaryenFeatureAll: %d\n", BinaryenFeatureAll()); } diff --git a/test/lit/help/optimization-opts.test b/test/lit/help/optimization-opts.test index 75e1d72a3..22a730128 100644 --- a/test/lit/help/optimization-opts.test +++ b/test/lit/help/optimization-opts.test @@ -160,6 +160,11 @@ ;; CHECK-NEXT: --inline-functions-with-loops,-ifwl Allow inlining functions with ;; CHECK-NEXT: loops ;; CHECK-NEXT: +;; CHECK-NEXT: --partial-inlining-ifs,-pii Number of ifs allowed in partial +;; CHECK-NEXT: inlining (zero means partial +;; CHECK-NEXT: inlining is disabled) (default: +;; CHECK-NEXT: 0) +;; CHECK-NEXT: ;; CHECK-NEXT: --ignore-implicit-traps,-iit Optimize under the helpful ;; CHECK-NEXT: assumption that no surprising ;; CHECK-NEXT: traps occur (from load, div/mod, diff --git a/test/lit/passes/inlining-optimizing_optimize-level=3.wast b/test/lit/passes/inlining-optimizing_optimize-level=3.wast index 47fe69553..4a4f21f94 100644 --- a/test/lit/passes/inlining-optimizing_optimize-level=3.wast +++ b/test/lit/passes/inlining-optimizing_optimize-level=3.wast @@ -25,12 +25,12 @@ (type $FUNCSIG$i (func (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$vii (func (param i32 i32))) - ;; CHECK: (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) - ;; CHECK: (type $i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32) (result i32))) ;; CHECK: (type $f64_i32_=>_f64 (func (param f64 i32) (result f64))) + ;; CHECK: (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + ;; CHECK: (type $i32_i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32 i32))) ;; CHECK: (import "env" "memory" (memory $0 256 256)) @@ -4065,8 +4065,8 @@ ;; CHECK-NEXT: (local $21 i32) ;; CHECK-NEXT: (local $22 i32) ;; CHECK-NEXT: (local $23 i32) - ;; CHECK-NEXT: (local $24 i32) - ;; CHECK-NEXT: (local $25 f64) + ;; CHECK-NEXT: (local $24 f64) + ;; CHECK-NEXT: (local $25 i32) ;; CHECK-NEXT: (local $26 i32) ;; CHECK-NEXT: (local $27 i32) ;; CHECK-NEXT: (local $28 i32) @@ -4108,26 +4108,26 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (call $abort) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $22 + ;; CHECK-NEXT: (local.set $21 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.get $13) ;; CHECK-NEXT: (i32.const 16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $34 + ;; CHECK-NEXT: (local.set $33 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.get $13) ;; CHECK-NEXT: (i32.const 528) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $29 + ;; CHECK-NEXT: (local.set $28 ;; CHECK-NEXT: (i32.ne ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $37 - ;; CHECK-NEXT: (local.tee $23 + ;; CHECK-NEXT: (local.tee $25 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.tee $5 ;; CHECK-NEXT: (i32.add @@ -4156,7 +4156,7 @@ ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $20 + ;; CHECK-NEXT: (local.set $22 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.tee $5 ;; CHECK-NEXT: (i32.add @@ -4175,9 +4175,9 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $43 ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $20) - ;; CHECK-NEXT: (local.tee $35 - ;; CHECK-NEXT: (local.tee $24 + ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.tee $34 + ;; CHECK-NEXT: (local.tee $23 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.get $13) ;; CHECK-NEXT: (i32.const 588) @@ -4189,12 +4189,12 @@ ;; CHECK-NEXT: (local.set $44 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.const -2) - ;; CHECK-NEXT: (local.get $35) + ;; CHECK-NEXT: (local.get $34) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $45 ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $20) + ;; CHECK-NEXT: (local.get $22) ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -4210,16 +4210,16 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $41 - ;; CHECK-NEXT: (local.tee $26 + ;; CHECK-NEXT: (local.tee $29 ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $24) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: (i32.const 9) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $33 + ;; CHECK-NEXT: (local.set $32 ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $24) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: (i32.const 8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -4352,7 +4352,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $29) + ;; CHECK-NEXT: (local.get $28) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (i32.and @@ -4386,7 +4386,7 @@ ;; CHECK-NEXT: (br $label$continue$L1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (i32.lt_u ;; CHECK-NEXT: (local.tee $8 @@ -4428,7 +4428,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $17 + ;; CHECK-NEXT: (local.set $19 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: (i32.const -1) @@ -4445,7 +4445,7 @@ ;; CHECK-NEXT: (local.set $6 ;; CHECK-NEXT: (local.get $9) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $17 + ;; CHECK-NEXT: (local.set $19 ;; CHECK-NEXT: (i32.const -1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $1) @@ -4619,7 +4619,7 @@ ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $16 + ;; CHECK-NEXT: (local.set $17 ;; CHECK-NEXT: (i32.load ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) @@ -4632,7 +4632,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $18 ;; CHECK-NEXT: (i32.const -1) @@ -4642,7 +4642,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (local.get $29) + ;; CHECK-NEXT: (local.get $28) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $9 @@ -4651,7 +4651,7 @@ ;; CHECK-NEXT: (local.set $11 ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $16 + ;; CHECK-NEXT: (local.set $17 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $do-once5 @@ -4659,7 +4659,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $16 + ;; CHECK-NEXT: (local.set $17 ;; CHECK-NEXT: (i32.load ;; CHECK-NEXT: (local.tee $11 ;; CHECK-NEXT: (i32.and @@ -4690,14 +4690,14 @@ ;; CHECK-NEXT: (local.set $9 ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (i32.lt_s - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $16 + ;; CHECK-NEXT: (local.set $17 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.or @@ -4742,7 +4742,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.lt_u - ;; CHECK-NEXT: (local.tee $8 + ;; CHECK-NEXT: (local.tee $10 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.load8_s ;; CHECK-NEXT: (local.tee $11 @@ -4762,7 +4762,7 @@ ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $6 - ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $while-in8) ;; CHECK-NEXT: ) @@ -4783,10 +4783,10 @@ ;; CHECK-NEXT: (local.set $9 ;; CHECK-NEXT: (local.get $1) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $16 + ;; CHECK-NEXT: (local.set $17 ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -4794,10 +4794,10 @@ ;; CHECK-NEXT: (local.set $9 ;; CHECK-NEXT: (local.get $1) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $16 + ;; CHECK-NEXT: (local.set $17 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -4967,7 +4967,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if (result i32) - ;; CHECK-NEXT: (local.get $29) + ;; CHECK-NEXT: (local.get $28) ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (i32.load @@ -5010,13 +5010,13 @@ ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (local.get $11) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in13 ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.gt_u - ;; CHECK-NEXT: (local.tee $10 + ;; CHECK-NEXT: (local.tee $12 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.load8_s ;; CHECK-NEXT: (local.get $8) @@ -5042,19 +5042,19 @@ ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.lt_u ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.tee $10 + ;; CHECK-NEXT: (local.tee $12 ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.tee $15 ;; CHECK-NEXT: (i32.load8_s ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.mul - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.const 58) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 3611) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -5069,8 +5069,8 @@ ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (local.get $11) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $while-in13) ;; CHECK-NEXT: ) @@ -5090,9 +5090,9 @@ ;; CHECK-NEXT: (br $label$break$L1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $19 + ;; CHECK-NEXT: (local.set $16 ;; CHECK-NEXT: (i32.gt_s - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: (i32.const -1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -5107,7 +5107,7 @@ ;; CHECK-NEXT: (i32.const 19) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $18 ;; CHECK-NEXT: (i32.const -1) @@ -5118,25 +5118,25 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (i32.store ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.get $4) ;; CHECK-NEXT: (i32.shl - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $15 ;; CHECK-NEXT: (i32.load offset=4 - ;; CHECK-NEXT: (local.tee $10 + ;; CHECK-NEXT: (local.tee $12 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.get $3) ;; CHECK-NEXT: (i32.shl - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: (i32.const 3) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -5146,7 +5146,7 @@ ;; CHECK-NEXT: (i32.store ;; CHECK-NEXT: (local.get $13) ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store offset=4 @@ -5158,7 +5158,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (local.get $29) + ;; CHECK-NEXT: (local.get $28) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $18 @@ -5169,7 +5169,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (call $_pop_arg_336 ;; CHECK-NEXT: (local.get $13) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (local.get $2) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -5178,7 +5178,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (local.get $29) + ;; CHECK-NEXT: (local.get $28) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $5 @@ -5193,7 +5193,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $9 ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.tee $10 + ;; CHECK-NEXT: (local.tee $12 ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.get $9) ;; CHECK-NEXT: (i32.const -65537) @@ -5213,7 +5213,7 @@ ;; CHECK-NEXT: (select ;; CHECK-NEXT: (local.tee $5 ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.tee $10 + ;; CHECK-NEXT: (local.tee $12 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (local.tee $15 ;; CHECK-NEXT: (i32.sub @@ -5222,7 +5222,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.tee $7 ;; CHECK-NEXT: (block $__rjti$7 (result i32) ;; CHECK-NEXT: (block $__rjti$6 @@ -5264,7 +5264,7 @@ ;; CHECK-NEXT: (i32.const 3) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.ne - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -5283,7 +5283,7 @@ ;; CHECK-NEXT: (block $switch-case20 ;; CHECK-NEXT: (block $switch-case19 ;; CHECK-NEXT: (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store @@ -5463,7 +5463,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $8 - ;; CHECK-NEXT: (local.get $23) + ;; CHECK-NEXT: (local.get $25) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in32 ;; CHECK-NEXT: (i32.store8 @@ -5498,7 +5498,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $8 - ;; CHECK-NEXT: (local.get $23) + ;; CHECK-NEXT: (local.get $25) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if @@ -5506,27 +5506,32 @@ ;; CHECK-NEXT: (local.get $9) ;; CHECK-NEXT: (i32.const 8) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $6 - ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.tee $5 - ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $37) - ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (local.set $7 + ;; CHECK-NEXT: (local.get $9) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $6 + ;; CHECK-NEXT: (select + ;; CHECK-NEXT: (local.tee $5 + ;; CHECK-NEXT: (i32.add + ;; CHECK-NEXT: (i32.sub + ;; CHECK-NEXT: (local.get $37) + ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (i32.gt_s - ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (local.get $6) + ;; CHECK-NEXT: (i32.gt_s + ;; CHECK-NEXT: (local.get $5) + ;; CHECK-NEXT: (local.get $6) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $7 - ;; CHECK-NEXT: (local.get $9) + ;; CHECK-NEXT: (local.set $7 + ;; CHECK-NEXT: (local.get $9) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $5 ;; CHECK-NEXT: (local.get $8) @@ -5534,7 +5539,7 @@ ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.const 4091) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $__rjti$8) @@ -5584,13 +5589,13 @@ ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.const 4091) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $__rjti$4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.get $9) @@ -5634,7 +5639,7 @@ ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.const 4091) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $__rjti$4) @@ -5654,19 +5659,19 @@ ;; CHECK-NEXT: (local.get $38) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $9 - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.const 4091) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $__rjto$8 - ;; CHECK-NEXT: (local.get $23) + ;; CHECK-NEXT: (local.get $25) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $5 @@ -5801,7 +5806,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (local.get $9) ;; CHECK-NEXT: ) @@ -5817,7 +5822,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (f64.store @@ -5905,11 +5910,11 @@ ;; CHECK-NEXT: (if ;; CHECK-NEXT: (local.tee $5 ;; CHECK-NEXT: (f64.ne - ;; CHECK-NEXT: (local.tee $25 + ;; CHECK-NEXT: (local.tee $24 ;; CHECK-NEXT: (f64.mul ;; CHECK-NEXT: (call $_frexp ;; CHECK-NEXT: (local.get $14) - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (f64.const 2) ;; CHECK-NEXT: ) @@ -5918,10 +5923,10 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) @@ -5929,7 +5934,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eq - ;; CHECK-NEXT: (local.tee $21 + ;; CHECK-NEXT: (local.tee $26 ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (local.get $15) ;; CHECK-NEXT: (i32.const 32) @@ -5945,7 +5950,7 @@ ;; CHECK-NEXT: (i32.const 9) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $30) - ;; CHECK-NEXT: (local.tee $19 + ;; CHECK-NEXT: (local.tee $16 ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.get $15) ;; CHECK-NEXT: (i32.const 32) @@ -5969,7 +5974,7 @@ ;; CHECK-NEXT: (i32.const 11) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: (local.get $24) ;; CHECK-NEXT: (block (result f64) ;; CHECK-NEXT: (local.set $14 ;; CHECK-NEXT: (f64.const 8) @@ -5996,7 +6001,7 @@ ;; CHECK-NEXT: (local.get $14) ;; CHECK-NEXT: (f64.sub ;; CHECK-NEXT: (f64.neg - ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: (local.get $24) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $14) ;; CHECK-NEXT: ) @@ -6004,7 +6009,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (f64.sub ;; CHECK-NEXT: (f64.add - ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: (local.get $24) ;; CHECK-NEXT: (local.get $14) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $14) @@ -6026,59 +6031,40 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $5 - ;; CHECK-NEXT: (local.tee $8 - ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.tee $7 - ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (i32.eq + ;; CHECK-NEXT: (local.tee $5 + ;; CHECK-NEXT: (call $_fmt_u + ;; CHECK-NEXT: (local.tee $5 + ;; CHECK-NEXT: (select + ;; CHECK-NEXT: (i32.sub + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (local.tee $7 + ;; CHECK-NEXT: (i32.load + ;; CHECK-NEXT: (local.get $21) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (i32.lt_s ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (i32.lt_s + ;; CHECK-NEXT: (local.get $7) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.tee $8 ;; CHECK-NEXT: (i32.shr_s ;; CHECK-NEXT: (i32.shl ;; CHECK-NEXT: (i32.lt_s - ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 31) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 31) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (call $byn-split-outlined-B$_fmt_u - ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (local.get $20) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (call $byn-split-outlined-B$_fmt_u_0 - ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (local.get $20) + ;; CHECK-NEXT: (local.get $22) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.eq - ;; CHECK-NEXT: (local.tee $5 - ;; CHECK-NEXT: (local.get $20) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $20) - ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.get $22) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (i32.store8 @@ -6124,7 +6110,7 @@ ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $17 + ;; CHECK-NEXT: (local.set $20 ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.get $9) @@ -6133,7 +6119,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $5 - ;; CHECK-NEXT: (local.get $24) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in56 ;; CHECK-NEXT: (i32.store8 @@ -6170,7 +6156,7 @@ ;; CHECK-NEXT: (i32.const 4075) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $14 @@ -6194,13 +6180,13 @@ ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $35) + ;; CHECK-NEXT: (local.get $34) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.get $15) ;; CHECK-NEXT: (f64.eq @@ -6234,7 +6220,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.tee $7 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.tee $6 @@ -6293,7 +6279,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 48) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.xor ;; CHECK-NEXT: (local.get $9) @@ -6303,7 +6289,7 @@ ;; CHECK-NEXT: (local.set $5 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $35) + ;; CHECK-NEXT: (local.get $34) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if @@ -6317,7 +6303,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $___fwritex - ;; CHECK-NEXT: (local.get $24) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: ) @@ -6332,7 +6318,7 @@ ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (local.tee $6 ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $20) + ;; CHECK-NEXT: (local.get $22) ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6361,7 +6347,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.xor ;; CHECK-NEXT: (local.get $9) @@ -6370,11 +6356,11 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $do-once49 ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.lt_s ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6385,28 +6371,28 @@ ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (block (result f64) ;; CHECK-NEXT: (i32.store - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: (local.tee $5 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 28) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (f64.mul - ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: (local.get $24) ;; CHECK-NEXT: (f64.const 268435456) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result f64) ;; CHECK-NEXT: (local.set $5 ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: (local.get $24) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6477,9 +6463,9 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.gt_s - ;; CHECK-NEXT: (local.tee $12 + ;; CHECK-NEXT: (local.tee $10 ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 0) @@ -6489,19 +6475,19 @@ ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in62 - ;; CHECK-NEXT: (local.set $19 + ;; CHECK-NEXT: (local.set $16 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (i32.const 29) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.gt_s - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.const 29) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.ge_u - ;; CHECK-NEXT: (local.tee $12 + ;; CHECK-NEXT: (local.tee $10 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.const 4) @@ -6510,58 +6496,58 @@ ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block $do-once63 - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in66 ;; CHECK-NEXT: (i32.store - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (call $___uremdi3 ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (global.set $tempRet0 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.gt_u - ;; CHECK-NEXT: (local.tee $17 + ;; CHECK-NEXT: (local.tee $20 ;; CHECK-NEXT: (call $_bitshift64Shl ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.tee $10 + ;; CHECK-NEXT: (local.tee $12 ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $10) - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (global.get $tempRet0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.tee $17 + ;; CHECK-NEXT: (local.tee $20 ;; CHECK-NEXT: (global.get $tempRet0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 1000000000) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (call $___udivdi3 - ;; CHECK-NEXT: (local.get $10) - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: (i32.const 1000000000) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br_if $while-in66 ;; CHECK-NEXT: (i32.ge_u - ;; CHECK-NEXT: (local.tee $12 + ;; CHECK-NEXT: (local.tee $10 ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6571,7 +6557,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br_if $do-once63 ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store @@ -6581,7 +6567,7 @@ ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6612,19 +6598,19 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store - ;; CHECK-NEXT: (local.get $22) - ;; CHECK-NEXT: (local.tee $12 + ;; CHECK-NEXT: (local.get $21) + ;; CHECK-NEXT: (local.tee $10 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br_if $while-in62 ;; CHECK-NEXT: (i32.gt_s - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6634,7 +6620,7 @@ ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $17 + ;; CHECK-NEXT: (local.set $19 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (i32.const 6) ;; CHECK-NEXT: (local.get $6) @@ -6646,15 +6632,15 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.lt_s - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block - ;; CHECK-NEXT: (local.set $19 + ;; CHECK-NEXT: (local.set $20 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.div_s ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: (i32.const 25) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 9) @@ -6662,9 +6648,9 @@ ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $28 + ;; CHECK-NEXT: (local.set $31 ;; CHECK-NEXT: (i32.eq - ;; CHECK-NEXT: (local.get $21) + ;; CHECK-NEXT: (local.get $26) ;; CHECK-NEXT: (i32.const 102) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6676,13 +6662,13 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $5 ;; CHECK-NEXT: (loop $while-in70 (result i32) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $16 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (i32.const 9) ;; CHECK-NEXT: (local.tee $7 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.gt_s @@ -6697,22 +6683,22 @@ ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block $do-once71 - ;; CHECK-NEXT: (local.set $31 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.shl ;; CHECK-NEXT: (i32.const 1) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $36 + ;; CHECK-NEXT: (local.set $35 ;; CHECK-NEXT: (i32.shr_u ;; CHECK-NEXT: (i32.const 1000000000) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $7 @@ -6722,24 +6708,24 @@ ;; CHECK-NEXT: (i32.store ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.shr_u - ;; CHECK-NEXT: (local.tee $32 + ;; CHECK-NEXT: (local.tee $10 ;; CHECK-NEXT: (i32.load ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.mul ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.get $31) - ;; CHECK-NEXT: (local.get $32) + ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $36) + ;; CHECK-NEXT: (local.get $35) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br_if $while-in74 @@ -6768,12 +6754,12 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br_if $do-once71 ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $5 ;; CHECK-NEXT: (i32.add @@ -6795,18 +6781,18 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $5 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.tee $6 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $28) + ;; CHECK-NEXT: (local.get $31) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.shl - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6819,35 +6805,38 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store - ;; CHECK-NEXT: (local.get $22) - ;; CHECK-NEXT: (local.tee $12 + ;; CHECK-NEXT: (local.get $21) + ;; CHECK-NEXT: (local.tee $10 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (i32.lt_s - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $6 ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $5 + ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $while-in70) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $12 - ;; CHECK-NEXT: (local.get $5) + ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: ) @@ -6855,24 +6844,24 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $19 + ;; CHECK-NEXT: (local.set $20 ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.lt_u ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block $do-once75 ;; CHECK-NEXT: (local.set $7 ;; CHECK-NEXT: (i32.mul ;; CHECK-NEXT: (i32.shr_s ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 2) @@ -6923,12 +6912,12 @@ ;; CHECK-NEXT: (local.tee $6 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: (select ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (i32.ne - ;; CHECK-NEXT: (local.get $21) + ;; CHECK-NEXT: (local.get $26) ;; CHECK-NEXT: (i32.const 102) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6938,13 +6927,13 @@ ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.tee $31 ;; CHECK-NEXT: (i32.ne - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.tee $36 + ;; CHECK-NEXT: (local.tee $35 ;; CHECK-NEXT: (i32.eq - ;; CHECK-NEXT: (local.get $21) + ;; CHECK-NEXT: (local.get $26) ;; CHECK-NEXT: (i32.const 103) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -6959,8 +6948,8 @@ ;; CHECK-NEXT: (i32.mul ;; CHECK-NEXT: (i32.shr_s ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $12) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) @@ -6995,13 +6984,13 @@ ;; CHECK-NEXT: (i32.const 9) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (i32.const 10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in80 - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (i32.mul - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (i32.const 10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7018,17 +7007,17 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (i32.const 10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $8 - ;; CHECK-NEXT: (local.tee $21 + ;; CHECK-NEXT: (local.set $16 + ;; CHECK-NEXT: (local.tee $8 ;; CHECK-NEXT: (i32.load ;; CHECK-NEXT: (local.tee $6 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: (i32.shl ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: (i32.const 2) @@ -7040,39 +7029,40 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $16 + ;; CHECK-NEXT: (if (result i32) + ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (i32.rem_u + ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.tee $28 + ;; CHECK-NEXT: (local.tee $26 ;; CHECK-NEXT: (i32.eq ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (local.tee $8 - ;; CHECK-NEXT: (if (result i32) - ;; CHECK-NEXT: (local.get $10) - ;; CHECK-NEXT: (i32.rem_u - ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (local.get $10) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block $do-once81 - ;; CHECK-NEXT: (local.set $32 + ;; CHECK-NEXT: (local.set $36 ;; CHECK-NEXT: (if (result i32) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (i32.div_u - ;; CHECK-NEXT: (local.get $21) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -7080,10 +7070,10 @@ ;; CHECK-NEXT: (local.set $14 ;; CHECK-NEXT: (if (result f64) ;; CHECK-NEXT: (i32.lt_u - ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: (local.tee $48 ;; CHECK-NEXT: (i32.div_s - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7093,21 +7083,21 @@ ;; CHECK-NEXT: (f64.const 1) ;; CHECK-NEXT: (f64.const 1.5) ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.get $28) + ;; CHECK-NEXT: (local.get $26) ;; CHECK-NEXT: (i32.eq - ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: (local.get $48) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $25 + ;; CHECK-NEXT: (local.set $24 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (f64.const 9007199254740994) ;; CHECK-NEXT: (f64.const 9007199254740992) ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.get $32) + ;; CHECK-NEXT: (local.get $36) ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7122,9 +7112,9 @@ ;; CHECK-NEXT: (i32.const 45) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block - ;; CHECK-NEXT: (local.set $25 + ;; CHECK-NEXT: (local.set $24 ;; CHECK-NEXT: (f64.neg - ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: (local.get $24) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $14 @@ -7139,18 +7129,18 @@ ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: (local.tee $8 ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $21) ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br_if $do-once81 ;; CHECK-NEXT: (f64.eq ;; CHECK-NEXT: (f64.add - ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: (local.get $24) ;; CHECK-NEXT: (local.get $14) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: (local.get $24) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store @@ -7158,7 +7148,7 @@ ;; CHECK-NEXT: (local.tee $7 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7215,7 +7205,7 @@ ;; CHECK-NEXT: (i32.mul ;; CHECK-NEXT: (i32.shr_s ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 2) @@ -7233,7 +7223,7 @@ ;; CHECK-NEXT: (i32.const 10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (i32.const 10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in88 @@ -7246,9 +7236,9 @@ ;; CHECK-NEXT: (br_if $while-in88 ;; CHECK-NEXT: (i32.ge_u ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (local.tee $10 + ;; CHECK-NEXT: (local.tee $12 ;; CHECK-NEXT: (i32.mul - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (i32.const 10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7257,7 +7247,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $8 @@ -7270,40 +7260,40 @@ ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.lt_u ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $32 + ;; CHECK-NEXT: (local.set $36 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (loop $while-in90 (result i32) ;; CHECK-NEXT: (block $while-out89 (result i32) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.le_u ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block - ;; CHECK-NEXT: (local.set $28 + ;; CHECK-NEXT: (local.set $26 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $while-out89 @@ -7321,7 +7311,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $28 + ;; CHECK-NEXT: (local.set $26 ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $5) @@ -7339,14 +7329,14 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.tee $8 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.tee $5 ;; CHECK-NEXT: (if (result i32) - ;; CHECK-NEXT: (local.get $36) + ;; CHECK-NEXT: (local.get $35) ;; CHECK-NEXT: (block $do-once91 (result i32) ;; CHECK-NEXT: (local.set $7 ;; CHECK-NEXT: (if (result i32) @@ -7357,7 +7347,7 @@ ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (local.get $31) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $8) @@ -7368,7 +7358,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $17 + ;; CHECK-NEXT: (local.set $19 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (local.get $5) @@ -7383,7 +7373,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $17 + ;; CHECK-NEXT: (local.set $19 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (i32.const 1) @@ -7398,8 +7388,8 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br_if $do-once91 - ;; CHECK-NEXT: (local.get $17) - ;; CHECK-NEXT: (local.tee $21 + ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.tee $16 ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.get $9) ;; CHECK-NEXT: (i32.const 8) @@ -7408,14 +7398,14 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $28) + ;; CHECK-NEXT: (local.get $26) ;; CHECK-NEXT: (block $do-once93 ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (local.tee $15 ;; CHECK-NEXT: (i32.load ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7458,7 +7448,7 @@ ;; CHECK-NEXT: (br_if $while-in96 ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (if (result i32) - ;; CHECK-NEXT: (local.tee $21 + ;; CHECK-NEXT: (local.tee $16 ;; CHECK-NEXT: (local.tee $6 ;; CHECK-NEXT: (i32.mul ;; CHECK-NEXT: (local.get $6) @@ -7468,7 +7458,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.rem_u ;; CHECK-NEXT: (local.get $15) - ;; CHECK-NEXT: (local.get $21) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -7485,8 +7475,8 @@ ;; CHECK-NEXT: (i32.mul ;; CHECK-NEXT: (i32.shr_s ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $12) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) @@ -7504,11 +7494,11 @@ ;; CHECK-NEXT: (i32.const 102) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $21 + ;; CHECK-NEXT: (local.set $16 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: (local.tee $5 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (i32.const 0) @@ -7526,16 +7516,16 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.gt_s ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $21 + ;; CHECK-NEXT: (local.set $16 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: (local.tee $5 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (i32.const 0) @@ -7556,14 +7546,14 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.gt_s ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $21 + ;; CHECK-NEXT: (local.set $16 ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.get $9) ;; CHECK-NEXT: (i32.const 8) @@ -7572,7 +7562,7 @@ ;; CHECK-NEXT: (local.set $7 ;; CHECK-NEXT: (local.get $15) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7582,10 +7572,10 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.ne - ;; CHECK-NEXT: (local.tee $17 + ;; CHECK-NEXT: (local.tee $19 ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $21) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 0) @@ -7616,55 +7606,36 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $6 - ;; CHECK-NEXT: (local.tee $15 - ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $32) - ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (i32.lt_s - ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (i32.lt_s + ;; CHECK-NEXT: (i32.sub + ;; CHECK-NEXT: (local.get $22) + ;; CHECK-NEXT: (local.tee $6 + ;; CHECK-NEXT: (call $_fmt_u + ;; CHECK-NEXT: (local.tee $6 + ;; CHECK-NEXT: (select + ;; CHECK-NEXT: (local.get $36) + ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (i32.lt_s + ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.tee $15 - ;; CHECK-NEXT: (i32.shr_s - ;; CHECK-NEXT: (i32.shl - ;; CHECK-NEXT: (i32.lt_s - ;; CHECK-NEXT: (local.get $15) - ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (i32.shr_s + ;; CHECK-NEXT: (i32.shl + ;; CHECK-NEXT: (i32.lt_s + ;; CHECK-NEXT: (local.get $6) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 31) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 31) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 31) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (call $byn-split-outlined-B$_fmt_u - ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (local.get $15) - ;; CHECK-NEXT: (local.get $20) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (call $byn-split-outlined-B$_fmt_u_0 - ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (local.get $15) - ;; CHECK-NEXT: (local.get $20) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.lt_s - ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $20) - ;; CHECK-NEXT: (local.tee $6 - ;; CHECK-NEXT: (local.get $20) + ;; CHECK-NEXT: (local.get $22) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 2) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in98 ;; CHECK-NEXT: (i32.store8 @@ -7679,7 +7650,7 @@ ;; CHECK-NEXT: (br_if $while-in98 ;; CHECK-NEXT: (i32.lt_s ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $20) + ;; CHECK-NEXT: (local.get $22) ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 2) @@ -7713,7 +7684,7 @@ ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $20) + ;; CHECK-NEXT: (local.get $22) ;; CHECK-NEXT: (local.get $15) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7742,7 +7713,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 48) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: (i32.xor ;; CHECK-NEXT: (local.get $9) @@ -7753,59 +7724,53 @@ ;; CHECK-NEXT: (local.get $31) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $6 - ;; CHECK-NEXT: (local.tee $10 + ;; CHECK-NEXT: (local.tee $12 ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $19) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $20) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (i32.gt_u - ;; CHECK-NEXT: (local.get $10) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in102 - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.tee $7 + ;; CHECK-NEXT: (local.set $7 + ;; CHECK-NEXT: (call $_fmt_u ;; CHECK-NEXT: (i32.load ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (call $byn-split-outlined-B$_fmt_u_0 - ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.get $26) + ;; CHECK-NEXT: (local.get $29) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $7 - ;; CHECK-NEXT: (local.get $26) - ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block $do-once103 ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eq ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (br_if $do-once103 ;; CHECK-NEXT: (i32.ne ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $26) + ;; CHECK-NEXT: (local.get $29) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.store8 - ;; CHECK-NEXT: (local.get $33) + ;; CHECK-NEXT: (local.get $32) ;; CHECK-NEXT: (i32.const 48) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $7 - ;; CHECK-NEXT: (local.get $33) + ;; CHECK-NEXT: (local.get $32) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (br_if $do-once103 ;; CHECK-NEXT: (i32.le_u ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $24) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in106 @@ -7821,7 +7786,7 @@ ;; CHECK-NEXT: (br_if $while-in106 ;; CHECK-NEXT: (i32.gt_u ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $24) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7856,7 +7821,7 @@ ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (local.set $6 @@ -7867,7 +7832,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $19) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (i32.and @@ -7894,7 +7859,7 @@ ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (i32.lt_u ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.gt_s ;; CHECK-NEXT: (local.get $5) @@ -7903,25 +7868,17 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in110 (result i32) ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.tee $6 + ;; CHECK-NEXT: (i32.gt_u + ;; CHECK-NEXT: (local.tee $6 + ;; CHECK-NEXT: (call $_fmt_u ;; CHECK-NEXT: (i32.load ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (call $byn-split-outlined-B$_fmt_u_0 - ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.get $26) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.gt_u - ;; CHECK-NEXT: (local.tee $6 - ;; CHECK-NEXT: (local.get $26) + ;; CHECK-NEXT: (local.get $29) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $24) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in112 ;; CHECK-NEXT: (i32.store8 @@ -7936,7 +7893,7 @@ ;; CHECK-NEXT: (br_if $while-in112 ;; CHECK-NEXT: (i32.gt_u ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (local.get $24) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -7980,7 +7937,7 @@ ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.gt_s ;; CHECK-NEXT: (local.get $5) @@ -8005,14 +7962,14 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block $do-once99 - ;; CHECK-NEXT: (local.set $19 + ;; CHECK-NEXT: (local.set $20 ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $28) + ;; CHECK-NEXT: (local.get $26) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (call $_pad @@ -8025,46 +7982,38 @@ ;; CHECK-NEXT: (i32.const -1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $17 + ;; CHECK-NEXT: (local.set $16 ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (local.get $21) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $6 - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $7 ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in114 (result i32) ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.tee $5 + ;; CHECK-NEXT: (i32.eq + ;; CHECK-NEXT: (local.tee $5 + ;; CHECK-NEXT: (call $_fmt_u ;; CHECK-NEXT: (i32.load ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (call $byn-split-outlined-B$_fmt_u_0 - ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: (local.get $26) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.eq - ;; CHECK-NEXT: (local.tee $5 - ;; CHECK-NEXT: (local.get $26) + ;; CHECK-NEXT: (local.get $29) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $26) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.get $29) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (i32.store8 - ;; CHECK-NEXT: (local.get $33) + ;; CHECK-NEXT: (local.get $32) ;; CHECK-NEXT: (i32.const 48) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $5 - ;; CHECK-NEXT: (local.get $33) + ;; CHECK-NEXT: (local.get $32) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -8072,7 +8021,7 @@ ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eq ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block ;; CHECK-NEXT: (if @@ -8100,7 +8049,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br_if $do-once115 ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.get $17) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: (i32.lt_s ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.const 1) @@ -8127,7 +8076,7 @@ ;; CHECK-NEXT: (br_if $do-once115 ;; CHECK-NEXT: (i32.le_u ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $24) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (loop $while-in118 @@ -8143,14 +8092,14 @@ ;; CHECK-NEXT: (br_if $while-in118 ;; CHECK-NEXT: (i32.gt_u ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $24) + ;; CHECK-NEXT: (local.get $23) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (local.get $41) ;; CHECK-NEXT: (local.get $5) @@ -8169,11 +8118,11 @@ ;; CHECK-NEXT: (call $___fwritex ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.gt_s ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $0) @@ -8189,13 +8138,13 @@ ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $20) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.gt_s ;; CHECK-NEXT: (local.tee $7 ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const -1) @@ -8224,7 +8173,7 @@ ;; CHECK-NEXT: (call $___fwritex ;; CHECK-NEXT: (local.get $15) ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $20) + ;; CHECK-NEXT: (local.get $22) ;; CHECK-NEXT: (local.get $15) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $0) @@ -8235,7 +8184,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: (i32.xor ;; CHECK-NEXT: (local.get $9) @@ -8243,11 +8192,11 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: (i32.lt_s ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -8255,7 +8204,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.tee $7 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.tee $8 @@ -8273,7 +8222,7 @@ ;; CHECK-NEXT: (i32.const 3) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.eqz @@ -8342,7 +8291,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.xor ;; CHECK-NEXT: (local.get $9) @@ -8350,11 +8299,11 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.lt_s ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -8371,17 +8320,17 @@ ;; CHECK-NEXT: (local.set $7 ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.const 4091) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $__rjto$8 - ;; CHECK-NEXT: (local.get $23) + ;; CHECK-NEXT: (local.get $25) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $10 @@ -8390,63 +8339,63 @@ ;; CHECK-NEXT: (i32.const 32) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $8 - ;; CHECK-NEXT: (if (result i32) - ;; CHECK-NEXT: (i32.or - ;; CHECK-NEXT: (local.tee $5 - ;; CHECK-NEXT: (i32.load - ;; CHECK-NEXT: (local.get $13) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.tee $9 - ;; CHECK-NEXT: (i32.load offset=4 - ;; CHECK-NEXT: (local.get $13) - ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (if + ;; CHECK-NEXT: (i32.or + ;; CHECK-NEXT: (local.tee $5 + ;; CHECK-NEXT: (i32.load + ;; CHECK-NEXT: (local.get $13) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $8 - ;; CHECK-NEXT: (local.get $23) + ;; CHECK-NEXT: (local.tee $9 + ;; CHECK-NEXT: (i32.load offset=4 + ;; CHECK-NEXT: (local.get $13) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $5 - ;; CHECK-NEXT: (loop $while-in123 (result i32) - ;; CHECK-NEXT: (i32.store8 - ;; CHECK-NEXT: (local.tee $8 - ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (i32.const 1) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.or - ;; CHECK-NEXT: (i32.load8_u - ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (i32.const 15) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 4075) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (local.set $8 + ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $5 + ;; CHECK-NEXT: (loop $while-in123 (result i32) + ;; CHECK-NEXT: (i32.store8 + ;; CHECK-NEXT: (local.tee $8 + ;; CHECK-NEXT: (i32.sub + ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (i32.const 1) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (br_if $while-in123 - ;; CHECK-NEXT: (i32.or - ;; CHECK-NEXT: (local.tee $5 - ;; CHECK-NEXT: (call $_bitshift64Lshr + ;; CHECK-NEXT: (i32.or + ;; CHECK-NEXT: (i32.load8_u + ;; CHECK-NEXT: (i32.add + ;; CHECK-NEXT: (i32.and ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $9) - ;; CHECK-NEXT: (i32.const 4) + ;; CHECK-NEXT: (i32.const 15) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 4075) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.tee $9 - ;; CHECK-NEXT: (global.get $tempRet0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (br_if $while-in123 + ;; CHECK-NEXT: (i32.or + ;; CHECK-NEXT: (local.tee $5 + ;; CHECK-NEXT: (call $_bitshift64Lshr + ;; CHECK-NEXT: (local.get $5) + ;; CHECK-NEXT: (local.get $9) + ;; CHECK-NEXT: (i32.const 4) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.tee $9 + ;; CHECK-NEXT: (global.get $tempRet0) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (i32.eqz @@ -8467,13 +8416,13 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.const 4091) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.shr_s ;; CHECK-NEXT: (local.get $15) @@ -8486,38 +8435,28 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $5 - ;; CHECK-NEXT: (local.get $23) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 - ;; CHECK-NEXT: (i32.const 4091) - ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (local.set $5 + ;; CHECK-NEXT: (local.get $25) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (i32.const 4091) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $__rjti$8) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (call $byn-split-outlined-B$_fmt_u - ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $23) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (if - ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (call $byn-split-outlined-B$_fmt_u_0 + ;; CHECK-NEXT: (local.set $5 + ;; CHECK-NEXT: (call $_fmt_u ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $23) + ;; CHECK-NEXT: (local.get $25) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $5 - ;; CHECK-NEXT: (local.get $23) - ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $7 ;; CHECK-NEXT: (local.get $9) ;; CHECK-NEXT: ) @@ -8527,7 +8466,7 @@ ;; CHECK-NEXT: (block $__rjti$29 ;; CHECK-NEXT: (if ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.tee $9 + ;; CHECK-NEXT: (local.tee $10 ;; CHECK-NEXT: (i32.ne ;; CHECK-NEXT: (local.tee $7 ;; CHECK-NEXT: (local.get $6) @@ -8537,7 +8476,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.ne ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.tee $8 + ;; CHECK-NEXT: (local.tee $9 ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 3) @@ -8545,42 +8484,55 @@ ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (loop $while-in12 - ;; CHECK-NEXT: (br_if $__rjti$29 - ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (i32.load8_u - ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (local.set $8 + ;; CHECK-NEXT: (local.get $9) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (loop $while-in12 + ;; CHECK-NEXT: (br_if $__rjti$29 + ;; CHECK-NEXT: (i32.eqz + ;; CHECK-NEXT: (i32.load8_u + ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (br_if $while-in12 - ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.tee $9 - ;; CHECK-NEXT: (i32.ne - ;; CHECK-NEXT: (local.tee $7 - ;; CHECK-NEXT: (i32.sub - ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (br_if $while-in12 + ;; CHECK-NEXT: (i32.and + ;; CHECK-NEXT: (local.tee $9 + ;; CHECK-NEXT: (i32.ne + ;; CHECK-NEXT: (local.tee $7 + ;; CHECK-NEXT: (i32.sub + ;; CHECK-NEXT: (local.get $7) + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.ne - ;; CHECK-NEXT: (i32.and - ;; CHECK-NEXT: (local.tee $8 - ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $8) - ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (i32.ne + ;; CHECK-NEXT: (i32.and + ;; CHECK-NEXT: (local.tee $8 + ;; CHECK-NEXT: (i32.add + ;; CHECK-NEXT: (local.get $8) + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 3) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 3) + ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (local.set $8 + ;; CHECK-NEXT: (local.get $9) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $9 + ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br_if $__rjti$29 ;; CHECK-NEXT: (local.get $9) @@ -8692,7 +8644,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $19 + ;; CHECK-NEXT: (local.set $16 ;; CHECK-NEXT: (i32.eqz ;; CHECK-NEXT: (local.tee $15 ;; CHECK-NEXT: (select @@ -8704,9 +8656,9 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $9 - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (select ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: (i32.sub @@ -8715,13 +8667,13 @@ ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $8 ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $12 + ;; CHECK-NEXT: (local.set $10 ;; CHECK-NEXT: (i32.const 4091) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (br $__rjto$8 @@ -8731,7 +8683,7 @@ ;; CHECK-NEXT: (local.get $6) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $15) - ;; CHECK-NEXT: (local.get $19) + ;; CHECK-NEXT: (local.get $16) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -8762,7 +8714,7 @@ ;; CHECK-NEXT: (i32.lt_s ;; CHECK-NEXT: (local.tee $7 ;; CHECK-NEXT: (call $_wctomb - ;; CHECK-NEXT: (local.get $34) + ;; CHECK-NEXT: (local.get $33) ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -8811,7 +8763,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $5) ;; CHECK-NEXT: (local.get $9) ;; CHECK-NEXT: ) @@ -8847,7 +8799,7 @@ ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.tee $8 ;; CHECK-NEXT: (call $_wctomb - ;; CHECK-NEXT: (local.get $34) + ;; CHECK-NEXT: (local.get $33) ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -8869,7 +8821,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $___fwritex - ;; CHECK-NEXT: (local.get $34) + ;; CHECK-NEXT: (local.get $33) ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: ) @@ -8904,11 +8856,11 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $11 ;; CHECK-NEXT: (select - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: (i32.lt_s ;; CHECK-NEXT: (local.get $7) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -8927,11 +8879,11 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.set $10 + ;; CHECK-NEXT: (local.set $12 ;; CHECK-NEXT: (if (result i32) ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (local.get $6) - ;; CHECK-NEXT: (local.tee $7 + ;; CHECK-NEXT: (local.tee $12 ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (i32.ne ;; CHECK-NEXT: (i32.load @@ -8953,7 +8905,7 @@ ;; CHECK-NEXT: (local.tee $5 ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (i32.eqz - ;; CHECK-NEXT: (local.get $7) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.sub ;; CHECK-NEXT: (local.get $37) @@ -8970,20 +8922,20 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (block (result i32) ;; CHECK-NEXT: (local.set $7 - ;; CHECK-NEXT: (local.get $23) + ;; CHECK-NEXT: (local.get $25) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $23) + ;; CHECK-NEXT: (local.get $25) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.get $7) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (i32.lt_s - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (local.get $15) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -8991,10 +8943,10 @@ ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: (i32.gt_s ;; CHECK-NEXT: (local.get $5) - ;; CHECK-NEXT: (local.get $16) + ;; CHECK-NEXT: (local.get $17) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) @@ -9012,7 +8964,7 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (call $___fwritex - ;; CHECK-NEXT: (local.get $12) + ;; CHECK-NEXT: (local.get $10) ;; CHECK-NEXT: (local.get $8) ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: ) @@ -9031,7 +8983,7 @@ ;; CHECK-NEXT: (call $_pad ;; CHECK-NEXT: (local.get $0) ;; CHECK-NEXT: (i32.const 48) - ;; CHECK-NEXT: (local.get $10) + ;; CHECK-NEXT: (local.get $12) ;; CHECK-NEXT: (local.get $15) ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) @@ -14894,6 +14846,93 @@ ) ) ) + ;; CHECK: (func $_fmt_u (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + ;; CHECK-NEXT: (local $3 i32) + ;; CHECK-NEXT: (if + ;; CHECK-NEXT: (local.get $1) + ;; CHECK-NEXT: (loop $while-in + ;; CHECK-NEXT: (i32.store8 + ;; CHECK-NEXT: (local.tee $2 + ;; CHECK-NEXT: (i32.sub + ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.or + ;; CHECK-NEXT: (call $___uremdi3 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: (local.get $1) + ;; CHECK-NEXT: (i32.const 10) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 48) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $0 + ;; CHECK-NEXT: (call $___udivdi3 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: (local.get $1) + ;; CHECK-NEXT: (i32.const 10) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $3 + ;; CHECK-NEXT: (global.get $tempRet0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (if + ;; CHECK-NEXT: (i32.gt_u + ;; CHECK-NEXT: (local.get $1) + ;; CHECK-NEXT: (i32.const 9) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (local.set $1 + ;; CHECK-NEXT: (local.get $3) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (br $while-in) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (if + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: (loop $while-in1 + ;; CHECK-NEXT: (i32.store8 + ;; CHECK-NEXT: (local.tee $2 + ;; CHECK-NEXT: (i32.sub + ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.or + ;; CHECK-NEXT: (i32.rem_u + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: (i32.const 10) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 48) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $1 + ;; CHECK-NEXT: (i32.div_u + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: (i32.const 10) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (if + ;; CHECK-NEXT: (i32.ge_u + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: (i32.const 10) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (block + ;; CHECK-NEXT: (local.set $0 + ;; CHECK-NEXT: (local.get $1) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (br $while-in1) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: ) (func $_fmt_u (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -31021,87 +31060,3 @@ ) ) ) -;; CHECK: (func $byn-split-outlined-B$_fmt_u (param $0 i32) (param $1 i32) (param $2 i32) -;; CHECK-NEXT: (local $3 i32) -;; CHECK-NEXT: (loop $while-in -;; CHECK-NEXT: (i32.store8 -;; CHECK-NEXT: (local.tee $2 -;; CHECK-NEXT: (i32.sub -;; CHECK-NEXT: (local.get $2) -;; CHECK-NEXT: (i32.const 1) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (i32.or -;; CHECK-NEXT: (call $___uremdi3 -;; CHECK-NEXT: (local.get $0) -;; CHECK-NEXT: (local.get $1) -;; CHECK-NEXT: (i32.const 10) -;; CHECK-NEXT: (i32.const 0) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (i32.const 48) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (local.set $0 -;; CHECK-NEXT: (call $___udivdi3 -;; CHECK-NEXT: (local.get $0) -;; CHECK-NEXT: (local.get $1) -;; CHECK-NEXT: (i32.const 10) -;; CHECK-NEXT: (i32.const 0) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (local.set $3 -;; CHECK-NEXT: (global.get $tempRet0) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (if -;; CHECK-NEXT: (i32.gt_u -;; CHECK-NEXT: (local.get $1) -;; CHECK-NEXT: (i32.const 9) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (block -;; CHECK-NEXT: (local.set $1 -;; CHECK-NEXT: (local.get $3) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (br $while-in) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) - -;; CHECK: (func $byn-split-outlined-B$_fmt_u_0 (param $0 i32) (param $1 i32) (param $2 i32) -;; CHECK-NEXT: (local $3 i32) -;; CHECK-NEXT: (loop $while-in1 -;; CHECK-NEXT: (i32.store8 -;; CHECK-NEXT: (local.tee $2 -;; CHECK-NEXT: (i32.sub -;; CHECK-NEXT: (local.get $2) -;; CHECK-NEXT: (i32.const 1) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (i32.or -;; CHECK-NEXT: (i32.rem_u -;; CHECK-NEXT: (local.get $0) -;; CHECK-NEXT: (i32.const 10) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (i32.const 48) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (local.set $1 -;; CHECK-NEXT: (i32.div_u -;; CHECK-NEXT: (local.get $0) -;; CHECK-NEXT: (i32.const 10) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (if -;; CHECK-NEXT: (i32.ge_u -;; CHECK-NEXT: (local.get $0) -;; CHECK-NEXT: (i32.const 10) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (block -;; CHECK-NEXT: (local.set $0 -;; CHECK-NEXT: (local.get $1) -;; CHECK-NEXT: ) -;; CHECK-NEXT: (br $while-in1) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) -;; CHECK-NEXT: ) diff --git a/test/lit/passes/inlining_splitting.wast b/test/lit/passes/inlining_splitting.wast index 98168527a..599bb9cc6 100644 --- a/test/lit/passes/inlining_splitting.wast +++ b/test/lit/passes/inlining_splitting.wast @@ -1,6 +1,6 @@ ;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited. -;; RUN: foreach %s %t wasm-opt --inlining --optimize-level=3 --all-features -S -o - | filecheck %s +;; RUN: foreach %s %t wasm-opt --inlining --optimize-level=3 --partial-inlining-ifs=4 --all-features -S -o - | filecheck %s (module ;; CHECK: (type $none_=>_none (func)) |