diff options
-rw-r--r-- | src/pass.h | 7 | ||||
-rw-r--r-- | src/tools/optimization-options.h | 9 | ||||
-rw-r--r-- | test/binaryen.js/inlining-options.js.txt | 2 | ||||
-rw-r--r-- | test/passes/O4_disable-bulk-memory.txt | 708 | ||||
-rw-r--r-- | test/passes/converge_O3_metrics.bin.txt | 356 | ||||
-rw-r--r-- | test/passes/func-metrics.txt | 2 | ||||
-rw-r--r-- | test/passes/inlining-optimizing_optimize-level=3.txt | 2271 | ||||
-rw-r--r-- | test/passes/inlining_optimize-level=3.txt | 83 | ||||
-rw-r--r-- | test/passes/inlining_optimize-level=3.wast | 4 | ||||
-rw-r--r-- | test/wasm2js/conversions-modified.2asm.js.opt | 22 | ||||
-rw-r--r-- | test/wasm2js/i64-add-sub.2asm.js.opt | 22 | ||||
-rw-r--r-- | test/wasm2js/i64-ctz.2asm.js.opt | 70 | ||||
-rw-r--r-- | test/wasm2js/i64-rotate.2asm.js.opt | 148 | ||||
-rw-r--r-- | test/wasm2js/i64-shifts.2asm.js.opt | 50 | ||||
-rw-r--r-- | test/wasm2js/reinterpret.2asm.js.opt | 14 | ||||
-rw-r--r-- | test/wasm2js/stack-modified.2asm.js.opt | 57 | ||||
-rw-r--r-- | test/wasm2js/unaligned.2asm.js.opt | 20 | ||||
-rw-r--r-- | test/wasm2js/unary-ops.2asm.js.opt | 113 |
18 files changed, 1968 insertions, 1990 deletions
diff --git a/src/pass.h b/src/pass.h index 643d9a25a..dd7c67bc1 100644 --- a/src/pass.h +++ b/src/pass.h @@ -69,9 +69,10 @@ struct InliningOptions { // More generally, with 2 items we may have a local.get, but no way to // require it to be saved instead of directly consumed. Index alwaysInlineMaxSize = 2; - // Function size which we inline when there is only one caller. - // FIXME: this should logically be higher than flexibleInlineMaxSize. - Index oneCallerInlineMaxSize = 15; + // Function size which we inline when there is only one caller. By default we + // inline all such functions (as after inlining we can remove the original + // function). + Index oneCallerInlineMaxSize = -1; // Function size above which we never inline, ignoring the various flexible // factors (like whether we are optimizing for size or speed) that could // influence us. diff --git a/src/tools/optimization-options.h b/src/tools/optimization-options.h index 4f5c9e0d1..0e6157473 100644 --- a/src/tools/optimization-options.h +++ b/src/tools/optimization-options.h @@ -155,13 +155,12 @@ struct OptimizationOptions : public ToolOptions { .add("--one-caller-inline-max-function-size", "-ocimfs", "Max size of functions that are inlined when there is only one " - "caller (default " + - std::to_string(InliningOptions().oneCallerInlineMaxSize) + - "). Reason this is not unbounded is that some " - "implementations may have a hard time optimizing really large " - "functions", + "caller (default -1, which means all such functions are inlined)", Options::Arguments::One, [this](Options* o, const std::string& argument) { + static_assert(InliningOptions().oneCallerInlineMaxSize == + Index(-1), + "the help text here is written to assume -1"); passOptions.inlining.oneCallerInlineMaxSize = static_cast<Index>(atoi(argument.c_str())); }) diff --git a/test/binaryen.js/inlining-options.js.txt b/test/binaryen.js/inlining-options.js.txt index b32073a1a..d4b658d45 100644 --- a/test/binaryen.js/inlining-options.js.txt +++ b/test/binaryen.js/inlining-options.js.txt @@ -1,4 +1,4 @@ // alwaysInlineMaxSize=2 // flexibleInlineMaxSize=20 -// oneCallerInlineMaxSize=15 +// oneCallerInlineMaxSize=-1 // allowInliningFunctionsWithLoops=false diff --git a/test/passes/O4_disable-bulk-memory.txt b/test/passes/O4_disable-bulk-memory.txt index bd9dbd6bf..9bf5f71d6 100644 --- a/test/passes/O4_disable-bulk-memory.txt +++ b/test/passes/O4_disable-bulk-memory.txt @@ -9,10 +9,8 @@ (type $0 (func)) (type $11 (func (param i32))) (type $3 (func (param i32) (result i32))) - (type $4 (func (result i32))) (type $f64_f64_f64_f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64 f64 f64 f64) (result i32))) (type $8 (func (result f64))) - (type $10 (func (param i32) (result f64))) (import "env" "memory" (memory $1 1)) (data (i32.const 8) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 40) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00") @@ -113,134 +111,6 @@ ) (local.get $1) ) - (func $assembly/index/NBodySystem#constructor (; has Stack IR ;) (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local $3 f64) - (local $4 f64) - (local $5 f64) - (local $6 f64) - (local $7 i32) - (local.set $7 - (i32.load offset=4 - (local.get $0) - ) - ) - (loop $label$3 - (if - (i32.lt_s - (local.get $1) - (local.get $7) - ) - (block - (local.set $3 - (f64.load offset=48 - (local.tee $2 - (i32.load offset=8 - (i32.add - (i32.load - (local.get $0) - ) - (i32.shl - (local.get $1) - (i32.const 2) - ) - ) - ) - ) - ) - ) - (local.set $4 - (f64.add - (local.get $4) - (f64.mul - (f64.load offset=24 - (local.get $2) - ) - (local.get $3) - ) - ) - ) - (local.set $5 - (f64.add - (local.get $5) - (f64.mul - (f64.load offset=32 - (local.get $2) - ) - (local.get $3) - ) - ) - ) - (local.set $6 - (f64.add - (local.get $6) - (f64.mul - (f64.load offset=40 - (local.get $2) - ) - (local.get $3) - ) - ) - ) - (local.set $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (br $label$3) - ) - ) - ) - (f64.store offset=24 - (local.tee $1 - (if (result i32) - (i32.shr_u - (i32.load - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - ) - (i32.const 2) - ) - (i32.load offset=8 - (local.get $1) - ) - (unreachable) - ) - ) - (f64.div - (local.get $4) - (f64.const -39.47841760435743) - ) - ) - (f64.store offset=32 - (local.get $1) - (f64.div - (local.get $5) - (f64.const -39.47841760435743) - ) - ) - (f64.store offset=40 - (local.get $1) - (f64.div - (local.get $6) - (f64.const -39.47841760435743) - ) - ) - (i32.store - (local.tee $1 - (call $~lib/allocator/arena/__memory_allocate - (i32.const 4) - ) - ) - (local.get $0) - ) - (local.get $1) - ) (func $assembly/index/Body#constructor (; has Stack IR ;) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (result i32) (local $7 i32) (f64.store @@ -277,11 +147,50 @@ ) (local.get $7) ) - (func $~lib/internal/memory/memset (; has Stack IR ;) (param $0 i32) + (func $assembly/index/init (; has Stack IR ;) + (local $0 i32) (local $1 i32) (local $2 i32) - (i32.store8 + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 f64) + (local $7 f64) + (i32.store + (local.tee $0 + (call $~lib/allocator/arena/__memory_allocate + (i32.const 32) + ) + ) + (i32.const 20) + ) + (i32.store + (local.tee $2 + (call $~lib/allocator/arena/__memory_allocate + (i32.const 8) + ) + ) + (i32.const 0) + ) + (i32.store offset=4 + (local.get $2) + (i32.const 0) + ) + (i32.store + (local.get $2) (local.get $0) + ) + (i32.store offset=4 + (local.get $2) + (i32.const 5) + ) + (i32.store8 + (local.tee $0 + (i32.add + (local.get $0) + (i32.const 8) + ) + ) (i32.const 0) ) (i32.store8 @@ -373,228 +282,182 @@ ) (i32.const 0) ) - (if - (i32.le_u - (local.get $1) - (i32.const 8) + (block $__inlined_func$~lib/internal/memory/memset + (br_if $__inlined_func$~lib/internal/memory/memset + (i32.le_u + (local.get $1) + (i32.const 8) + ) ) - (return) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 4) + (i32.store + (i32.add + (local.get $0) + (i32.const 4) + ) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 8) + (i32.store + (i32.add + (local.get $0) + (i32.const 8) + ) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.sub - (local.tee $2 - (i32.add - (local.get $0) - (local.get $1) + (i32.store + (i32.sub + (local.tee $3 + (i32.add + (local.get $0) + (local.get $1) + ) ) + (i32.const 12) ) - (i32.const 12) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.sub - (local.get $2) - (i32.const 8) + (i32.store + (i32.sub + (local.get $3) + (i32.const 8) + ) + (i32.const 0) ) - (i32.const 0) - ) - (if - (i32.le_u - (local.get $1) - (i32.const 24) + (br_if $__inlined_func$~lib/internal/memory/memset + (i32.le_u + (local.get $1) + (i32.const 24) + ) ) - (return) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 12) + (i32.store + (i32.add + (local.get $0) + (i32.const 12) + ) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 16) + (i32.store + (i32.add + (local.get $0) + (i32.const 16) + ) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 20) + (i32.store + (i32.add + (local.get $0) + (i32.const 20) + ) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.add - (local.get $0) - (i32.const 24) + (i32.store + (i32.add + (local.get $0) + (i32.const 24) + ) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.sub - (local.tee $2 - (i32.add - (local.get $0) - (local.get $1) + (i32.store + (i32.sub + (local.tee $3 + (i32.add + (local.get $0) + (local.get $1) + ) ) + (i32.const 28) ) - (i32.const 28) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.sub - (local.get $2) - (i32.const 24) + (i32.store + (i32.sub + (local.get $3) + (i32.const 24) + ) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.sub - (local.get $2) - (i32.const 20) + (i32.store + (i32.sub + (local.get $3) + (i32.const 20) + ) + (i32.const 0) ) - (i32.const 0) - ) - (i32.store - (i32.sub - (local.get $2) - (i32.const 16) + (i32.store + (i32.sub + (local.get $3) + (i32.const 16) + ) + (i32.const 0) ) - (i32.const 0) - ) - (local.set $0 - (i32.add - (local.tee $2 - (i32.add - (i32.and - (local.get $0) - (i32.const 4) + (local.set $0 + (i32.add + (local.tee $3 + (i32.add + (i32.and + (local.get $0) + (i32.const 4) + ) + (i32.const 24) ) - (i32.const 24) ) + (local.get $0) ) - (local.get $0) ) - ) - (local.set $1 - (i32.sub - (local.get $1) - (local.get $2) - ) - ) - (loop $label$8 - (if - (i32.ge_u + (local.set $1 + (i32.sub (local.get $1) - (i32.const 32) + (local.get $3) ) - (block - (i64.store - (local.get $0) - (i64.const 0) + ) + (loop $label$8 + (if + (i32.ge_u + (local.get $1) + (i32.const 32) ) - (i64.store - (i32.add + (block + (i64.store (local.get $0) - (i32.const 8) + (i64.const 0) ) - (i64.const 0) - ) - (i64.store - (i32.add - (local.get $0) - (i32.const 16) + (i64.store + (i32.add + (local.get $0) + (i32.const 8) + ) + (i64.const 0) ) - (i64.const 0) - ) - (i64.store - (i32.add - (local.get $0) - (i32.const 24) + (i64.store + (i32.add + (local.get $0) + (i32.const 16) + ) + (i64.const 0) ) - (i64.const 0) - ) - (local.set $1 - (i32.sub - (local.get $1) - (i32.const 32) + (i64.store + (i32.add + (local.get $0) + (i32.const 24) + ) + (i64.const 0) ) - ) - (local.set $0 - (i32.add - (local.get $0) - (i32.const 32) + (local.set $1 + (i32.sub + (local.get $1) + (i32.const 32) + ) ) + (local.set $0 + (i32.add + (local.get $0) + (i32.const 32) + ) + ) + (br $label$8) ) - (br $label$8) ) ) ) - ) - (func $~lib/array/Array<Body>#constructor (; has Stack IR ;) (result i32) - (local $0 i32) - (local $1 i32) - (i32.store - (local.tee $1 - (call $~lib/allocator/arena/__memory_allocate - (i32.const 32) - ) - ) - (i32.const 20) - ) - (i32.store - (local.tee $0 - (call $~lib/allocator/arena/__memory_allocate - (i32.const 8) - ) - ) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store - (local.get $0) - (local.get $1) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 5) - ) - (call $~lib/internal/memory/memset - (i32.add - (local.get $1) - (i32.const 8) - ) - ) - (local.get $0) - ) - (func $assembly/index/init (; has Stack IR ;) - (local $0 i32) - (local $1 i32) - (local.set $1 - (call $~lib/array/Array<Body>#constructor) - ) (local.set $0 (call $assembly/index/Body#constructor (f64.const 0) @@ -608,7 +471,7 @@ ) (i32.store offset=8 (i32.load - (local.get $1) + (local.get $2) ) (local.get $0) ) @@ -626,7 +489,7 @@ (i32.store offset=8 (i32.add (i32.load - (local.get $1) + (local.get $2) ) (i32.const 4) ) @@ -646,7 +509,7 @@ (i32.store offset=8 (i32.add (i32.load - (local.get $1) + (local.get $2) ) (i32.const 8) ) @@ -666,7 +529,7 @@ (i32.store offset=8 (i32.add (i32.load - (local.get $1) + (local.get $2) ) (i32.const 12) ) @@ -686,17 +549,136 @@ (i32.store offset=8 (i32.add (i32.load - (local.get $1) + (local.get $2) ) (i32.const 16) ) (local.get $0) ) - (global.set $global$5 - (call $assembly/index/NBodySystem#constructor - (local.get $1) + (local.set $0 + (i32.const 0) + ) + (local.set $3 + (i32.load offset=4 + (local.get $2) ) ) + (loop $label$3 + (if + (i32.lt_s + (local.get $0) + (local.get $3) + ) + (block + (local.set $4 + (f64.load offset=48 + (local.tee $1 + (i32.load offset=8 + (i32.add + (i32.load + (local.get $2) + ) + (i32.shl + (local.get $0) + (i32.const 2) + ) + ) + ) + ) + ) + ) + (local.set $5 + (f64.add + (local.get $5) + (f64.mul + (f64.load offset=24 + (local.get $1) + ) + (local.get $4) + ) + ) + ) + (local.set $6 + (f64.add + (local.get $6) + (f64.mul + (f64.load offset=32 + (local.get $1) + ) + (local.get $4) + ) + ) + ) + (local.set $7 + (f64.add + (local.get $7) + (f64.mul + (f64.load offset=40 + (local.get $1) + ) + (local.get $4) + ) + ) + ) + (local.set $0 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + (br $label$3) + ) + ) + ) + (f64.store offset=24 + (local.tee $0 + (if (result i32) + (i32.shr_u + (i32.load + (local.tee $0 + (i32.load + (local.get $2) + ) + ) + ) + (i32.const 2) + ) + (i32.load offset=8 + (local.get $0) + ) + (unreachable) + ) + ) + (f64.div + (local.get $5) + (f64.const -39.47841760435743) + ) + ) + (f64.store offset=32 + (local.get $0) + (f64.div + (local.get $6) + (f64.const -39.47841760435743) + ) + ) + (f64.store offset=40 + (local.get $0) + (f64.div + (local.get $7) + (f64.const -39.47841760435743) + ) + ) + (i32.store + (local.tee $0 + (call $~lib/allocator/arena/__memory_allocate + (i32.const 4) + ) + ) + (local.get $2) + ) + (global.set $global$5 + (local.get $0) + ) ) (func $assembly/index/NBodySystem#advance (; has Stack IR ;) (param $0 i32) (local $1 i32) @@ -999,8 +981,9 @@ ) ) ) - (func $assembly/index/NBodySystem#energy (; has Stack IR ;) (param $0 i32) (result f64) - (local $1 f64) + (func $assembly/index/step (; has Stack IR ;) (result f64) + (local $0 f64) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -1010,11 +993,14 @@ (local $8 f64) (local $9 f64) (local $10 f64) + (call $assembly/index/NBodySystem#advance + (global.get $global$5) + ) (local.set $5 (i32.load offset=4 (local.tee $4 (i32.load - (local.get $0) + (global.get $global$5) ) ) ) @@ -1028,7 +1014,7 @@ (block (local.set $7 (f64.load - (local.tee $0 + (local.tee $1 (i32.load offset=8 (i32.add (i32.load @@ -1045,22 +1031,22 @@ ) (local.set $8 (f64.load offset=8 - (local.get $0) + (local.get $1) ) ) (local.set $9 (f64.load offset=16 - (local.get $0) + (local.get $1) ) ) - (local.set $1 + (local.set $0 (f64.add - (local.get $1) + (local.get $0) (f64.mul (f64.mul (local.tee $10 (f64.load offset=48 - (local.get $0) + (local.get $1) ) ) (f64.const 0.5) @@ -1068,35 +1054,35 @@ (f64.add (f64.add (f64.mul - (local.tee $1 + (local.tee $0 (f64.load offset=24 - (local.get $0) + (local.get $1) ) ) - (local.get $1) + (local.get $0) ) (f64.mul - (local.tee $1 + (local.tee $0 (f64.load offset=32 - (local.get $0) + (local.get $1) ) ) - (local.get $1) + (local.get $0) ) ) (f64.mul - (local.tee $1 + (local.tee $0 (f64.load offset=40 - (local.get $0) + (local.get $1) ) ) - (local.get $1) + (local.get $0) ) ) ) ) ) - (local.set $0 + (local.set $1 (i32.add (local.get $2) (i32.const 1) @@ -1105,7 +1091,7 @@ (loop $label$7 (if (i32.lt_u - (local.get $0) + (local.get $1) (local.get $5) ) (block @@ -1120,7 +1106,7 @@ (local.get $4) ) (i32.shl - (local.get $0) + (local.get $1) (i32.const 2) ) ) @@ -1129,9 +1115,9 @@ ) ) ) - (local.set $1 + (local.set $0 (f64.sub - (local.get $1) + (local.get $0) (f64.div (f64.mul (local.get $10) @@ -1147,7 +1133,7 @@ (local.get $6) ) (f64.mul - (local.tee $1 + (local.tee $0 (f64.sub (local.get $8) (f64.load offset=8 @@ -1155,11 +1141,11 @@ ) ) ) - (local.get $1) + (local.get $0) ) ) (f64.mul - (local.tee $1 + (local.tee $0 (f64.sub (local.get $9) (f64.load offset=16 @@ -1167,16 +1153,16 @@ ) ) ) - (local.get $1) + (local.get $0) ) ) ) ) ) ) - (local.set $0 + (local.set $1 (i32.add - (local.get $0) + (local.get $1) (i32.const 1) ) ) @@ -1194,15 +1180,7 @@ ) ) ) - (local.get $1) - ) - (func $assembly/index/step (; has Stack IR ;) (result f64) - (call $assembly/index/NBodySystem#advance - (global.get $global$5) - ) - (call $assembly/index/NBodySystem#energy - (global.get $global$5) - ) + (local.get $0) ) (func $assembly/index/bench (; has Stack IR ;) (param $0 i32) (local $1 i32) diff --git a/test/passes/converge_O3_metrics.bin.txt b/test/passes/converge_O3_metrics.bin.txt index 4c1bed30d..efdebb899 100644 --- a/test/passes/converge_O3_metrics.bin.txt +++ b/test/passes/converge_O3_metrics.bin.txt @@ -1,26 +1,25 @@ total [events] : 0 [exports] : 2 - [funcs] : 8 + [funcs] : 6 [globals] : 1 [imports] : 3 [memory-data] : 28 [table-data] : 429 [tables] : 0 - [total] : 558 - [vars] : 4 + [total] : 553 + [vars] : 2 Binary : 12 - Block : 8 + Block : 7 Break : 3 - Call : 3 + Call : 1 CallIndirect : 4 - Const : 45 + Const : 46 Drop : 3 - GlobalGet : 1 GlobalSet : 1 If : 2 Load : 16 - LocalGet : 18 + LocalGet : 16 LocalSet : 7 Loop : 1 RefFunc : 429 @@ -28,7 +27,6 @@ total (module (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32 i32) (result i32))) @@ -53,18 +51,124 @@ total (func $_malloc (; has Stack IR ;) (param $0 i32) (result i32) (i32.const 0) ) - (func $___stdio_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (func $_main (; has Stack IR ;) (result i32) + (local $0 i32) + (local $1 i32) + (local.set $1 + (i32.load offset=24 + (i32.add + (i32.load + (i32.sub + (i32.load + (i32.const 18100) + ) + (i32.const 12) + ) + ) + (i32.const 18100) + ) + ) + ) + (if + (block (result i32) + (local.set $0 + (i32.const 10888) + ) + (loop $label$3 + (br_if $label$3 + (i32.load8_s + (local.tee $0 + (i32.add + (local.get $0) + (i32.const 1) + ) + ) + ) + ) + ) + (local.tee $0 + (i32.sub + (local.get $0) + (i32.const 10888) + ) + ) + ) + (block $label$2 + (br_if $label$2 + (call_indirect (type $i32_i32_i32_=>_i32) + (local.get $1) + (i32.const 10888) + (local.get $0) + (i32.add + (i32.load offset=48 + (i32.load + (local.get $1) + ) + ) + (i32.const 8) + ) + ) + ) + ) + ) + (block $label$1 + (br_if $label$1 + (if (result i32) + (i32.load + (i32.add + (local.tee $1 + (local.tee $0 + (i32.load + (i32.add + (i32.load + (i32.sub + (i32.load + (i32.const 18100) + ) + (i32.const 12) + ) + ) + (i32.const 18124) + ) + ) + ) + ) + (i32.const 24) + ) + ) + (i32.const 0) + (call_indirect (type $i32_i32_=>_i32) + (local.get $1) + (i32.const 10) + (i32.add + (i32.load offset=52 + (i32.load + (local.get $0) + ) + ) + (i32.const 422) + ) + ) + ) + ) + ) + (i32.const 0) + ) + (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (global.set $global$0 + (i32.const 32) + ) (i32.store (i32.const 8) - (local.get $0) + (local.get $1) ) (i32.store (i32.const 12) - (local.get $1) + (local.get $2) ) (i32.store (local.tee $0 - (global.get $global$0) + (i32.const 32) ) (i32.const 1) ) @@ -80,6 +184,101 @@ total ) (i32.const 1) ) + (func $__ZNSt3__211__stdoutbufIcE8overflowEi (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) + (i32.store8 + (i32.const 0) + (local.get $1) + ) + (drop + (call_indirect (type $i32_i32_i32_=>_i32) + (i32.const 0) + (i32.const 0) + (i32.const 1) + (i32.add + (i32.load offset=36 + (i32.load + (i32.add + (local.get $0) + (i32.const 32) + ) + ) + ) + (i32.const 8) + ) + ) + ) + (i32.const 0) + ) + (func $__ZNSt3__211__stdoutbufIcE6xsputnEPKci (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (drop + (call_indirect (type $i32_i32_i32_=>_i32) + (i32.const 0) + (local.get $1) + (local.get $2) + (i32.add + (i32.load offset=36 + (i32.load offset=32 + (local.get $0) + ) + ) + (i32.const 8) + ) + ) + ) + (i32.const 0) + ) +) +total + [events] : 0 + [exports] : 2 + [funcs] : 6 + [globals] : 0 -1 + [imports] : 3 + [memory-data] : 28 + [table-data] : 429 + [tables] : 0 + [total] : 549 -4 + [vars] : 2 + Binary : 12 + Block : 7 + Break : 3 + Call : 1 + CallIndirect : 4 + Const : 46 + Drop : 3 + If : 2 + Load : 16 + LocalGet : 14 -2 + LocalSet : 6 -1 + Loop : 1 + RefFunc : 429 + Store : 5 +(module + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32 i32) (result i32))) + (import "env" "memory" (memory $mimport$0 256 256)) + (data (i32.const 2948) "\03") + (data (i32.const 6828) "\04") + (data (i32.const 7028) "\0d\00\00\00\06") + (data (i32.const 10888) "hello, world!") + (data (i32.const 18100) "\b8\1a") + (data (i32.const 18128) ",I") + (data (i32.const 18732) "D\1b") + (data (i32.const 18764) "`\0b") + (import "env" "table" (table $timport$0 478 478 funcref)) + (elem (i32.const 0) $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $___stdout_write $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE6xsputnEPKci $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE8overflowEi) + (import "env" "___syscall146" (func $import$0 (param i32 i32) (result i32))) + (export "_main" (func $_main)) + (export "_malloc" (func $_malloc)) + (func $b0 (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) + (i32.const 0) + ) + (func $_malloc (; has Stack IR ;) (param $0 i32) (result i32) + (i32.const 0) + ) (func $_main (; has Stack IR ;) (result i32) (local $0 i32) (local $1 i32) @@ -140,21 +339,6 @@ total ) ) ) - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc) - (i32.const 0) - ) - (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (global.set $global$0 - (i32.const 32) - ) - (call $___stdio_write - (local.get $1) - (local.get $2) - ) - ) - (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc (; has Stack IR ;) - (local $0 i32) - (local $1 i32) (block $label$1 (br_if $label$1 (if (result i32) @@ -196,6 +380,32 @@ total ) ) ) + (i32.const 0) + ) + (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (i32.store + (i32.const 8) + (local.get $1) + ) + (i32.store + (i32.const 12) + (local.get $2) + ) + (i32.store + (i32.const 32) + (i32.const 1) + ) + (i32.store + (i32.const 40) + (i32.const 2) + ) + (drop + (call $import$0 + (i32.const 146) + (i32.const 32) + ) + ) + (i32.const 1) ) (func $__ZNSt3__211__stdoutbufIcE8overflowEi (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.store8 @@ -244,34 +454,31 @@ total total [events] : 0 [exports] : 2 - [funcs] : 8 - [globals] : 1 + [funcs] : 6 + [globals] : 0 [imports] : 3 [memory-data] : 28 [table-data] : 429 [tables] : 0 - [total] : 558 - [vars] : 4 + [total] : 549 + [vars] : 2 Binary : 12 - Block : 8 + Block : 7 Break : 3 - Call : 3 + Call : 1 CallIndirect : 4 - Const : 45 + Const : 46 Drop : 3 - GlobalGet : 1 - GlobalSet : 1 If : 2 Load : 16 - LocalGet : 18 - LocalSet : 7 + LocalGet : 14 + LocalSet : 6 Loop : 1 RefFunc : 429 Store : 5 (module (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) - (type $none_=>_none (func)) (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32 i32) (result i32))) @@ -287,7 +494,6 @@ total (import "env" "table" (table $timport$0 478 478 funcref)) (elem (i32.const 0) $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $___stdout_write $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE6xsputnEPKci $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE8overflowEi) (import "env" "___syscall146" (func $import$0 (param i32 i32) (result i32))) - (global $global$0 (mut i32) (i32.const 1)) (export "_main" (func $_main)) (export "_malloc" (func $_malloc)) (func $b0 (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32) @@ -296,33 +502,6 @@ total (func $_malloc (; has Stack IR ;) (param $0 i32) (result i32) (i32.const 0) ) - (func $___stdio_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) - (i32.store - (i32.const 8) - (local.get $0) - ) - (i32.store - (i32.const 12) - (local.get $1) - ) - (i32.store - (local.tee $0 - (global.get $global$0) - ) - (i32.const 1) - ) - (i32.store offset=8 - (local.get $0) - (i32.const 2) - ) - (drop - (call $import$0 - (i32.const 146) - (local.get $0) - ) - ) - (i32.const 1) - ) (func $_main (; has Stack IR ;) (result i32) (local $0 i32) (local $1 i32) @@ -383,21 +562,6 @@ total ) ) ) - (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc) - (i32.const 0) - ) - (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (global.set $global$0 - (i32.const 32) - ) - (call $___stdio_write - (local.get $1) - (local.get $2) - ) - ) - (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc (; has Stack IR ;) - (local $0 i32) - (local $1 i32) (block $label$1 (br_if $label$1 (if (result i32) @@ -439,6 +603,32 @@ total ) ) ) + (i32.const 0) + ) + (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (i32.store + (i32.const 8) + (local.get $1) + ) + (i32.store + (i32.const 12) + (local.get $2) + ) + (i32.store + (i32.const 32) + (i32.const 1) + ) + (i32.store + (i32.const 40) + (i32.const 2) + ) + (drop + (call $import$0 + (i32.const 146) + (i32.const 32) + ) + ) + (i32.const 1) ) (func $__ZNSt3__211__stdoutbufIcE8overflowEi (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32) (i32.store8 diff --git a/test/passes/func-metrics.txt b/test/passes/func-metrics.txt index 61d97ddad..197e35a41 100644 --- a/test/passes/func-metrics.txt +++ b/test/passes/func-metrics.txt @@ -128,7 +128,7 @@ func: func_c Block : 1 Call : 15 export: a (func_a) - [removable-bytes-without-it]: 72 + [removable-bytes-without-it]: 58 [total] : 0 export: b (func_b) [removable-bytes-without-it]: 18 diff --git a/test/passes/inlining-optimizing_optimize-level=3.txt b/test/passes/inlining-optimizing_optimize-level=3.txt index d6c17620c..b3ad7e801 100644 --- a/test/passes/inlining-optimizing_optimize-level=3.txt +++ b/test/passes/inlining-optimizing_optimize-level=3.txt @@ -1,7 +1,7 @@ (module (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$vi (func (param i32))) + (type $FUNCSIG$ii (func (param i32) (result i32))) (type $FUNCSIG$iii (func (param i32 i32) (result i32))) (type $FUNCSIG$i (func (result i32))) (type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32))) @@ -137,7 +137,20 @@ ) (func $_main (result i32) (local $0 i32) - (local.set $0 + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + (local.set $8 (global.get $STACKTOP) ) (global.set $STACKTOP @@ -153,14 +166,282 @@ ) (call $abort) ) + (local.set $6 + (global.get $STACKTOP) + ) + (global.set $STACKTOP + (i32.add + (global.get $STACKTOP) + (i32.const 16) + ) + ) + (if + (i32.ge_s + (global.get $STACKTOP) + (global.get $STACK_MAX) + ) + (call $abort) + ) + (i32.store + (local.get $6) + (local.get $8) + ) + (local.set $0 + (i32.load + (i32.const 8) + ) + ) + (local.set $1 + (global.get $STACKTOP) + ) + (global.set $STACKTOP + (i32.add + (global.get $STACKTOP) + (i32.const 224) + ) + ) + (if + (i32.ge_s + (global.get $STACKTOP) + (global.get $STACK_MAX) + ) + (call $abort) + ) + (local.set $2 + (i32.add + (local.get $1) + (i32.const 120) + ) + ) + (local.set $4 + (i32.add + (local.get $1) + (i32.const 136) + ) + ) + (local.set $5 + (i32.add + (local.tee $3 + (local.tee $7 + (i32.add + (local.get $1) + (i32.const 80) + ) + ) + ) + (i32.const 40) + ) + ) + (loop $do-in + (i32.store + (local.get $3) + (i32.const 0) + ) + (br_if $do-in + (i32.lt_s + (local.tee $3 + (i32.add + (local.get $3) + (i32.const 4) + ) + ) + (local.get $5) + ) + ) + ) + (i32.store + (local.get $2) + (i32.load + (local.get $6) + ) + ) (drop - (call $_printf - (i32.const 672) - (local.get $0) + (if (result i32) + (i32.lt_s + (call $_printf_core + (i32.const 0) + (i32.const 672) + (local.get $2) + (local.get $1) + (local.get $7) + ) + (i32.const 0) + ) + (i32.const -1) + (block (result i32) + (drop + (i32.load offset=76 + (local.get $0) + ) + ) + (local.set $3 + (i32.load + (local.get $0) + ) + ) + (if + (i32.lt_s + (i32.load8_s offset=74 + (local.get $0) + ) + (i32.const 1) + ) + (i32.store + (local.get $0) + (i32.and + (local.get $3) + (i32.const -33) + ) + ) + ) + (if + (i32.load + (local.tee $5 + (i32.add + (local.get $0) + (i32.const 48) + ) + ) + ) + (drop + (call $_printf_core + (local.get $0) + (i32.const 672) + (local.get $2) + (local.get $1) + (local.get $7) + ) + ) + (block + (local.set $10 + (i32.load + (local.tee $9 + (i32.add + (local.get $0) + (i32.const 44) + ) + ) + ) + ) + (i32.store + (local.get $9) + (local.get $4) + ) + (i32.store + (local.tee $12 + (i32.add + (local.get $0) + (i32.const 28) + ) + ) + (local.get $4) + ) + (i32.store + (local.tee $11 + (i32.add + (local.get $0) + (i32.const 20) + ) + ) + (local.get $4) + ) + (i32.store + (local.get $5) + (i32.const 80) + ) + (i32.store + (local.tee $13 + (i32.add + (local.get $0) + (i32.const 16) + ) + ) + (i32.add + (local.get $4) + (i32.const 80) + ) + ) + (local.set $2 + (call $_printf_core + (local.get $0) + (i32.const 672) + (local.get $2) + (local.get $1) + (local.get $7) + ) + ) + (if + (local.get $10) + (block + (drop + (call_indirect (type $FUNCSIG$iiii) + (local.get $0) + (i32.const 0) + (i32.const 0) + (i32.add + (i32.and + (i32.load offset=36 + (local.get $0) + ) + (i32.const 7) + ) + (i32.const 2) + ) + ) + ) + (drop + (i32.load + (local.get $11) + ) + ) + (i32.store + (local.get $9) + (local.get $10) + ) + (i32.store + (local.get $5) + (i32.const 0) + ) + (i32.store + (local.get $13) + (i32.const 0) + ) + (i32.store + (local.get $12) + (i32.const 0) + ) + (i32.store + (local.get $11) + (i32.const 0) + ) + ) + ) + ) + ) + (i32.store + (local.get $0) + (i32.or + (i32.load + (local.get $0) + ) + (i32.and + (local.get $3) + (i32.const 32) + ) + ) + ) + (i32.const 0) + ) ) ) (global.set $STACKTOP - (local.get $0) + (local.get $1) + ) + (global.set $STACKTOP + (local.get $6) + ) + (global.set $STACKTOP + (local.get $8) ) (i32.const 0) ) @@ -261,87 +542,6 @@ ) (local.get $0) ) - (func $_strerror (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local.set $1 - (i32.const 0) - ) - (block $__rjto$1 - (block $__rjti$1 - (block $__rjti$0 - (loop $while-in - (br_if $__rjti$0 - (i32.eq - (i32.load8_u offset=687 - (local.get $1) - ) - (local.get $0) - ) - ) - (br_if $while-in - (i32.ne - (local.tee $1 - (i32.add - (local.get $1) - (i32.const 1) - ) - ) - (i32.const 87) - ) - ) - (local.set $1 - (i32.const 87) - ) - (br $__rjti$1) - ) - ) - (br_if $__rjti$1 - (local.get $1) - ) - (local.set $0 - (i32.const 775) - ) - (br $__rjto$1) - ) - (local.set $0 - (i32.const 775) - ) - (loop $while-in1 - (loop $while-in3 - (local.set $2 - (i32.add - (local.get $0) - (i32.const 1) - ) - ) - (if - (i32.load8_s - (local.get $0) - ) - (block $block - (local.set $0 - (local.get $2) - ) - (br $while-in3) - ) - (local.set $0 - (local.get $2) - ) - ) - ) - (br_if $while-in1 - (local.tee $1 - (i32.add - (local.get $1) - (i32.const -1) - ) - ) - ) - ) - ) - (local.get $0) - ) (func $___errno_location (result i32) (if (result i32) (i32.load @@ -639,45 +839,6 @@ ) (local.get $0) ) - (func $_printf (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - (local.set $2 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 16) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (i32.store - (local.tee $3 - (local.get $2) - ) - (local.get $1) - ) - (local.set $0 - (call $_vfprintf - (i32.load - (i32.const 8) - ) - (local.get $0) - (local.get $3) - ) - ) - (global.set $STACKTOP - (local.get $2) - ) - (local.get $0) - ) (func $___stdio_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -1024,322 +1185,121 @@ ) (local.get $2) ) - (func $_vfprintf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $___fwritex (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local.set $3 - (global.get $STACKTOP) - ) - (global.set $STACKTOP - (i32.add - (global.get $STACKTOP) - (i32.const 224) - ) - ) - (if - (i32.ge_s - (global.get $STACKTOP) - (global.get $STACK_MAX) - ) - (call $abort) - ) - (local.set $5 - (i32.add - (local.get $3) - (i32.const 120) - ) - ) - (local.set $6 - (i32.add - (local.get $3) - (i32.const 136) - ) - ) - (local.set $8 - (i32.add - (local.tee $4 - (local.tee $7 - (i32.add - (local.get $3) - (i32.const 80) - ) - ) - ) - (i32.const 40) - ) - ) - (loop $do-in - (i32.store - (local.get $4) - (i32.const 0) - ) - (br_if $do-in - (i32.lt_s - (local.tee $4 - (i32.add - (local.get $4) - (i32.const 4) - ) - ) - (local.get $8) - ) - ) - ) - (i32.store - (local.get $5) - (i32.load - (local.get $2) - ) - ) - (local.set $0 - (if (result i32) - (i32.lt_s - (call $_printf_core - (i32.const 0) - (local.get $1) - (local.get $5) - (local.get $3) - (local.get $7) - ) - (i32.const 0) - ) - (i32.const -1) - (block (result i32) - (drop - (i32.load offset=76 - (local.get $0) - ) - ) - (local.set $4 - (i32.load - (local.get $0) - ) - ) - (if - (i32.lt_s - (i32.load8_s offset=74 - (local.get $0) - ) - (i32.const 1) - ) - (i32.store - (local.get $0) - (i32.and - (local.get $4) - (i32.const -33) - ) - ) - ) - (if + (block $label$break$L5 + (block $__rjti$0 + (br_if $__rjti$0 + (local.tee $3 (i32.load - (local.tee $9 + (local.tee $5 (i32.add - (local.get $0) - (i32.const 48) + (local.get $2) + (i32.const 16) ) ) ) - (local.set $1 - (call $_printf_core - (local.get $0) - (local.get $1) - (local.get $5) - (local.get $3) - (local.get $7) - ) - ) - (block - (local.set $11 - (i32.load - (local.tee $10 + ) + ) + (local.set $3 + (if (result i32) + (block (result i32) + (local.set $3 + (i32.load8_s + (local.tee $4 (i32.add - (local.get $0) - (i32.const 44) + (local.get $2) + (i32.const 74) ) ) ) ) - (i32.store - (local.get $10) - (local.get $6) - ) - (i32.store - (local.tee $8 - (i32.add - (local.get $0) - (i32.const 28) - ) - ) - (local.get $6) - ) - (i32.store - (local.tee $12 - (i32.add - (local.get $0) - (i32.const 20) - ) - ) - (local.get $6) - ) - (i32.store - (local.get $9) - (i32.const 80) - ) - (i32.store - (local.tee $2 + (i32.store8 + (local.get $4) + (i32.or (i32.add - (local.get $0) - (i32.const 16) + (local.get $3) + (i32.const 255) ) - ) - (i32.add - (local.get $6) - (i32.const 80) - ) - ) - (local.set $1 - (call $_printf_core - (local.get $0) - (local.get $1) - (local.get $5) (local.get $3) - (local.get $7) ) ) - (if - (local.get $11) - (block - (drop - (call_indirect (type $FUNCSIG$iiii) - (local.get $0) - (i32.const 0) - (i32.const 0) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $0) - ) - (i32.const 7) - ) - (i32.const 2) - ) - ) - ) - (local.set $1 - (select - (local.get $1) - (i32.const -1) - (i32.load - (local.get $12) - ) + (if (result i32) + (i32.and + (local.tee $3 + (i32.load + (local.get $2) ) ) + (i32.const 8) + ) + (block (result i32) (i32.store - (local.get $10) - (local.get $11) + (local.get $2) + (i32.or + (local.get $3) + (i32.const 32) + ) ) - (i32.store - (local.get $9) + (i32.const -1) + ) + (block (result i32) + (i32.store offset=8 + (local.get $2) (i32.const 0) ) - (i32.store + (i32.store offset=4 (local.get $2) (i32.const 0) ) - (i32.store - (local.get $8) - (i32.const 0) + (i32.store offset=28 + (local.get $2) + (local.tee $3 + (i32.load offset=44 + (local.get $2) + ) + ) ) - (i32.store - (local.get $12) - (i32.const 0) + (i32.store offset=20 + (local.get $2) + (local.get $3) + ) + (i32.store offset=16 + (local.get $2) + (i32.add + (local.get $3) + (i32.load offset=48 + (local.get $2) + ) + ) ) + (i32.const 0) ) ) ) - ) - (i32.store - (local.get $0) - (i32.or - (local.tee $0 + (i32.const 0) + (block + (local.set $3 (i32.load - (local.get $0) - ) - ) - (i32.and - (local.get $4) - (i32.const 32) - ) - ) - ) - (select - (i32.const -1) - (local.get $1) - (i32.and - (local.get $0) - (i32.const 32) - ) - ) - ) - ) - ) - (global.set $STACKTOP - (local.get $3) - ) - (local.get $0) - ) - (func $___fwritex (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (block $label$break$L5 - (block $__rjti$0 - (br_if $__rjti$0 - (local.tee $3 - (i32.load - (local.tee $4 - (i32.add - (local.get $2) - (i32.const 16) + (local.get $5) ) ) + (br $__rjti$0) ) ) ) - (if - (call $___towrite - (local.get $2) - ) - (local.set $3 - (i32.const 0) - ) - (block $block - (local.set $3 - (i32.load - (local.get $4) - ) - ) - (br $__rjti$0) - ) - ) (br $label$break$L5) ) (if (i32.lt_u (i32.sub (local.get $3) - (local.tee $4 + (local.tee $6 (i32.load - (local.tee $5 + (local.tee $4 (i32.add (local.get $2) (i32.const 20) @@ -1350,7 +1310,7 @@ ) (local.get $1) ) - (block $block30 + (block (local.set $3 (call_indirect (type $FUNCSIG$iiii) (local.get $2) @@ -1371,206 +1331,127 @@ ) ) (local.set $2 - (block $label$break$L10 (result i32) - (if (result i32) - (i32.gt_s - (i32.load8_s offset=75 - (local.get $2) - ) - (i32.const -1) + (if (result i32) + (i32.gt_s + (i32.load8_s offset=75 + (local.get $2) ) - (block $block32 (result i32) - (local.set $3 - (local.get $1) - ) - (loop $while-in - (drop - (br_if $label$break$L10 - (i32.const 0) - (i32.eqz - (local.get $3) - ) + (i32.const -1) + ) + (block $label$break$L10 (result i32) + (local.set $3 + (local.get $1) + ) + (loop $while-in + (drop + (br_if $label$break$L10 + (i32.const 0) + (i32.eqz + (local.get $3) ) ) - (if - (i32.ne - (i32.load8_s - (i32.add - (local.get $0) - (local.tee $6 - (i32.add - (local.get $3) - (i32.const -1) - ) + ) + (if + (i32.ne + (i32.load8_s + (i32.add + (local.get $0) + (local.tee $5 + (i32.sub + (local.get $3) + (i32.const 1) ) ) ) - (i32.const 10) ) - (block $block34 - (local.set $3 - (local.get $6) - ) - (br $while-in) + (i32.const 10) + ) + (block + (local.set $3 + (local.get $5) ) + (br $while-in) ) ) - (br_if $label$break$L5 - (i32.lt_u - (call_indirect (type $FUNCSIG$iiii) - (local.get $2) - (local.get $0) - (local.get $3) - (i32.add - (i32.and - (i32.load offset=36 - (local.get $2) - ) - (i32.const 7) + ) + (br_if $label$break$L5 + (i32.lt_u + (call_indirect (type $FUNCSIG$iiii) + (local.get $2) + (local.get $0) + (local.get $3) + (i32.add + (i32.and + (i32.load offset=36 + (local.get $2) ) - (i32.const 2) + (i32.const 7) ) + (i32.const 2) ) - (local.get $3) ) + (local.get $3) ) - (local.set $4 - (i32.load - (local.get $5) - ) + ) + (local.set $6 + (i32.load + (local.get $4) ) - (local.set $1 - (i32.sub - (local.get $1) - (local.get $3) - ) + ) + (local.set $1 + (i32.sub + (local.get $1) + (local.get $3) ) - (local.set $0 - (i32.add - (local.get $0) - (local.get $3) - ) + ) + (local.set $0 + (i32.add + (local.get $0) + (local.get $3) ) - (local.get $3) ) - (i32.const 0) + (local.get $3) ) + (i32.const 0) ) ) (drop (call $_memcpy - (local.get $4) + (local.get $6) (local.get $0) (local.get $1) ) ) (i32.store - (local.get $5) + (local.get $4) (i32.add (i32.load - (local.get $5) + (local.get $4) ) (local.get $1) ) ) (local.set $3 (i32.add - (local.get $2) (local.get $1) + (local.get $2) ) ) ) (local.get $3) ) - (func $___towrite (param $0 i32) (result i32) - (local $1 i32) - (local $2 i32) - (local.set $1 - (i32.load8_s - (local.tee $2 - (i32.add - (local.get $0) - (i32.const 74) - ) - ) - ) - ) - (i32.store8 - (local.get $2) - (i32.or - (i32.add - (local.get $1) - (i32.const 255) - ) - (local.get $1) - ) - ) - (local.tee $0 - (if (result i32) - (i32.and - (local.tee $1 - (i32.load - (local.get $0) - ) - ) - (i32.const 8) - ) - (block $block (result i32) - (i32.store - (local.get $0) - (i32.or - (local.get $1) - (i32.const 32) - ) - ) - (i32.const -1) - ) - (block $block35 (result i32) - (i32.store offset=8 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=4 - (local.get $0) - (i32.const 0) - ) - (i32.store offset=28 - (local.get $0) - (local.tee $1 - (i32.load offset=44 - (local.get $0) - ) - ) - ) - (i32.store offset=20 - (local.get $0) - (local.get $1) - ) - (i32.store offset=16 - (local.get $0) - (i32.add - (local.get $1) - (i32.load offset=48 - (local.get $0) - ) - ) - ) - (i32.const 0) - ) - ) - ) - ) - (func $_wcrtomb (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (block $do-once (result i32) + (func $_wctomb (param $0 i32) (param $1 i32) (result i32) + (if (result i32) + (local.get $0) (if (result i32) (local.get $0) - (block $block (result i32) + (block $do-once (result i32) (if (i32.lt_u (local.get $1) (i32.const 128) ) - (block $block37 + (block (i32.store8 (local.get $0) (local.get $1) @@ -1585,7 +1466,7 @@ (local.get $1) (i32.const 2048) ) - (block $block39 + (block (i32.store8 (local.get $0) (i32.or @@ -1613,10 +1494,6 @@ ) (if (i32.or - (i32.lt_u - (local.get $1) - (i32.const 55296) - ) (i32.eq (i32.and (local.get $1) @@ -1624,8 +1501,12 @@ ) (i32.const 57344) ) + (i32.lt_u + (local.get $1) + (i32.const 55296) + ) ) - (block $block41 + (block (i32.store8 (local.get $0) (i32.or @@ -1666,13 +1547,13 @@ ) (if (result i32) (i32.lt_u - (i32.add + (i32.sub (local.get $1) - (i32.const -65536) + (i32.const 65536) ) (i32.const 1048576) ) - (block $block43 (result i32) + (block (result i32) (i32.store8 (local.get $0) (i32.or @@ -1721,7 +1602,7 @@ ) (i32.const 4) ) - (block $block44 (result i32) + (block (result i32) (i32.store (call $___errno_location) (i32.const 84) @@ -1732,248 +1613,7 @@ ) (i32.const 1) ) - ) - ) - (func $_wctomb (param $0 i32) (param $1 i32) (result i32) - (if (result i32) - (local.get $0) - (call $_wcrtomb - (local.get $0) - (local.get $1) - (i32.const 0) - ) - (i32.const 0) - ) - ) - (func $_memchr (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local.set $5 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (block $label$break$L8 - (block $__rjti$2 - (if - (i32.and - (local.tee $4 - (i32.ne - (local.get $2) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (local.get $0) - (i32.const 3) - ) - (i32.const 0) - ) - ) - (block $block - (local.set $4 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - (local.set $3 - (local.get $2) - ) - (local.set $2 - (local.get $0) - ) - (loop $while-in - (br_if $__rjti$2 - (i32.eq - (i32.load8_u - (local.get $2) - ) - (i32.and - (local.get $4) - (i32.const 255) - ) - ) - ) - (br_if $while-in - (i32.and - (local.tee $0 - (i32.ne - (local.tee $3 - (i32.add - (local.get $3) - (i32.const -1) - ) - ) - (i32.const 0) - ) - ) - (i32.ne - (i32.and - (local.tee $2 - (i32.add - (local.get $2) - (i32.const 1) - ) - ) - (i32.const 3) - ) - (i32.const 0) - ) - ) - ) - ) - ) - (block $block45 - (local.set $3 - (local.get $2) - ) - (local.set $2 - (local.get $0) - ) - (local.set $0 - (local.get $4) - ) - ) - ) - (br_if $__rjti$2 - (local.get $0) - ) - (local.set $0 - (i32.const 0) - ) - (br $label$break$L8) - ) - (local.set $0 - (local.get $3) - ) - (if - (i32.ne - (i32.load8_u - (local.get $2) - ) - (local.tee $1 - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - ) - (block $block47 - (local.set $3 - (i32.mul - (local.get $5) - (i32.const 16843009) - ) - ) - (block $__rjto$0 - (block $__rjti$0 - (br_if $__rjti$0 - (i32.le_u - (local.get $0) - (i32.const 3) - ) - ) - (loop $while-in3 - (if - (i32.eqz - (i32.and - (i32.xor - (i32.and - (local.tee $4 - (i32.xor - (i32.load - (local.get $2) - ) - (local.get $3) - ) - ) - (i32.const -2139062144) - ) - (i32.const -2139062144) - ) - (i32.add - (local.get $4) - (i32.const -16843009) - ) - ) - ) - (block $block49 - (local.set $2 - (i32.add - (local.get $2) - (i32.const 4) - ) - ) - (br_if $while-in3 - (i32.gt_u - (local.tee $0 - (i32.add - (local.get $0) - (i32.const -4) - ) - ) - (i32.const 3) - ) - ) - (br $__rjti$0) - ) - ) - ) - (br $__rjto$0) - ) - (if - (i32.eqz - (local.get $0) - ) - (block $block51 - (local.set $0 - (i32.const 0) - ) - (br $label$break$L8) - ) - ) - ) - (loop $while-in5 - (br_if $label$break$L8 - (i32.eq - (i32.load8_u - (local.get $2) - ) - (i32.and - (local.get $1) - (i32.const 255) - ) - ) - ) - (local.set $2 - (i32.add - (local.get $2) - (i32.const 1) - ) - ) - (br_if $while-in5 - (local.tee $0 - (i32.add - (local.get $0) - (i32.const -1) - ) - ) - ) - (local.set $0 - (i32.const 0) - ) - ) - ) - ) - ) - (select - (local.get $2) (i32.const 0) - (local.get $0) ) ) (func $___syscall_ret (param $0 i32) (result i32) @@ -2318,7 +1958,7 @@ (local.set $18 (if (result i32) (i32.gt_s - (local.get $10) + (local.get $11) (i32.sub (i32.const 2147483647) (local.get $18) @@ -2332,7 +1972,7 @@ (i32.const -1) ) (i32.add - (local.get $10) + (local.get $11) (local.get $18) ) ) @@ -2347,7 +1987,7 @@ ) ) ) - (local.set $10 + (local.set $11 (local.get $5) ) (block $label$break$L12 @@ -2368,20 +2008,20 @@ ) ) (local.set $6 - (local.get $10) + (local.get $11) ) (br $__rjti$1) ) (local.set $6 - (local.get $10) + (local.get $11) ) (br $label$break$L9) ) (local.set $7 (i32.load8_s - (local.tee $10 + (local.tee $11 (i32.add - (local.get $10) + (local.get $11) (i32.const 1) ) ) @@ -2401,9 +2041,9 @@ (i32.const 37) ) ) - (local.set $10 + (local.set $11 (i32.add - (local.get $10) + (local.get $11) (i32.const 1) ) ) @@ -2424,7 +2064,7 @@ ) (local.set $7 (i32.sub - (local.get $10) + (local.get $11) (local.get $5) ) ) @@ -2451,13 +2091,13 @@ (if (i32.ne (local.get $5) - (local.get $10) + (local.get $11) ) (block (local.set $5 (local.get $6) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) @@ -2468,9 +2108,9 @@ (i32.lt_u (local.tee $8 (i32.sub - (local.tee $12 + (local.tee $9 (i32.load8_s - (local.tee $10 + (local.tee $11 (i32.add (local.get $6) (i32.const 1) @@ -2486,14 +2126,14 @@ (block (result i32) (local.set $6 (i32.load8_s - (local.tee $10 + (local.tee $11 (select (i32.add (local.get $6) (i32.const 3) ) - (local.get $10) - (local.tee $12 + (local.get $11) + (local.tee $9 (i32.eq (i32.load8_s offset=2 (local.get $6) @@ -2509,18 +2149,18 @@ (select (local.get $8) (i32.const -1) - (local.get $12) + (local.get $9) ) ) (select (i32.const 1) (local.get $1) - (local.get $12) + (local.get $9) ) ) (block (result i32) (local.set $6 - (local.get $12) + (local.get $9) ) (local.set $19 (i32.const -1) @@ -2533,7 +2173,7 @@ (if (result i32) (i32.eq (i32.and - (local.tee $12 + (local.tee $9 (i32.shr_s (i32.shl (local.get $6) @@ -2551,9 +2191,9 @@ (local.get $6) ) (local.set $6 - (local.get $12) + (local.get $9) ) - (local.set $12 + (local.set $9 (i32.const 0) ) (loop $while-in4 (result i32) @@ -2575,11 +2215,11 @@ (local.get $1) ) (br $label$break$L25 - (local.get $12) + (local.get $9) ) ) ) - (local.set $12 + (local.set $9 (i32.or (i32.shl (i32.const 1) @@ -2594,7 +2234,7 @@ (i32.const 32) ) ) - (local.get $12) + (local.get $9) ) ) (br_if $while-in4 @@ -2603,9 +2243,9 @@ (local.tee $6 (local.tee $1 (i32.load8_s - (local.tee $10 + (local.tee $11 (i32.add - (local.get $10) + (local.get $11) (i32.const 1) ) ) @@ -2620,7 +2260,7 @@ (local.set $6 (local.get $1) ) - (local.get $12) + (local.get $9) ) ) (i32.const 0) @@ -2636,17 +2276,17 @@ (i32.const 42) ) (block $do-once5 (result i32) - (local.set $10 + (local.set $11 (block $__rjto$0 (result i32) (block $__rjti$0 (br_if $__rjti$0 (i32.ge_u - (local.tee $12 + (local.tee $9 (i32.sub (i32.load8_s (local.tee $6 (i32.add - (local.get $10) + (local.get $11) (i32.const 1) ) ) @@ -2660,7 +2300,7 @@ (br_if $__rjti$0 (i32.ne (i32.load8_s offset=2 - (local.get $10) + (local.get $11) ) (i32.const 36) ) @@ -2669,7 +2309,7 @@ (i32.add (local.get $4) (i32.shl - (local.get $12) + (local.get $9) (i32.const 2) ) ) @@ -2703,7 +2343,7 @@ ) (br $__rjto$0 (i32.add - (local.get $10) + (local.get $11) (i32.const 3) ) ) @@ -2722,10 +2362,10 @@ (local.get $28) ) (block - (local.set $12 + (local.set $9 (local.get $1) ) - (local.set $10 + (local.set $11 (local.get $6) ) (local.set $17 @@ -2738,7 +2378,7 @@ ) (local.set $17 (i32.load - (local.tee $10 + (local.tee $11 (i32.and (i32.add (i32.load @@ -2754,7 +2394,7 @@ (i32.store (local.get $2) (i32.add - (local.get $10) + (local.get $11) (i32.const 4) ) ) @@ -2764,7 +2404,7 @@ (local.get $6) ) ) - (local.set $12 + (local.set $9 (if (result i32) (i32.lt_s (local.get $17) @@ -2804,14 +2444,14 @@ (i32.const 10) ) (block (result i32) - (local.set $12 + (local.set $9 (i32.const 0) ) (loop $while-in8 (local.set $6 (i32.add (i32.mul - (local.get $12) + (local.get $9) (i32.const 10) ) (local.get $6) @@ -2819,12 +2459,12 @@ ) (if (i32.lt_u - (local.tee $9 + (local.tee $10 (i32.sub (i32.load8_s - (local.tee $10 + (local.tee $11 (i32.add - (local.get $10) + (local.get $11) (i32.const 1) ) ) @@ -2835,11 +2475,11 @@ (i32.const 10) ) (block - (local.set $12 + (local.set $9 (local.get $6) ) (local.set $6 - (local.get $9) + (local.get $10) ) (br $while-in8) ) @@ -2857,7 +2497,7 @@ (br $label$break$L1) ) (block (result i32) - (local.set $12 + (local.set $9 (local.get $1) ) (local.set $17 @@ -2868,7 +2508,7 @@ ) ) (block (result i32) - (local.set $12 + (local.set $9 (local.get $1) ) (local.set $17 @@ -2883,7 +2523,7 @@ (if (result i32) (i32.eq (i32.load8_s - (local.get $10) + (local.get $11) ) (i32.const 46) ) @@ -2894,7 +2534,7 @@ (i32.load8_s (local.tee $6 (i32.add - (local.get $10) + (local.get $11) (i32.const 1) ) ) @@ -2906,7 +2546,7 @@ (local.set $6 (if (result i32) (i32.lt_u - (local.tee $9 + (local.tee $10 (i32.sub (local.get $8) (i32.const 48) @@ -2915,16 +2555,16 @@ (i32.const 10) ) (block (result i32) - (local.set $10 + (local.set $11 (local.get $6) ) (local.set $8 (i32.const 0) ) - (local.get $9) + (local.get $10) ) (block - (local.set $10 + (local.set $11 (local.get $6) ) (br $label$break$L46 @@ -2949,9 +2589,9 @@ (local.tee $6 (i32.sub (i32.load8_s - (local.tee $10 + (local.tee $11 (i32.add - (local.get $10) + (local.get $11) (i32.const 1) ) ) @@ -2974,7 +2614,7 @@ (i32.load8_s (local.tee $6 (i32.add - (local.get $10) + (local.get $11) (i32.const 2) ) ) @@ -2987,7 +2627,7 @@ (if (i32.eq (i32.load8_s offset=3 - (local.get $10) + (local.get $11) ) (i32.const 36) ) @@ -3020,9 +2660,9 @@ ) ) ) - (local.set $10 + (local.set $11 (i32.add - (local.get $10) + (local.get $11) (i32.const 4) ) ) @@ -3048,7 +2688,7 @@ (block (result i32) (local.set $8 (i32.load - (local.tee $10 + (local.tee $11 (i32.and (i32.add (i32.load @@ -3064,17 +2704,17 @@ (i32.store (local.get $2) (i32.add - (local.get $10) + (local.get $11) (i32.const 4) ) ) - (local.set $10 + (local.set $11 (local.get $6) ) (local.get $8) ) (block (result i32) - (local.set $10 + (local.set $11 (local.get $6) ) (i32.const 0) @@ -3085,74 +2725,71 @@ ) ) (local.set $8 - (local.get $10) + (local.get $11) ) - (local.set $9 + (local.set $10 (i32.const 0) ) - (local.set $16 - (loop $while-in13 (result i32) - (if - (i32.gt_u - (local.tee $11 - (i32.sub - (i32.load8_s - (local.get $8) - ) - (i32.const 65) + (loop $while-in13 + (if + (i32.gt_u + (local.tee $12 + (i32.sub + (i32.load8_s + (local.get $8) ) + (i32.const 65) ) - (i32.const 57) - ) - (block - (local.set $18 - (i32.const -1) - ) - (br $label$break$L1) ) + (i32.const 57) ) - (local.set $10 - (i32.add - (local.get $8) - (i32.const 1) + (block + (local.set $18 + (i32.const -1) ) + (br $label$break$L1) ) - (if (result i32) - (i32.lt_u - (i32.sub - (local.tee $11 - (i32.and - (local.tee $15 - (i32.load8_s + ) + (local.set $11 + (i32.add + (local.get $8) + (i32.const 1) + ) + ) + (if + (i32.lt_u + (i32.sub + (local.tee $12 + (i32.and + (local.tee $15 + (i32.load8_s + (i32.add (i32.add - (i32.add - (i32.mul - (local.get $9) - (i32.const 58) - ) - (i32.const 3611) + (i32.mul + (local.get $10) + (i32.const 58) ) - (local.get $11) + (i32.const 3611) ) + (local.get $12) ) ) - (i32.const 255) ) + (i32.const 255) ) - (i32.const 1) ) - (i32.const 8) + (i32.const 1) ) - (block - (local.set $8 - (local.get $10) - ) - (local.set $9 - (local.get $11) - ) - (br $while-in13) + (i32.const 8) + ) + (block + (local.set $8 + (local.get $11) ) - (local.get $8) + (local.set $10 + (local.get $12) + ) + (br $while-in13) ) ) ) @@ -3170,7 +2807,7 @@ (br $label$break$L1) ) ) - (local.set $8 + (local.set $16 (i32.gt_s (local.get $19) (i32.const -1) @@ -3187,7 +2824,7 @@ (i32.const 19) ) (if - (local.get $8) + (local.get $16) (block (local.set $18 (i32.const -1) @@ -3198,7 +2835,7 @@ ) (block (if - (local.get $8) + (local.get $16) (block (i32.store (i32.add @@ -3208,11 +2845,11 @@ (i32.const 2) ) ) - (local.get $11) + (local.get $12) ) - (local.set $11 + (local.set $15 (i32.load offset=4 - (local.tee $8 + (local.tee $12 (i32.add (local.get $3) (i32.shl @@ -3226,12 +2863,12 @@ (i32.store (local.get $13) (i32.load - (local.get $8) + (local.get $12) ) ) (i32.store offset=4 (local.get $13) - (local.get $11) + (local.get $15) ) (br $__rjti$2) ) @@ -3249,7 +2886,7 @@ ) (call $_pop_arg_336 (local.get $13) - (local.get $11) + (local.get $12) (local.get $2) ) ) @@ -3262,26 +2899,26 @@ ) (block (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) ) ) ) - (local.set $12 + (local.set $9 (select - (local.tee $8 + (local.tee $12 (i32.and - (local.get $12) + (local.get $9) (i32.const -65537) ) ) - (local.get $12) + (local.get $9) (i32.and - (local.get $12) + (local.get $9) (i32.const 8192) ) ) @@ -3293,9 +2930,9 @@ (select (local.tee $5 (i32.add - (local.tee $11 + (local.tee $12 (select - (local.tee $16 + (local.tee $15 (i32.sub (block $__rjto$8 (result i32) (block $__rjti$8 @@ -3324,27 +2961,27 @@ (block $switch-case27 (br_table $switch-case42 $switch-default120 $switch-case40 $switch-default120 $switch-case42 $switch-case42 $switch-case42 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case29 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case42 $switch-default120 $switch-case37 $switch-case34 $switch-case42 $switch-case42 $switch-case42 $switch-default120 $switch-case34 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case29 $switch-default120 (i32.sub - (local.tee $16 + (local.tee $15 (select (i32.and - (local.tee $11 + (local.tee $8 (i32.load8_s - (local.get $16) + (local.get $8) ) ) (i32.const -33) ) - (local.get $11) + (local.get $8) (i32.and (i32.eq (i32.and - (local.get $11) + (local.get $8) (i32.const 15) ) (i32.const 3) ) (i32.ne - (local.get $9) + (local.get $10) (i32.const 0) ) ) @@ -3363,7 +3000,7 @@ (block $switch-case20 (block $switch-case19 (br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26 - (local.get $9) + (local.get $10) ) ) (i32.store @@ -3373,9 +3010,9 @@ (local.get $18) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) @@ -3387,9 +3024,9 @@ (local.get $18) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) @@ -3416,9 +3053,9 @@ ) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) @@ -3430,9 +3067,9 @@ (local.get $18) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) @@ -3444,9 +3081,9 @@ (local.get $18) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) @@ -3458,9 +3095,9 @@ (local.get $18) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) @@ -3487,24 +3124,24 @@ ) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) ) (local.set $7 (i32.or - (local.get $12) + (local.get $9) (i32.const 8) ) ) @@ -3518,13 +3155,13 @@ ) ) ) - (local.set $16 + (local.set $15 (i32.const 120) ) (br $__rjti$3) ) (local.set $7 - (local.get $12) + (local.get $9) ) (br $__rjti$3) ) @@ -3583,12 +3220,12 @@ ) (if (i32.and - (local.get $12) + (local.get $9) (i32.const 8) ) (block (local.set $7 - (local.get $12) + (local.get $9) ) (local.set $6 (select @@ -3610,7 +3247,7 @@ ) ) (local.set $7 - (local.get $12) + (local.get $9) ) ) (local.set $5 @@ -3619,7 +3256,7 @@ (local.set $8 (i32.const 0) ) - (local.set $9 + (local.set $10 (i32.const 4091) ) (br $__rjti$8) @@ -3669,16 +3306,16 @@ (local.set $8 (i32.const 1) ) - (local.set $9 + (local.set $10 (i32.const 4091) ) (br $__rjti$4) ) ) - (local.set $9 + (local.set $10 (if (result i32) (i32.and - (local.get $12) + (local.get $9) (i32.const 2048) ) (block (result i32) @@ -3689,9 +3326,9 @@ ) (block (result i32) (local.set $8 - (local.tee $9 + (local.tee $10 (i32.and - (local.get $12) + (local.get $9) (i32.const 1) ) ) @@ -3699,7 +3336,7 @@ (select (i32.const 4093) (i32.const 4091) - (local.get $9) + (local.get $10) ) ) ) @@ -3719,7 +3356,7 @@ (local.set $8 (i32.const 0) ) - (local.set $9 + (local.set $10 (i32.const 4091) ) (br $__rjti$4) @@ -3738,16 +3375,16 @@ (local.set $7 (local.get $38) ) - (local.set $12 - (local.get $8) + (local.set $9 + (local.get $12) ) - (local.set $11 + (local.set $12 (i32.const 1) ) (local.set $8 (i32.const 0) ) - (local.set $9 + (local.set $10 (i32.const 4091) ) (br $__rjto$8 @@ -3755,9 +3392,83 @@ ) ) (local.set $5 - (call $_strerror - (i32.load - (call $___errno_location) + (i32.load + (call $___errno_location) + ) + ) + (local.set $9 + (i32.const 0) + ) + (block $__rjto$1 + (block $__rjti$10 + (loop $while-in2 + (if + (i32.ne + (local.get $5) + (i32.load8_u offset=687 + (local.get $9) + ) + ) + (block + (br_if $while-in2 + (i32.ne + (local.tee $9 + (i32.add + (local.get $9) + (i32.const 1) + ) + ) + (i32.const 87) + ) + ) + (local.set $9 + (i32.const 87) + ) + (br $__rjti$10) + ) + ) + ) + (br_if $__rjti$10 + (local.get $9) + ) + (local.set $5 + (i32.const 775) + ) + (br $__rjto$1) + ) + (local.set $5 + (i32.const 775) + ) + (loop $while-in1 + (local.set $5 + (loop $while-in3 (result i32) + (local.set $7 + (i32.add + (local.get $5) + (i32.const 1) + ) + ) + (if (result i32) + (i32.load8_s + (local.get $5) + ) + (block + (local.set $5 + (local.get $7) + ) + (br $while-in3) + ) + (local.get $7) + ) + ) + ) + (br_if $while-in1 + (local.tee $9 + (i32.sub + (local.get $9) + (i32.const 1) + ) + ) ) ) ) @@ -3814,7 +3525,7 @@ (i32.const 32) (local.get $17) (i32.const 0) - (local.get $12) + (local.get $9) ) (br $__rjti$7 (i32.const 0) @@ -3861,7 +3572,7 @@ ) (if (result i32) (i32.and - (local.get $12) + (local.get $9) (i32.const 2048) ) (block (result i32) @@ -3874,7 +3585,7 @@ (local.set $27 (local.tee $5 (i32.and - (local.get $12) + (local.get $9) (i32.const 1) ) ) @@ -3938,23 +3649,23 @@ (i32.eq (local.tee $26 (i32.or - (local.get $16) + (local.get $15) (i32.const 32) ) ) (i32.const 97) ) (block - (local.set $9 + (local.set $10 (select (i32.add (local.get $30) (i32.const 9) ) (local.get $30) - (local.tee $15 + (local.tee $16 (i32.and - (local.get $16) + (local.get $15) (i32.const 32) ) ) @@ -4018,7 +3729,7 @@ ) (i32.eq (i32.load8_s - (local.get $9) + (local.get $10) ) (i32.const 45) ) @@ -4026,7 +3737,7 @@ ) ) ) - (local.set $11 + (local.set $12 (i32.or (local.get $27) (i32.const 2) @@ -4102,11 +3813,11 @@ ) ) (i32.add - (local.get $16) + (local.get $15) (i32.const 15) ) ) - (local.set $16 + (local.set $15 (i32.lt_s (local.get $6) (i32.const 1) @@ -4115,7 +3826,7 @@ (local.set $20 (i32.eqz (i32.and - (local.get $12) + (local.get $9) (i32.const 8) ) ) @@ -4158,7 +3869,7 @@ (i32.const 4075) ) ) - (local.get $15) + (local.get $16) ) ) (local.set $14 @@ -4190,7 +3901,7 @@ (i32.and (local.get $20) (i32.and - (local.get $16) + (local.get $15) (f64.eq (local.get $14) (f64.const 0) @@ -4256,10 +3967,10 @@ ) ) ) - (local.get $11) + (local.get $12) ) ) - (local.get $12) + (local.get $9) ) (if (i32.eqz @@ -4272,8 +3983,8 @@ ) (drop (call $___fwritex - (local.get $9) - (local.get $11) + (local.get $10) + (local.get $12) (local.get $0) ) ) @@ -4284,7 +3995,7 @@ (local.get $17) (local.get $7) (i32.xor - (local.get $12) + (local.get $9) (i32.const 65536) ) ) @@ -4352,7 +4063,7 @@ (local.get $17) (local.get $7) (i32.xor - (local.get $12) + (local.get $9) (i32.const 8192) ) ) @@ -4465,7 +4176,7 @@ ) (if (i32.gt_s - (local.tee $9 + (local.tee $10 (i32.load (local.get $21) ) @@ -4477,19 +4188,19 @@ (local.get $8) ) (loop $while-in62 - (local.set $15 + (local.set $16 (select (i32.const 29) - (local.get $9) + (local.get $10) (i32.gt_s - (local.get $9) + (local.get $10) (i32.const 29) ) ) ) (if (i32.ge_u - (local.tee $9 + (local.tee $10 (i32.sub (local.get $7) (i32.const 4) @@ -4498,12 +4209,12 @@ (local.get $5) ) (block $do-once63 - (local.set $11 + (local.set $12 (i32.const 0) ) (loop $while-in66 (i32.store - (local.get $9) + (local.get $10) (call $___uremdi3 (block (result i32) (global.set $tempRet0 @@ -4512,15 +4223,15 @@ (local.tee $20 (call $_bitshift64Shl (i32.load - (local.get $9) + (local.get $10) ) (i32.const 0) - (local.get $15) + (local.get $16) ) ) - (local.tee $11 + (local.tee $12 (i32.add - (local.get $11) + (local.get $12) (local.get $20) ) ) @@ -4528,7 +4239,7 @@ (global.get $tempRet0) ) ) - (local.get $11) + (local.get $12) ) (local.tee $20 (global.get $tempRet0) @@ -4537,9 +4248,9 @@ (i32.const 0) ) ) - (local.set $11 + (local.set $12 (call $___udivdi3 - (local.get $11) + (local.get $12) (local.get $20) (i32.const 1000000000) (i32.const 0) @@ -4547,9 +4258,9 @@ ) (br_if $while-in66 (i32.ge_u - (local.tee $9 + (local.tee $10 (i32.sub - (local.get $9) + (local.get $10) (i32.const 4) ) ) @@ -4559,7 +4270,7 @@ ) (br_if $do-once63 (i32.eqz - (local.get $11) + (local.get $12) ) ) (i32.store @@ -4569,7 +4280,7 @@ (i32.const 4) ) ) - (local.get $11) + (local.get $12) ) ) ) @@ -4582,7 +4293,7 @@ (if (i32.eqz (i32.load - (local.tee $9 + (local.tee $10 (i32.sub (local.get $7) (i32.const 4) @@ -4592,7 +4303,7 @@ ) (block (local.set $7 - (local.get $9) + (local.get $10) ) (br $while-in68) ) @@ -4601,18 +4312,18 @@ ) (i32.store (local.get $21) - (local.tee $9 + (local.tee $10 (i32.sub (i32.load (local.get $21) ) - (local.get $15) + (local.get $16) ) ) ) (br_if $while-in62 (i32.gt_s - (local.get $9) + (local.get $10) (i32.const 0) ) ) @@ -4634,7 +4345,7 @@ ) (if (i32.lt_s - (local.get $9) + (local.get $10) (i32.const 0) ) (block @@ -4664,13 +4375,13 @@ ) (local.set $5 (loop $while-in70 (result i32) - (local.set $15 + (local.set $16 (select (i32.const 9) (local.tee $7 (i32.sub (i32.const 0) - (local.get $9) + (local.get $10) ) ) (i32.gt_s @@ -4685,11 +4396,11 @@ (local.get $6) ) (block $do-once71 - (local.set $11 + (local.set $12 (i32.sub (i32.shl (i32.const 1) - (local.get $15) + (local.get $16) ) (i32.const 1) ) @@ -4697,10 +4408,10 @@ (local.set $35 (i32.shr_u (i32.const 1000000000) - (local.get $15) + (local.get $16) ) ) - (local.set $9 + (local.set $10 (i32.const 0) ) (local.set $7 @@ -4710,22 +4421,22 @@ (i32.store (local.get $7) (i32.add - (local.get $9) + (local.get $10) (i32.shr_u - (local.tee $9 + (local.tee $10 (i32.load (local.get $7) ) ) - (local.get $15) + (local.get $16) ) ) ) - (local.set $9 + (local.set $10 (i32.mul (i32.and - (local.get $9) - (local.get $11) + (local.get $10) + (local.get $12) ) (local.get $35) ) @@ -4756,12 +4467,12 @@ ) (br_if $do-once71 (i32.eqz - (local.get $9) + (local.get $10) ) ) (i32.store (local.get $5) - (local.get $9) + (local.get $10) ) (local.set $5 (i32.add @@ -4783,7 +4494,7 @@ ) ) ) - (local.set $11 + (local.set $12 (select (i32.add (local.tee $6 @@ -4813,18 +4524,18 @@ ) (i32.store (local.get $21) - (local.tee $9 + (local.tee $10 (i32.add (i32.load (local.get $21) ) - (local.get $15) + (local.get $16) ) ) ) (if (result i32) (i32.lt_s - (local.get $9) + (local.get $10) (i32.const 0) ) (block @@ -4832,13 +4543,13 @@ (local.get $7) ) (local.set $5 - (local.get $11) + (local.get $12) ) (br $while-in70) ) (block (result i32) - (local.set $9 - (local.get $11) + (local.set $10 + (local.get $12) ) (local.get $7) ) @@ -4846,7 +4557,7 @@ ) ) ) - (local.set $9 + (local.set $10 (local.get $7) ) ) @@ -4856,7 +4567,7 @@ (if (i32.lt_u (local.get $5) - (local.get $9) + (local.get $10) ) (block $do-once75 (local.set $7 @@ -4950,7 +4661,7 @@ (i32.mul (i32.shr_s (i32.sub - (local.get $9) + (local.get $10) (local.get $20) ) (i32.const 2) @@ -4986,13 +4697,13 @@ (i32.const 9) ) (block - (local.set $11 + (local.set $12 (i32.const 10) ) (loop $while-in80 - (local.set $11 + (local.set $12 (i32.mul - (local.get $11) + (local.get $12) (i32.const 10) ) ) @@ -5009,11 +4720,11 @@ ) ) ) - (local.set $11 + (local.set $12 (i32.const 10) ) ) - (local.set $15 + (local.set $16 (local.tee $8 (i32.load (local.tee $6 @@ -5031,12 +4742,12 @@ ) ) ) - (local.set $15 + (local.set $16 (if (result i32) - (local.get $11) + (local.get $12) (i32.rem_u - (local.get $15) - (local.get $11) + (local.get $16) + (local.get $12) ) (i32.const 0) ) @@ -5050,21 +4761,21 @@ (local.get $6) (i32.const 4) ) - (local.get $9) + (local.get $10) ) ) (i32.eqz - (local.get $15) + (local.get $16) ) ) ) (block $do-once81 (local.set $36 (if (result i32) - (local.get $11) + (local.get $12) (i32.div_u (local.get $8) - (local.get $11) + (local.get $12) ) (i32.const 0) ) @@ -5072,10 +4783,10 @@ (local.set $14 (if (result f64) (i32.lt_u - (local.get $15) + (local.get $16) (local.tee $48 (i32.div_s - (local.get $11) + (local.get $12) (i32.const 2) ) ) @@ -5087,7 +4798,7 @@ (i32.and (local.get $26) (i32.eq - (local.get $15) + (local.get $16) (local.get $48) ) ) @@ -5132,7 +4843,7 @@ (local.tee $8 (i32.sub (local.get $8) - (local.get $15) + (local.get $16) ) ) ) @@ -5150,7 +4861,7 @@ (local.tee $7 (i32.add (local.get $8) - (local.get $11) + (local.get $12) ) ) ) @@ -5225,7 +4936,7 @@ (i32.const 10) ) ) - (local.set $11 + (local.set $12 (i32.const 10) ) (loop $while-in88 @@ -5238,9 +4949,9 @@ (br_if $while-in88 (i32.ge_u (local.get $8) - (local.tee $11 + (local.tee $12 (i32.mul - (local.get $11) + (local.get $12) (i32.const 10) ) ) @@ -5249,7 +4960,7 @@ ) ) ) - (local.set $11 + (local.set $12 (local.get $5) ) (local.set $8 @@ -5262,21 +4973,21 @@ (i32.const 4) ) ) - (local.get $9) + (local.get $10) (i32.lt_u (local.get $5) - (local.get $9) + (local.get $10) ) ) ) (block (result i32) - (local.set $11 + (local.set $12 (local.get $5) ) (local.set $8 (local.get $7) ) - (local.get $9) + (local.get $10) ) ) ) @@ -5286,13 +4997,13 @@ (local.get $8) ) ) - (local.set $9 + (local.set $10 (loop $while-in90 (result i32) (block $while-out89 (result i32) (if (i32.le_u (local.get $5) - (local.get $11) + (local.get $12) ) (block (local.set $26 @@ -5371,7 +5082,7 @@ ) ) (i32.sub - (local.get $16) + (local.get $15) (i32.const 1) ) ) @@ -5383,7 +5094,7 @@ ) ) (i32.sub - (local.get $16) + (local.get $15) (i32.const 2) ) ) @@ -5392,9 +5103,9 @@ (drop (br_if $do-once91 (local.get $19) - (local.tee $15 + (local.tee $16 (i32.and - (local.get $12) + (local.get $9) (i32.const 8) ) ) @@ -5405,10 +5116,10 @@ (block $do-once93 (if (i32.eqz - (local.tee $16 + (local.tee $15 (i32.load (i32.sub - (local.get $9) + (local.get $10) (i32.const 4) ) ) @@ -5424,7 +5135,7 @@ (local.set $5 (if (result i32) (i32.rem_u - (local.get $16) + (local.get $15) (i32.const 10) ) (block @@ -5451,7 +5162,7 @@ (br_if $while-in96 (i32.eqz (if (result i32) - (local.tee $15 + (local.tee $16 (local.tee $6 (i32.mul (local.get $6) @@ -5460,8 +5171,8 @@ ) ) (i32.rem_u - (local.get $16) (local.get $15) + (local.get $16) ) (i32.const 0) ) @@ -5478,7 +5189,7 @@ (i32.mul (i32.shr_s (i32.sub - (local.get $9) + (local.get $10) (local.get $20) ) (i32.const 2) @@ -5497,7 +5208,7 @@ (i32.const 102) ) (block (result i32) - (local.set $15 + (local.set $16 (i32.const 0) ) (select @@ -5524,7 +5235,7 @@ ) ) (block (result i32) - (local.set $15 + (local.set $16 (i32.const 0) ) (select @@ -5556,14 +5267,14 @@ ) ) (block (result i32) - (local.set $15 + (local.set $16 (i32.and - (local.get $12) + (local.get $9) (i32.const 8) ) ) (local.set $7 - (local.get $16) + (local.get $15) ) (local.get $19) ) @@ -5578,7 +5289,7 @@ (local.tee $19 (i32.or (local.get $5) - (local.get $15) + (local.get $16) ) ) (i32.const 0) @@ -5595,7 +5306,7 @@ ) ) (block (result i32) - (local.set $16 + (local.set $15 (i32.const 0) ) (select @@ -5678,7 +5389,7 @@ ) ) (i32.store8 - (local.tee $16 + (local.tee $15 (i32.sub (local.get $6) (i32.const 2) @@ -5688,13 +5399,13 @@ ) (i32.sub (local.get $22) - (local.get $16) + (local.get $15) ) ) ) ) ) - (local.get $12) + (local.get $9) ) (if (i32.eqz @@ -5719,7 +5430,7 @@ (local.get $17) (local.get $8) (i32.xor - (local.get $12) + (local.get $9) (i32.const 65536) ) ) @@ -5727,12 +5438,12 @@ (local.get $31) (block (local.set $6 - (local.tee $11 + (local.tee $12 (select (local.get $20) - (local.get $11) + (local.get $12) (i32.gt_u - (local.get $11) + (local.get $12) (local.get $20) ) ) @@ -5752,7 +5463,7 @@ (if (i32.eq (local.get $6) - (local.get $11) + (local.get $12) ) (block (br_if $do-once103 @@ -5862,7 +5573,7 @@ (i32.and (i32.lt_u (local.get $7) - (local.get $9) + (local.get $10) ) (i32.gt_s (local.get $5) @@ -5940,7 +5651,7 @@ (i32.const 4) ) ) - (local.get $9) + (local.get $10) ) (i32.gt_s (local.get $5) @@ -5967,9 +5678,9 @@ (block $do-once99 (local.set $20 (select - (local.get $9) + (local.get $10) (i32.add - (local.get $11) + (local.get $12) (i32.const 4) ) (local.get $26) @@ -5985,13 +5696,13 @@ (i32.const -1) ) (block (result i32) - (local.set $15 + (local.set $16 (i32.eqz - (local.get $15) + (local.get $16) ) ) (local.set $6 - (local.get $11) + (local.get $12) ) (local.set $7 (local.get $5) @@ -6024,7 +5735,7 @@ (if (i32.eq (local.get $6) - (local.get $11) + (local.get $12) ) (block (if @@ -6052,7 +5763,7 @@ ) (br_if $do-once115 (i32.and - (local.get $15) + (local.get $16) (i32.lt_s (local.get $7) (i32.const 1) @@ -6102,7 +5813,7 @@ ) ) ) - (local.set $9 + (local.set $10 (i32.sub (local.get $41) (local.get $5) @@ -6121,11 +5832,11 @@ (call $___fwritex (local.get $5) (select - (local.get $9) + (local.get $10) (local.get $7) (i32.gt_s (local.get $7) - (local.get $9) + (local.get $10) ) ) (local.get $0) @@ -6147,7 +5858,7 @@ (local.tee $7 (i32.sub (local.get $7) - (local.get $9) + (local.get $10) ) ) (i32.const -1) @@ -6174,10 +5885,10 @@ ) (drop (call $___fwritex - (local.get $16) + (local.get $15) (i32.sub (local.get $22) - (local.get $16) + (local.get $15) ) (local.get $0) ) @@ -6190,7 +5901,7 @@ (local.get $17) (local.get $8) (i32.xor - (local.get $12) + (local.get $9) (i32.const 8192) ) ) @@ -6210,7 +5921,7 @@ (local.get $17) (local.tee $7 (i32.add - (local.tee $9 + (local.tee $8 (select (i32.const 0) (local.get $27) @@ -6225,7 +5936,33 @@ (i32.const 3) ) ) - (local.get $8) + (local.get $12) + ) + (if + (i32.eqz + (i32.and + (local.tee $5 + (i32.load + (local.get $0) + ) + ) + (i32.const 32) + ) + ) + (block + (drop + (call $___fwritex + (local.get $30) + (local.get $8) + (local.get $0) + ) + ) + (local.set $5 + (i32.load + (local.get $0) + ) + ) + ) ) (local.set $6 (select @@ -6235,7 +5972,7 @@ (local.tee $8 (i32.ne (i32.and - (local.get $16) + (local.get $15) (i32.const 32) ) (i32.const 0) @@ -6253,29 +5990,7 @@ (if (i32.eqz (i32.and - (if (result i32) - (i32.and - (local.tee $5 - (i32.load - (local.get $0) - ) - ) - (i32.const 32) - ) - (local.get $5) - (block (result i32) - (drop - (call $___fwritex - (local.get $30) - (local.get $9) - (local.get $0) - ) - ) - (i32.load - (local.get $0) - ) - ) - ) + (local.get $5) (i32.const 32) ) ) @@ -6293,7 +6008,7 @@ (local.get $17) (local.get $7) (i32.xor - (local.get $12) + (local.get $9) (i32.const 8192) ) ) @@ -6309,9 +6024,9 @@ ) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $7) ) (br $label$continue$L1) @@ -6319,22 +6034,22 @@ (local.set $7 (local.get $5) ) - (local.set $11 + (local.set $12 (local.get $6) ) (local.set $8 (i32.const 0) ) - (local.set $9 + (local.set $10 (i32.const 4091) ) (br $__rjto$8 (local.get $25) ) ) - (local.set $9 + (local.set $10 (i32.and - (local.get $16) + (local.get $15) (i32.const 32) ) ) @@ -6345,7 +6060,7 @@ (local.get $13) ) ) - (local.tee $12 + (local.tee $9 (i32.load offset=4 (local.get $13) ) @@ -6374,7 +6089,7 @@ (i32.const 4075) ) ) - (local.get $9) + (local.get $10) ) ) (br_if $while-in123 @@ -6382,11 +6097,11 @@ (local.tee $5 (call $_bitshift64Lshr (local.get $5) - (local.get $12) + (local.get $9) (i32.const 4) ) ) - (local.tee $12 + (local.tee $9 (global.get $tempRet0) ) ) @@ -6415,16 +6130,16 @@ ) ) (block (result i32) - (local.set $9 + (local.set $10 (i32.const 4091) ) (i32.const 0) ) (block (result i32) - (local.set $9 + (local.set $10 (i32.add (i32.shr_s - (local.get $16) + (local.get $15) (i32.const 4) ) (i32.const 4091) @@ -6442,7 +6157,7 @@ (local.set $8 (i32.const 0) ) - (local.set $9 + (local.set $10 (i32.const 4091) ) ) @@ -6457,40 +6172,222 @@ ) ) (local.set $7 - (local.get $12) + (local.get $9) ) (br $__rjti$8) ) - (local.set $15 + (block $label$break$L8 + (block $__rjti$29 + (if + (i32.and + (local.tee $10 + (i32.ne + (local.tee $7 + (local.get $6) + ) + (i32.const 0) + ) + ) + (i32.ne + (i32.and + (local.tee $9 + (local.get $5) + ) + (i32.const 3) + ) + (i32.const 0) + ) + ) + (block + (local.set $8 + (local.get $9) + ) + (loop $while-in12 + (br_if $__rjti$29 + (i32.eqz + (i32.load8_u + (local.get $8) + ) + ) + ) + (br_if $while-in12 + (i32.and + (local.tee $9 + (i32.ne + (local.tee $7 + (i32.sub + (local.get $7) + (i32.const 1) + ) + ) + (i32.const 0) + ) + ) + (i32.ne + (i32.and + (local.tee $8 + (i32.add + (local.get $8) + (i32.const 1) + ) + ) + (i32.const 3) + ) + (i32.const 0) + ) + ) + ) + ) + ) + (block + (local.set $8 + (local.get $9) + ) + (local.set $9 + (local.get $10) + ) + ) + ) + (br_if $__rjti$29 + (local.get $9) + ) + (local.set $9 + (i32.const 0) + ) + (br $label$break$L8) + ) + (local.set $9 + (local.get $7) + ) + (if + (i32.load8_u + (local.get $8) + ) + (block + (block $__rjto$013 + (block $__rjti$014 + (br_if $__rjti$014 + (i32.le_u + (local.get $9) + (i32.const 3) + ) + ) + (loop $while-in315 + (if + (i32.eqz + (i32.and + (i32.xor + (i32.and + (local.tee $7 + (i32.load + (local.get $8) + ) + ) + (i32.const -2139062144) + ) + (i32.const -2139062144) + ) + (i32.sub + (local.get $7) + (i32.const 16843009) + ) + ) + ) + (block + (local.set $8 + (i32.add + (local.get $8) + (i32.const 4) + ) + ) + (br_if $while-in315 + (i32.gt_u + (local.tee $9 + (i32.sub + (local.get $9) + (i32.const 4) + ) + ) + (i32.const 3) + ) + ) + (br $__rjti$014) + ) + ) + ) + (br $__rjto$013) + ) + (if + (i32.eqz + (local.get $9) + ) + (block + (local.set $9 + (i32.const 0) + ) + (br $label$break$L8) + ) + ) + ) + (local.set $9 + (loop $while-in5 (result i32) + (br_if $label$break$L8 + (i32.eqz + (i32.load8_u + (local.get $8) + ) + ) + ) + (local.set $8 + (i32.add + (local.get $8) + (i32.const 1) + ) + ) + (br_if $while-in5 + (local.tee $9 + (i32.sub + (local.get $9) + (i32.const 1) + ) + ) + ) + (i32.const 0) + ) + ) + ) + ) + ) + (local.set $16 (i32.eqz - (local.tee $16 - (call $_memchr - (local.get $5) + (local.tee $15 + (select + (local.get $8) (i32.const 0) - (local.get $6) + (local.get $9) ) ) ) ) - (local.set $12 - (local.get $8) + (local.set $9 + (local.get $12) ) - (local.set $11 + (local.set $12 (select (local.get $6) (i32.sub - (local.get $16) + (local.get $15) (local.tee $7 (local.get $5) ) ) - (local.get $15) + (local.get $16) ) ) (local.set $8 (i32.const 0) ) - (local.set $9 + (local.set $10 (i32.const 4091) ) (br $__rjto$8 @@ -6499,8 +6396,8 @@ (local.get $5) (local.get $6) ) - (local.get $16) (local.get $15) + (local.get $16) ) ) ) @@ -6519,7 +6416,7 @@ (block $while-out124 (br_if $while-out124 (i32.eqz - (local.tee $9 + (local.tee $10 (i32.load (local.get $6) ) @@ -6532,7 +6429,7 @@ (local.tee $7 (call $_wctomb (local.get $33) - (local.get $9) + (local.get $10) ) ) (i32.const 0) @@ -6582,7 +6479,7 @@ (i32.const 32) (local.get $17) (local.get $5) - (local.get $12) + (local.get $9) ) (if (result i32) (local.get $5) @@ -6664,14 +6561,14 @@ ) ) (i32.xor - (local.get $12) + (local.get $9) (i32.const 8192) ) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (select (local.get $17) (local.get $7) @@ -6683,7 +6580,7 @@ ) (br $label$continue$L1) ) - (local.set $12 + (local.set $9 (select (i32.and (local.get $7) @@ -6696,11 +6593,11 @@ ) ) ) - (local.set $11 + (local.set $12 (if (result i32) (i32.or (local.get $6) - (local.tee $11 + (local.tee $12 (i32.or (i32.ne (i32.load @@ -6728,7 +6625,7 @@ ) ) (i32.xor - (local.get $11) + (local.get $12) (i32.const 1) ) ) @@ -6751,10 +6648,10 @@ (local.get $7) ) ) - (local.get $11) + (local.get $12) (i32.lt_s - (local.get $11) - (local.get $16) + (local.get $12) + (local.get $15) ) ) ) @@ -6769,7 +6666,7 @@ ) ) (local.get $5) - (local.get $12) + (local.get $9) ) (if (i32.eqz @@ -6782,7 +6679,7 @@ ) (drop (call $___fwritex - (local.get $9) + (local.get $10) (local.get $8) (local.get $0) ) @@ -6794,15 +6691,15 @@ (local.get $6) (local.get $5) (i32.xor - (local.get $12) + (local.get $9) (i32.const 65536) ) ) (call $_pad (local.get $0) (i32.const 48) - (local.get $11) - (local.get $16) + (local.get $12) + (local.get $15) (i32.const 0) ) (if @@ -6817,7 +6714,7 @@ (drop (call $___fwritex (local.get $7) - (local.get $16) + (local.get $15) (local.get $0) ) ) @@ -6828,14 +6725,14 @@ (local.get $6) (local.get $5) (i32.xor - (local.get $12) + (local.get $9) (i32.const 8192) ) ) (local.set $5 - (local.get $10) + (local.get $11) ) - (local.set $10 + (local.set $11 (local.get $6) ) (br $label$continue$L1) diff --git a/test/passes/inlining_optimize-level=3.txt b/test/passes/inlining_optimize-level=3.txt index 74e1a0a99..c2c4013ab 100644 --- a/test/passes/inlining_optimize-level=3.txt +++ b/test/passes/inlining_optimize-level=3.txt @@ -8,45 +8,6 @@ (func $yes (result i32) (i32.const 1) ) - (func $no-tooBig (result i32) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (nop) - (i32.const 1) - ) (func $no-loops-but-one-use-but-exported (result i32) (loop $loop-in (result i32) (i32.const 1) @@ -66,7 +27,49 @@ ) ) (drop - (call $no-tooBig) + (block (result i32) + (block $__inlined_func$yes-big-but-single-use (result i32) + (block (result i32) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (nop) + (i32.const 1) + ) + ) + ) ) (drop (block (result i32) diff --git a/test/passes/inlining_optimize-level=3.wast b/test/passes/inlining_optimize-level=3.wast index 9ed44e30a..ba976e56a 100644 --- a/test/passes/inlining_optimize-level=3.wast +++ b/test/passes/inlining_optimize-level=3.wast @@ -7,7 +7,7 @@ (func $yes (result i32) ;; inlinable: small, lightweight, even with multi uses and a global use, ok when opt-level=3 (i32.const 1) ) - (func $no-tooBig (result i32) + (func $yes-big-but-single-use (result i32) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) (nop) @@ -44,7 +44,7 @@ ) (func $intoHere (drop (call $yes)) - (drop (call $no-tooBig)) + (drop (call $yes-big-but-single-use)) (drop (call $no-calls)) (drop (call $no-calls)) (drop (call $yes-calls-but-one-use)) diff --git a/test/wasm2js/conversions-modified.2asm.js.opt b/test/wasm2js/conversions-modified.2asm.js.opt index 499b78c5b..26480d72b 100644 --- a/test/wasm2js/conversions-modified.2asm.js.opt +++ b/test/wasm2js/conversions-modified.2asm.js.opt @@ -66,18 +66,6 @@ function asmFunc(env) { return ~~$0 >>> 0 | 0; } - function $7($0) { - $0 = Math_fround($0); - i64toi32_i32$HIGH_BITS = Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 * Math_fround(2.3283064365386963e-10)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) * Math_fround(2.3283064365386963e-10)))) >>> 0) : 0; - return ~~$0 >>> 0 | 0; - } - - function $9($0) { - $0 = +$0; - i64toi32_i32$HIGH_BITS = Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 * 2.3283064365386963e-10), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) * 2.3283064365386963e-10) >>> 0) : 0; - return ~~$0 >>> 0 | 0; - } - function $11($0) { $0 = $0 | 0; return Math_fround(Math_fround($0 | 0)); @@ -135,17 +123,15 @@ function asmFunc(env) { } function legalstub$7($0) { - var $1 = 0; - $1 = $7($0); + i64toi32_i32$HIGH_BITS = Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 * Math_fround(2.3283064365386963e-10)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) * Math_fround(2.3283064365386963e-10)))) >>> 0) : 0; setTempRet0(i64toi32_i32$HIGH_BITS | 0); - return $1; + return ~~$0 >>> 0; } function legalstub$9($0) { - var $1 = 0; - $1 = $9($0); + i64toi32_i32$HIGH_BITS = Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 * 2.3283064365386963e-10), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) * 2.3283064365386963e-10) >>> 0) : 0; setTempRet0(i64toi32_i32$HIGH_BITS | 0); - return $1; + return ~~$0 >>> 0; } function legalstub$12($0, $1) { diff --git a/test/wasm2js/i64-add-sub.2asm.js.opt b/test/wasm2js/i64-add-sub.2asm.js.opt index ccbcf0126..62f464829 100644 --- a/test/wasm2js/i64-add-sub.2asm.js.opt +++ b/test/wasm2js/i64-add-sub.2asm.js.opt @@ -13,25 +13,15 @@ function asmFunc(env) { var abort = env.abort; var nan = NaN; var infinity = Infinity; - function $1($0, $1_1, $2, $3, $4, $5) { - $0 = $0 | 0; - $1_1 = $1_1 | 0; - $2 = $2 | 0; - $3 = $3 | 0; - $4 = $4 | 0; - $5 = $5 | 0; - $1_1 = $1_1 + $3 | 0; + function legalstub$1($0, $1, $2, $3, $4, $5) { + $1 = $1 + $3 | 0; $0 = $0 + $2 | 0; - $1_1 = $2 >>> 0 > $0 >>> 0 ? $1_1 + 1 | 0 : $1_1; - return ($0 | 0) == ($4 | 0) & ($1_1 | 0) == ($5 | 0); + $1 = $2 >>> 0 > $0 >>> 0 ? $1 + 1 | 0 : $1; + return ($0 | 0) == ($4 | 0) & ($1 | 0) == ($5 | 0); } - function legalstub$1($0, $1_1, $2, $3, $4, $5) { - return $1($0, $1_1, $2, $3, $4, $5); - } - - function legalstub$2($0, $1_1, $2, $3, $4, $5) { - return ($4 | 0) == ($0 - $2 | 0) & ($5 | 0) == ($1_1 - (($0 >>> 0 < $2 >>> 0) + $3 | 0) | 0); + function legalstub$2($0, $1, $2, $3, $4, $5) { + return ($4 | 0) == ($0 - $2 | 0) & ($5 | 0) == ($1 - (($0 >>> 0 < $2 >>> 0) + $3 | 0) | 0); } return { diff --git a/test/wasm2js/i64-ctz.2asm.js.opt b/test/wasm2js/i64-ctz.2asm.js.opt index 5fe370d39..fc2e030b9 100644 --- a/test/wasm2js/i64-ctz.2asm.js.opt +++ b/test/wasm2js/i64-ctz.2asm.js.opt @@ -17,52 +17,48 @@ function asmFunc(env) { var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; function legalstub$popcnt64($0, $1) { - $0 = __wasm_popcnt_i64($0, $1); + var $2 = 0, $3 = 0, $4 = 0, $5 = 0; + $2 = $1; + while (1) { + $1 = $3; + $5 = $4; + if ($0 | $2) { + $1 = $0; + $0 = $0 - 1 & $0; + $2 = $2 - ($1 >>> 0 < 1) & $2; + $3 = $3 + 1 | 0; + $4 = $3 >>> 0 < 1 ? $4 + 1 | 0 : $4; + continue; + } + break; + }; + i64toi32_i32$HIGH_BITS = $5; + $0 = $1; setTempRet0(i64toi32_i32$HIGH_BITS | 0); return $0; } function legalstub$ctz64($0, $1) { - $0 = __wasm_ctz_i64($0, $1); - setTempRet0(i64toi32_i32$HIGH_BITS | 0); - return $0; - } - - function __wasm_ctz_i64($0, $1) { - var $2 = 0, $3 = 0; - if ($0 | $1) { - $2 = $1 - 1 | 0; - $3 = $0 - 1 | 0; - $2 = ($3 | 0) != -1 ? $2 + 1 | 0 : $2; - $3 = Math_clz32($0 ^ $3) + 32 | 0; - $0 = Math_clz32($1 ^ $2); - $0 = ($0 | 0) == 32 ? $3 : $0; - $1 = 63 - $0 | 0; - i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0; - return $1; - } - i64toi32_i32$HIGH_BITS = 0; - return 64; - } - - function __wasm_popcnt_i64($0, $1) { var $2 = 0, $3 = 0, $4 = 0, $5 = 0; - while (1) { - $5 = $4; - $2 = $3; + __inlined_func$__wasm_ctz_i64 : { if ($0 | $1) { - $2 = $0; - $0 = $2 - 1 & $2; - $1 = $1 - ($2 >>> 0 < 1) & $1; - $2 = $4 + 1 | 0; - $3 = $2 >>> 0 < 1 ? $3 + 1 | 0 : $3; + $2 = $1 - 1 | 0; + $3 = $2 + 1 | 0; $4 = $2; - continue; + $2 = $0 - 1 | 0; + $5 = Math_clz32($0 ^ $2) + 32 | 0; + $0 = Math_clz32($1 ^ (($2 | 0) != -1 ? $3 : $4)); + $0 = ($0 | 0) == 32 ? $5 : $0; + $1 = 63 - $0 | 0; + i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0; + $0 = $1; + break __inlined_func$__wasm_ctz_i64; } - break; - }; - i64toi32_i32$HIGH_BITS = $2; - return $5; + i64toi32_i32$HIGH_BITS = 0; + $0 = 64; + } + setTempRet0(i64toi32_i32$HIGH_BITS | 0); + return $0; } return { diff --git a/test/wasm2js/i64-rotate.2asm.js.opt b/test/wasm2js/i64-rotate.2asm.js.opt index b74f97053..ecffd160a 100644 --- a/test/wasm2js/i64-rotate.2asm.js.opt +++ b/test/wasm2js/i64-rotate.2asm.js.opt @@ -15,104 +15,100 @@ function asmFunc(env) { var infinity = Infinity; var i64toi32_i32$HIGH_BITS = 0; function legalstub$1($0, $1, $2, $3, $4, $5) { - return (__wasm_rotl_i64($0, $1, $2) | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0); - } - - function legalstub$2($0, $1, $2, $3, $4, $5) { - return (__wasm_rotr_i64($0, $1, $2) | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0); - } - - function __wasm_rotl_i64($0, $1, $2) { - var $3 = 0, $4 = 0, $5 = 0, $6 = 0; - $6 = $2 & 63; - $5 = $6; - $3 = $5 & 31; - if ($5 >>> 0 >= 32) { - $3 = -1 >>> $3 | 0 + var $6 = 0, $7 = 0, $8 = 0; + $3 = $0; + $8 = $2 & 63; + $6 = $8; + $0 = $6 & 31; + if ($6 >>> 0 >= 32) { + $0 = -1 >>> $0 | 0 } else { - $4 = -1 >>> $3 | 0; - $3 = (1 << $3) - 1 << 32 - $3 | -1 >>> $3; + $7 = -1 >>> $0 | 0; + $0 = (1 << $0) - 1 << 32 - $0 | -1 >>> $0; } - $5 = $3 & $0; - $3 = $1 & $4; - $4 = $6 & 31; - if ($6 >>> 0 >= 32) { - $3 = $5 << $4; - $6 = 0; + $6 = $0 & $3; + $0 = $1 & $7; + $7 = $8 & 31; + if ($8 >>> 0 >= 32) { + $0 = $6 << $7; + $8 = 0; } else { - $3 = (1 << $4) - 1 & $5 >>> 32 - $4 | $3 << $4; - $6 = $5 << $4; + $0 = (1 << $7) - 1 & $6 >>> 32 - $7 | $0 << $7; + $8 = $6 << $7; } - $5 = $3; - $4 = 0 - $2 & 63; - $3 = $4; - $2 = $3 & 31; - if ($3 >>> 0 >= 32) { - $3 = -1 << $2; + $7 = $0; + $6 = 0 - $2 & 63; + $0 = $6; + $2 = $0 & 31; + if ($0 >>> 0 >= 32) { + $0 = -1 << $2; $2 = 0; } else { - $3 = (1 << $2) - 1 & -1 >>> 32 - $2 | -1 << $2; + $0 = (1 << $2) - 1 & -1 >>> 32 - $2 | -1 << $2; $2 = -1 << $2; } - $0 = $2 & $0; - $3 = $1 & $3; - $1 = $4 & 31; - if ($4 >>> 0 >= 32) { + $3 = $2 & $3; + $1 = $0 & $1; + $0 = $6 & 31; + if ($6 >>> 0 >= 32) { $2 = 0; - $0 = $3 >>> $1 | 0; + $0 = $1 >>> $0 | 0; } else { - $2 = $3 >>> $1 | 0; - $0 = ((1 << $1) - 1 & $3) << 32 - $1 | $0 >>> $1; + $2 = $1 >>> $0 | 0; + $0 = ((1 << $0) - 1 & $1) << 32 - $0 | $3 >>> $0; } - $0 = $0 | $6; - i64toi32_i32$HIGH_BITS = $2 | $5; - return $0; + $0 = $0 | $8; + i64toi32_i32$HIGH_BITS = $2 | $7; + return ($0 | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0); } - function __wasm_rotr_i64($0, $1, $2) { - var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0; - $6 = $2 & 63; - $3 = $6 & 31; - if ($6 >>> 0 >= 32) { - $4 = -1 << $3; - $7 = 0; + function legalstub$2($0, $1, $2, $3, $4, $5) { + var $6 = 0, $7 = 0, $8 = 0, $9 = 0; + $3 = $0; + $8 = $2 & 63; + $0 = $8; + $6 = $0 & 31; + if ($0 >>> 0 >= 32) { + $0 = -1 << $6; + $6 = 0; } else { - $4 = (1 << $3) - 1 & -1 >>> 32 - $3 | -1 << $3; - $7 = -1 << $3; + $0 = (1 << $6) - 1 & -1 >>> 32 - $6 | -1 << $6; + $6 = -1 << $6; } - $7 = $7 & $0; - $3 = $1 & $4; - $5 = $6 & 31; - if ($6 >>> 0 >= 32) { - $4 = 0; - $6 = $3 >>> $5 | 0; + $9 = $6 & $3; + $7 = $0 & $1; + $6 = $8 & 31; + if ($8 >>> 0 >= 32) { + $0 = 0; + $8 = $7 >>> $6 | 0; } else { - $4 = $3 >>> $5 | 0; - $6 = ((1 << $5) - 1 & $3) << 32 - $5 | $7 >>> $5; + $0 = $7 >>> $6 | 0; + $8 = ((1 << $6) - 1 & $7) << 32 - $6 | $9 >>> $6; } - $7 = $4; - $3 = 0 - $2 & 63; - $5 = $3 & 31; - if ($3 >>> 0 >= 32) { - $4 = 0; - $2 = -1 >>> $5 | 0; + $6 = $0; + $7 = 0 - $2 & 63; + $0 = $7; + $2 = $0 & 31; + if ($0 >>> 0 >= 32) { + $0 = 0; + $2 = -1 >>> $2 | 0; } else { - $4 = -1 >>> $5 | 0; - $2 = (1 << $5) - 1 << 32 - $5 | -1 >>> $5; + $0 = -1 >>> $2 | 0; + $2 = (1 << $2) - 1 << 32 - $2 | -1 >>> $2; } - $0 = $2 & $0; - $1 = $1 & $4; - $4 = $3 & 31; - if ($3 >>> 0 >= 32) { - $2 = $0 << $4; + $2 = $2 & $3; + $1 = $0 & $1; + $0 = $7 & 31; + if ($7 >>> 0 >= 32) { + $1 = $2 << $0; $0 = 0; } else { - $2 = (1 << $4) - 1 & $0 >>> 32 - $4 | $1 << $4; - $0 = $0 << $4; + $1 = (1 << $0) - 1 & $2 >>> 32 - $0 | $1 << $0; + $0 = $2 << $0; } - $0 = $0 | $6; - i64toi32_i32$HIGH_BITS = $2 | $7; - return $0; + $0 = $0 | $8; + i64toi32_i32$HIGH_BITS = $1 | $6; + return ($0 | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0); } return { diff --git a/test/wasm2js/i64-shifts.2asm.js.opt b/test/wasm2js/i64-shifts.2asm.js.opt index 488263496..3bc6cac10 100644 --- a/test/wasm2js/i64-shifts.2asm.js.opt +++ b/test/wasm2js/i64-shifts.2asm.js.opt @@ -13,48 +13,28 @@ function asmFunc(env) { var abort = env.abort; var nan = NaN; var infinity = Infinity; - function $1($0, $1_1, $2_1, $3, $4) { - $0 = $0 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3 = $3 | 0; - $4 = $4 | 0; - var $5 = 0; - $5 = $2_1 & 31; - if (($2_1 & 63) >>> 0 >= 32) { - $1_1 = $0 << $5; + function legalstub$1($0, $1, $2, $3, $4, $5) { + $3 = $2 & 31; + if (($2 & 63) >>> 0 >= 32) { + $1 = $0 << $3; $0 = 0; } else { - $1_1 = (1 << $5) - 1 & $0 >>> 32 - $5 | $1_1 << $5; - $0 = $0 << $5; + $1 = (1 << $3) - 1 & $0 >>> 32 - $3 | $1 << $3; + $0 = $0 << $3; } - return ($0 | 0) == ($3 | 0) & ($1_1 | 0) == ($4 | 0); + return ($0 | 0) == ($4 | 0) & ($1 | 0) == ($5 | 0); } - function $2($0, $1_1, $2_1, $3, $4) { - $0 = $0 | 0; - $1_1 = $1_1 | 0; - $2_1 = $2_1 | 0; - $3 = $3 | 0; - $4 = $4 | 0; - var $5 = 0; - $5 = $2_1 & 31; - if (($2_1 & 63) >>> 0 >= 32) { - $2_1 = $1_1 >> 31; - $0 = $1_1 >> $5; + function legalstub$2($0, $1, $2, $3, $4, $5) { + $3 = $2 & 31; + if (($2 & 63) >>> 0 >= 32) { + $2 = $1 >> 31; + $0 = $1 >> $3; } else { - $2_1 = $1_1 >> $5; - $0 = ((1 << $5) - 1 & $1_1) << 32 - $5 | $0 >>> $5; + $2 = $1 >> $3; + $0 = ((1 << $3) - 1 & $1) << 32 - $3 | $0 >>> $3; } - return ($0 | 0) == ($3 | 0) & ($2_1 | 0) == ($4 | 0); - } - - function legalstub$1($0, $1_1, $2_1, $3, $4, $5) { - return $1($0, $1_1, $2_1, $4, $5); - } - - function legalstub$2($0, $1_1, $2_1, $3, $4, $5) { - return $2($0, $1_1, $2_1, $4, $5); + return ($0 | 0) == ($4 | 0) & ($2 | 0) == ($5 | 0); } return { diff --git a/test/wasm2js/reinterpret.2asm.js.opt b/test/wasm2js/reinterpret.2asm.js.opt index ffb64c1fa..cc5d4e984 100644 --- a/test/wasm2js/reinterpret.2asm.js.opt +++ b/test/wasm2js/reinterpret.2asm.js.opt @@ -48,19 +48,13 @@ function asmFunc(env) { return ((wasm2js_scratch_store_f32((wasm2js_scratch_store_i32(2, $0), wasm2js_scratch_load_f32())), wasm2js_scratch_load_i32(2)) | 0) == ($0 | 0) | 0; } - function $2($0, $1_1) { - $0 = $0 | 0; - $1_1 = $1_1 | 0; - var $2_1 = 0; + function legalstub$2($0, $1_1) { + var $2 = 0; wasm2js_scratch_store_i32(0, $0 | 0); wasm2js_scratch_store_i32(1, $1_1 | 0); wasm2js_scratch_store_f64(+wasm2js_scratch_load_f64()); - $2_1 = wasm2js_scratch_load_i32(1) | 0; - return (wasm2js_scratch_load_i32(0) | 0) == ($0 | 0) & ($1_1 | 0) == ($2_1 | 0); - } - - function legalstub$2($0, $1_1) { - return $2($0, $1_1); + $2 = wasm2js_scratch_load_i32(1) | 0; + return (wasm2js_scratch_load_i32(0) | 0) == ($0 | 0) & ($1_1 | 0) == ($2 | 0); } return { diff --git a/test/wasm2js/stack-modified.2asm.js.opt b/test/wasm2js/stack-modified.2asm.js.opt index 60758cce0..f08671743 100644 --- a/test/wasm2js/stack-modified.2asm.js.opt +++ b/test/wasm2js/stack-modified.2asm.js.opt @@ -16,47 +16,34 @@ function asmFunc(env) { var infinity = Infinity; var setTempRet0 = env.setTempRet0; var i64toi32_i32$HIGH_BITS = 0; - function $0($0_1, $1) { - $0_1 = $0_1 | 0; - $1 = $1 | 0; - var $2 = 0, $3 = 0, $4 = 0; - $2 = $1; - $3 = 1; + function legalstub$0($0, $1) { + var $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0; + $4 = $1; + $2 = 1; while (1) { - if ($0_1 | $2) { - $3 = _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE($0_1, $2, $3, $4); - $4 = i64toi32_i32$HIGH_BITS; - $1 = $0_1; - $0_1 = $0_1 - 1 | 0; - $2 = $2 - ($1 >>> 0 < 1) | 0; + if ($0 | $4) { + $1 = $2 >>> 16 | 0; + $3 = $0 >>> 16 | 0; + $9 = Math_imul($1, $3); + $5 = $2 & 65535; + $6 = $0 & 65535; + $7 = Math_imul($5, $6); + $3 = ($7 >>> 16 | 0) + Math_imul($3, $5) | 0; + $1 = ($3 & 65535) + Math_imul($1, $6) | 0; + i64toi32_i32$HIGH_BITS = (Math_imul($2, $4) + $9 | 0) + Math_imul($0, $8) + ($3 >>> 16) + ($1 >>> 16) | 0; + $2 = $7 & 65535 | $1 << 16; + $8 = i64toi32_i32$HIGH_BITS; + $1 = $0; + $0 = $1 - 1 | 0; + $4 = $4 - ($1 >>> 0 < 1) | 0; continue; } break; }; - i64toi32_i32$HIGH_BITS = $4; - return $3 | 0; - } - - function legalstub$0($0_1, $1) { - $0_1 = $0($0_1, $1); + i64toi32_i32$HIGH_BITS = $8; + $0 = $2; setTempRet0(i64toi32_i32$HIGH_BITS | 0); - return $0_1; - } - - function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE($0_1, $1, $2, $3) { - var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0; - $4 = $2 >>> 16 | 0; - $5 = $0_1 >>> 16 | 0; - $9 = Math_imul($4, $5); - $6 = $2 & 65535; - $7 = $0_1 & 65535; - $8 = Math_imul($6, $7); - $5 = ($8 >>> 16 | 0) + Math_imul($5, $6) | 0; - $4 = ($5 & 65535) + Math_imul($4, $7) | 0; - $0_1 = (Math_imul($1, $2) + $9 | 0) + Math_imul($0_1, $3) + ($5 >>> 16) + ($4 >>> 16) | 0; - $1 = $8 & 65535 | $4 << 16; - i64toi32_i32$HIGH_BITS = $0_1; - return $1; + return $0; } return { diff --git a/test/wasm2js/unaligned.2asm.js.opt b/test/wasm2js/unaligned.2asm.js.opt index e5005fef5..1f0fd6f4c 100644 --- a/test/wasm2js/unaligned.2asm.js.opt +++ b/test/wasm2js/unaligned.2asm.js.opt @@ -56,11 +56,6 @@ function asmFunc(env) { return HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24); } - function $1() { - i64toi32_i32$HIGH_BITS = HEAPU8[4] | HEAPU8[5] << 8 | (HEAPU8[6] << 16 | HEAPU8[7] << 24); - return HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24); - } - function $2() { return Math_fround((wasm2js_scratch_store_i32(2, HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24)), wasm2js_scratch_load_f32())); } @@ -92,14 +87,14 @@ function asmFunc(env) { } function $7() { - var $0_1 = 0, $1_1 = 0; + var $0_1 = 0, $1 = 0; wasm2js_scratch_store_f64(0.0); $0_1 = wasm2js_scratch_load_i32(1) | 0; - $1_1 = wasm2js_scratch_load_i32(0) | 0; - HEAP8[0] = $1_1; - HEAP8[1] = $1_1 >>> 8; - HEAP8[2] = $1_1 >>> 16; - HEAP8[3] = $1_1 >>> 24; + $1 = wasm2js_scratch_load_i32(0) | 0; + HEAP8[0] = $1; + HEAP8[1] = $1 >>> 8; + HEAP8[2] = $1 >>> 16; + HEAP8[3] = $1 >>> 24; HEAP8[4] = $0_1; HEAP8[5] = $0_1 >>> 8; HEAP8[6] = $0_1 >>> 16; @@ -108,7 +103,8 @@ function asmFunc(env) { function legalstub$1() { var $0_1 = 0; - $0_1 = $1(); + i64toi32_i32$HIGH_BITS = HEAPU8[4] | HEAPU8[5] << 8 | (HEAPU8[6] << 16 | HEAPU8[7] << 24); + $0_1 = HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24); setTempRet0(i64toi32_i32$HIGH_BITS | 0); return $0_1; } diff --git a/test/wasm2js/unary-ops.2asm.js.opt b/test/wasm2js/unary-ops.2asm.js.opt index cb37b0099..027c9164d 100644 --- a/test/wasm2js/unary-ops.2asm.js.opt +++ b/test/wasm2js/unary-ops.2asm.js.opt @@ -16,7 +16,17 @@ function asmFunc(env) { var i64toi32_i32$HIGH_BITS = 0; function $1($0) { $0 = $0 | 0; - return __wasm_popcnt_i32($0) | 0; + var $1_1 = 0, $2 = 0; + while (1) { + $2 = $1_1; + if ($0) { + $0 = $0 - 1 & $0; + $1_1 = $1_1 + 1 | 0; + continue; + } + break; + }; + return $2 | 0; } function $6($0) { @@ -34,19 +44,25 @@ function asmFunc(env) { return $0 | 0; } - function $8($0, $1_1, $2, $3) { - $0 = $0 | 0; - $1_1 = $1_1 | 0; - $2 = $2 | 0; - $3 = $3 | 0; - var $4 = 0; - $4 = Math_clz32($0) + 32 | 0; - $0 = Math_clz32($1_1); - return !$3 & ($2 | 0) == ((($0 | 0) == 32 ? $4 : $0) | 0); - } - function legalstub$2($0, $1_1, $2, $3) { - return (__wasm_popcnt_i64($0, $1_1) | 0) == ($2 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0); + var $4 = 0, $5 = 0, $6_1 = 0, $7_1 = 0; + $7_1 = $2; + $4 = $1_1; + while (1) { + $2 = $5; + $1_1 = $6_1; + if ($0 | $4) { + $1_1 = $0; + $0 = $1_1 - 1 & $1_1; + $4 = $4 - ($1_1 >>> 0 < 1) & $4; + $5 = $5 + 1 | 0; + $6_1 = $5 >>> 0 < 1 ? $6_1 + 1 | 0 : $6_1; + continue; + } + break; + }; + i64toi32_i32$HIGH_BITS = $1_1; + return ($2 | 0) == ($7_1 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0); } function legalstub$3($0, $1_1, $2) { @@ -62,62 +78,31 @@ function asmFunc(env) { } function legalstub$8($0, $1_1, $2, $3) { - return $8($0, $1_1, $2, $3); + var $4 = 0; + $4 = Math_clz32($0) + 32 | 0; + $0 = Math_clz32($1_1); + return !$3 & ($2 | 0) == ((($0 | 0) == 32 ? $4 : $0) | 0); } function legalstub$9($0, $1_1, $2, $3) { - return (__wasm_ctz_i64($0, $1_1) | 0) == ($2 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0); - } - - function __wasm_ctz_i64($0, $1_1) { - var $2 = 0, $3 = 0; - if ($0 | $1_1) { - $2 = $1_1 - 1 | 0; - $3 = $0 - 1 | 0; - $2 = ($3 | 0) != -1 ? $2 + 1 | 0 : $2; - $3 = Math_clz32($0 ^ $3) + 32 | 0; - $0 = Math_clz32($1_1 ^ $2); - $0 = ($0 | 0) == 32 ? $3 : $0; - $1_1 = 63 - $0 | 0; - i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0; - return $1_1; - } - i64toi32_i32$HIGH_BITS = 0; - return 64; - } - - function __wasm_popcnt_i32($0) { - var $1_1 = 0, $2 = 0; - while (1) { - $2 = $1_1; - if ($0) { - $0 = $0 - 1 & $0; - $1_1 = $1_1 + 1 | 0; - continue; - } - break; - }; - return $2; - } - - function __wasm_popcnt_i64($0, $1_1) { - var $2 = 0, $3 = 0, $4 = 0, $5 = 0; - while (1) { - $5 = $4; - $2 = $3; + var $4 = 0, $5 = 0, $6_1 = 0, $7_1 = 0; + __inlined_func$__wasm_ctz_i64 : { if ($0 | $1_1) { - $2 = $0; - $0 = $2 - 1 & $2; - $1_1 = $1_1 - ($2 >>> 0 < 1) & $1_1; - $2 = $4 + 1 | 0; - $3 = $2 >>> 0 < 1 ? $3 + 1 | 0 : $3; - $4 = $2; - continue; + $4 = $1_1 - 1 | 0; + $5 = $4 + 1 | 0; + $6_1 = $4; + $4 = $0 - 1 | 0; + $7_1 = Math_clz32($0 ^ $4) + 32 | 0; + $0 = Math_clz32($1_1 ^ (($4 | 0) != -1 ? $5 : $6_1)); + $0 = ($0 | 0) == 32 ? $7_1 : $0; + $1_1 = 63 - $0 | 0; + i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0; + break __inlined_func$__wasm_ctz_i64; } - break; - }; - i64toi32_i32$HIGH_BITS = $2; - return $5; + i64toi32_i32$HIGH_BITS = 0; + $1_1 = 64; + } + return ($1_1 | 0) == ($2 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0); } return { |