From daf3ddf694f4546f5c5566f60768ec5351171e57 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 6 Apr 2021 15:05:24 +0200 Subject: [PATCH 1/2] Fix invalid store offsets in memset polyfill --- std/assembly/util/memory.ts | 48 ++--- tests/compiler/call-super.optimized.wat | 75 ++++--- tests/compiler/call-super.untouched.wat | 199 +++++++++++------- tests/compiler/class-implements.untouched.wat | 199 +++++++++++------- .../compiler/class-overloading.untouched.wat | 199 +++++++++++------- tests/compiler/class.optimized.wat | 75 ++++--- tests/compiler/class.untouched.wat | 199 +++++++++++------- tests/compiler/constructor.optimized.wat | 75 ++++--- tests/compiler/constructor.untouched.wat | 199 +++++++++++------- tests/compiler/do.untouched.wat | 199 +++++++++++------- .../empty-exportruntime.optimized.wat | 75 ++++--- .../empty-exportruntime.untouched.wat | 199 +++++++++++------- tests/compiler/empty-new.untouched.wat | 199 +++++++++++------- tests/compiler/exports.optimized.wat | 19 +- tests/compiler/exports.untouched.wat | 199 +++++++++++------- .../exportstar-rereexport.optimized.wat | 20 +- .../exportstar-rereexport.untouched.wat | 199 +++++++++++------- .../extends-baseaggregate.optimized.wat | 75 ++++--- .../extends-baseaggregate.untouched.wat | 199 +++++++++++------- .../compiler/extends-recursive.optimized.wat | 19 +- .../compiler/extends-recursive.untouched.wat | 199 +++++++++++------- .../field-initialization.optimized.wat | 75 ++++--- .../field-initialization.untouched.wat | 199 +++++++++++------- tests/compiler/for.untouched.wat | 199 +++++++++++------- tests/compiler/function-call.untouched.wat | 199 +++++++++++------- .../function-expression.optimized.wat | 20 +- .../function-expression.untouched.wat | 199 +++++++++++------- tests/compiler/getter-call.untouched.wat | 199 +++++++++++------- .../implicit-getter-setter.optimized.wat | 19 +- .../implicit-getter-setter.untouched.wat | 199 +++++++++++------- tests/compiler/infer-array.optimized.wat | 75 ++++--- tests/compiler/infer-array.untouched.wat | 199 +++++++++++------- tests/compiler/infer-generic.optimized.wat | 20 +- tests/compiler/infer-generic.untouched.wat | 199 +++++++++++------- tests/compiler/inlining.optimized.wat | 75 ++++--- tests/compiler/inlining.untouched.wat | 199 +++++++++++------- tests/compiler/instanceof-class.untouched.wat | 199 +++++++++++------- tests/compiler/issues/1095.optimized.wat | 20 +- tests/compiler/issues/1095.untouched.wat | 199 +++++++++++------- tests/compiler/issues/1225.optimized.wat | 76 ++++--- tests/compiler/issues/1225.untouched.wat | 199 +++++++++++------- tests/compiler/issues/1699.optimized.wat | 75 ++++--- tests/compiler/issues/1699.untouched.wat | 199 +++++++++++------- tests/compiler/logical.untouched.wat | 199 +++++++++++------- tests/compiler/managed-cast.untouched.wat | 199 +++++++++++------- tests/compiler/new.untouched.wat | 199 +++++++++++------- tests/compiler/number.optimized.wat | 75 ++++--- tests/compiler/number.untouched.wat | 199 +++++++++++------- tests/compiler/object-literal.optimized.wat | 75 ++++--- tests/compiler/object-literal.untouched.wat | 199 +++++++++++------- .../optional-typeparameters.untouched.wat | 199 +++++++++++------- tests/compiler/reexport.optimized.wat | 19 +- tests/compiler/reexport.untouched.wat | 199 +++++++++++------- tests/compiler/rereexport.optimized.wat | 20 +- tests/compiler/rereexport.untouched.wat | 199 +++++++++++------- tests/compiler/resolve-access.optimized.wat | 75 ++++--- tests/compiler/resolve-access.untouched.wat | 199 +++++++++++------- tests/compiler/resolve-binary.optimized.wat | 75 ++++--- tests/compiler/resolve-binary.untouched.wat | 199 +++++++++++------- .../resolve-elementaccess.optimized.wat | 75 ++++--- .../resolve-elementaccess.untouched.wat | 199 +++++++++++------- .../resolve-function-expression.optimized.wat | 75 ++++--- .../resolve-function-expression.untouched.wat | 199 +++++++++++------- tests/compiler/resolve-nested.untouched.wat | 199 +++++++++++------- tests/compiler/resolve-new.untouched.wat | 199 +++++++++++------- .../resolve-propertyaccess.optimized.wat | 75 ++++--- .../resolve-propertyaccess.untouched.wat | 199 +++++++++++------- tests/compiler/resolve-ternary.optimized.wat | 75 ++++--- tests/compiler/resolve-ternary.untouched.wat | 199 +++++++++++------- tests/compiler/resolve-unary.optimized.wat | 75 ++++--- tests/compiler/resolve-unary.untouched.wat | 199 +++++++++++------- tests/compiler/rt/finalize.untouched.wat | 199 +++++++++++------- tests/compiler/rt/instanceof.untouched.wat | 199 +++++++++++------- .../runtime-incremental-export.optimized.wat | 75 ++++--- .../runtime-incremental-export.untouched.wat | 199 +++++++++++------- tests/compiler/std-wasi/console.optimized.wat | 75 ++++--- tests/compiler/std-wasi/console.untouched.wat | 199 +++++++++++------- tests/compiler/std-wasi/crypto.optimized.wat | 75 ++++--- tests/compiler/std-wasi/crypto.untouched.wat | 199 +++++++++++------- tests/compiler/std-wasi/process.optimized.wat | 75 ++++--- tests/compiler/std-wasi/process.untouched.wat | 199 +++++++++++------- .../compiler/std/array-literal.optimized.wat | 75 ++++--- .../compiler/std/array-literal.untouched.wat | 199 +++++++++++------- tests/compiler/std/array.optimized.wat | 61 ++++-- tests/compiler/std/array.untouched.wat | 199 +++++++++++------- tests/compiler/std/arraybuffer.optimized.wat | 75 ++++--- tests/compiler/std/arraybuffer.untouched.wat | 199 +++++++++++------- tests/compiler/std/dataview.optimized.wat | 75 ++++--- tests/compiler/std/dataview.untouched.wat | 199 +++++++++++------- tests/compiler/std/date.optimized.wat | 26 ++- tests/compiler/std/date.untouched.wat | 199 +++++++++++------- tests/compiler/std/map.optimized.wat | 75 ++++--- tests/compiler/std/map.untouched.wat | 199 +++++++++++------- tests/compiler/std/new.optimized.wat | 26 ++- tests/compiler/std/new.untouched.wat | 199 +++++++++++------- .../std/operator-overloading.optimized.wat | 25 ++- .../std/operator-overloading.untouched.wat | 199 +++++++++++------- tests/compiler/std/pointer.optimized.wat | 25 ++- tests/compiler/std/pointer.untouched.wat | 199 +++++++++++------- tests/compiler/std/set.optimized.wat | 75 ++++--- tests/compiler/std/set.untouched.wat | 199 +++++++++++------- tests/compiler/std/static-array.optimized.wat | 75 ++++--- tests/compiler/std/static-array.untouched.wat | 199 +++++++++++------- tests/compiler/std/staticarray.optimized.wat | 75 ++++--- tests/compiler/std/staticarray.untouched.wat | 199 +++++++++++------- .../std/string-casemapping.optimized.wat | 75 ++++--- .../std/string-casemapping.untouched.wat | 199 +++++++++++------- .../std/string-encoding.optimized.wat | 75 ++++--- .../std/string-encoding.untouched.wat | 199 +++++++++++------- tests/compiler/std/string.optimized.wat | 75 ++++--- tests/compiler/std/string.untouched.wat | 199 +++++++++++------- tests/compiler/std/symbol.optimized.wat | 75 ++++--- tests/compiler/std/symbol.untouched.wat | 199 +++++++++++------- tests/compiler/std/typedarray.optimized.wat | 61 ++++-- tests/compiler/std/typedarray.untouched.wat | 199 +++++++++++------- tests/compiler/super-inline.untouched.wat | 199 +++++++++++------- tests/compiler/templateliteral.optimized.wat | 75 ++++--- tests/compiler/templateliteral.untouched.wat | 199 +++++++++++------- tests/compiler/typeof.untouched.wat | 199 +++++++++++------- tests/compiler/while.untouched.wat | 199 +++++++++++------- 120 files changed, 10860 insertions(+), 5945 deletions(-) diff --git a/std/assembly/util/memory.ts b/std/assembly/util/memory.ts index 07a9bb98dd..a0f7c5d93c 100644 --- a/std/assembly/util/memory.ts +++ b/std/assembly/util/memory.ts @@ -201,17 +201,16 @@ export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/st } else { // fill head and tail with minimal branching if (!n) return; - let dend = dest + n - 4; store(dest, c); - store(dend, c, 3); + store(dest + n - 1, c); if (n <= 2) return; - store(dest, c, 1); - store(dest, c, 2); - store(dend, c, 2); - store(dend, c, 1); + store(dest + 1, c); + store(dest + 2, c); + store(dest + n - 2, c); + store(dest + n - 3, c); if (n <= 6) return; - store(dest, c, 3); - store(dend, c); + store(dest + 3, c); + store(dest + n - 4, c); if (n <= 8) return; // advance pointer to align it at 4-byte boundary @@ -223,23 +222,22 @@ export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/st let c32: u32 = -1 / 255 * c; // fill head/tail up to 28 bytes each in preparation - dend = dest + n - 28; store(dest, c32); - store(dend, c32, 24); + store(dest + n - 4, c32); if (n <= 8) return; - store(dest, c32, 4); - store(dest, c32, 8); - store(dend, c32, 16); - store(dend, c32, 20); + store(dest + 4, c32); + store(dest + 8, c32); + store(dest + n - 12, c32); + store(dest + n - 8, c32); if (n <= 24) return; - store(dest, c32, 12); - store(dest, c32, 16); - store(dest, c32, 20); - store(dest, c32, 24); - store(dend, c32); - store(dend, c32, 4); - store(dend, c32, 8); - store(dend, c32, 12); + store(dest + 12, c32); + store(dest + 16, c32); + store(dest + 20, c32); + store(dest + 24, c32); + store(dest + n - 28, c32); + store(dest + n - 24, c32); + store(dest + n - 20, c32); + store(dest + n - 16, c32); // align to a multiple of 8 k = 24 + (dest & 4); @@ -250,9 +248,9 @@ export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/st let c64: u64 = c32 | (c32 << 32); while (n >= 32) { store(dest, c64); - store(dest, c64, 8); - store(dest, c64, 16); - store(dest, c64, 24); + store(dest + 8, c64); + store(dest + 16, c64); + store(dest + 24, c64); n -= 32; dest += 32; } diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 830675ff78..4f4a2d1cc1 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1449,11 +1449,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1464,12 +1463,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1477,7 +1483,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1501,14 +1511,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1518,13 +1527,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1540,29 +1556,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index f98bf0941c..22bd0ffe0b 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -2067,9 +2067,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2087,17 +2086,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2105,17 +2102,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2123,9 +2132,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2139,13 +2154,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2159,19 +2174,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2179,17 +2192,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2197,70 +2222,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index 4d5c022163..305e91fd7d 100644 --- a/tests/compiler/class-implements.untouched.wat +++ b/tests/compiler/class-implements.untouched.wat @@ -2077,9 +2077,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2097,17 +2096,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2115,17 +2112,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2133,9 +2142,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2149,13 +2164,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2169,19 +2184,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2189,17 +2202,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2207,70 +2232,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index f65017f8bb..2c0c42c6e2 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -2083,9 +2083,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2103,17 +2102,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2121,17 +2118,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2139,9 +2148,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2155,13 +2170,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2175,19 +2190,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2195,17 +2208,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2213,70 +2238,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index ece2fbb193..1e57e453dd 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1456,11 +1456,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1471,12 +1470,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1484,7 +1490,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1508,14 +1518,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1525,13 +1534,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1547,29 +1563,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 7b8f71d527..654be940d4 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -2179,9 +2179,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2199,17 +2198,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2217,17 +2214,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2235,9 +2244,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2251,13 +2266,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2271,19 +2286,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2291,17 +2304,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2309,70 +2334,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 689db7a8d4..4f17444d0a 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1517,11 +1517,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1532,12 +1531,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1545,7 +1551,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1569,14 +1579,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1586,13 +1595,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1608,29 +1624,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 9a8bd7953f..c0e6e98f72 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -2077,9 +2077,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2097,17 +2096,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2115,17 +2112,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2133,9 +2142,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2149,13 +2164,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2169,19 +2184,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2189,17 +2202,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2207,70 +2232,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index c28ec1fd83..87eb6c1fd5 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -2480,9 +2480,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2500,17 +2499,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2518,17 +2515,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2536,9 +2545,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2552,13 +2567,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2572,19 +2587,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2592,17 +2605,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2610,70 +2635,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index ab75059b7f..e57e1f4a64 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -1467,11 +1467,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1482,12 +1481,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1495,7 +1501,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1519,14 +1529,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1536,13 +1545,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1558,29 +1574,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/empty-exportruntime.untouched.wat b/tests/compiler/empty-exportruntime.untouched.wat index bd4a300f3d..bb248004f2 100644 --- a/tests/compiler/empty-exportruntime.untouched.wat +++ b/tests/compiler/empty-exportruntime.untouched.wat @@ -2073,9 +2073,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2093,17 +2092,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2111,17 +2108,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2129,9 +2138,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2145,13 +2160,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2165,19 +2180,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2185,17 +2198,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2203,70 +2228,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/empty-new.untouched.wat b/tests/compiler/empty-new.untouched.wat index be731b7c9e..9655726134 100644 --- a/tests/compiler/empty-new.untouched.wat +++ b/tests/compiler/empty-new.untouched.wat @@ -2066,9 +2066,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2086,17 +2085,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2104,17 +2101,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2122,9 +2131,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2138,13 +2153,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2158,19 +2173,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2178,17 +2191,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2196,70 +2221,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 4c7ecc8a1f..ca15d76e6e 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -1436,20 +1436,29 @@ i32.const 0 i32.store8 local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $0 ) (func $export/mul (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 32e3e862dd..90a072d0d3 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -2130,9 +2130,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2150,17 +2149,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2168,17 +2165,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2186,9 +2195,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2202,13 +2217,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2222,19 +2237,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2242,17 +2255,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2260,70 +2285,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/exportstar-rereexport.optimized.wat b/tests/compiler/exportstar-rereexport.optimized.wat index 519291f42c..da3d3f2e65 100644 --- a/tests/compiler/exportstar-rereexport.optimized.wat +++ b/tests/compiler/exportstar-rereexport.optimized.wat @@ -1360,6 +1360,7 @@ ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1437,20 +1438,29 @@ i32.const 0 i32.store8 local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $0 ) (func $export-default/theDefault diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index f35a7c83bc..bfc2ab0ed2 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.untouched.wat @@ -2111,9 +2111,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2131,17 +2130,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2149,17 +2146,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2167,9 +2176,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2183,13 +2198,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2203,19 +2218,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2223,17 +2236,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2241,70 +2266,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 71e9b4d692..80bce1970c 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1463,11 +1463,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1478,12 +1477,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1491,7 +1497,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1515,14 +1525,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1532,13 +1541,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1554,29 +1570,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index fdebdd8066..031af5d90e 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -2075,9 +2075,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2095,17 +2094,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2113,17 +2110,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2131,9 +2140,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2147,13 +2162,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2167,19 +2182,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2187,17 +2200,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2205,70 +2230,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/extends-recursive.optimized.wat b/tests/compiler/extends-recursive.optimized.wat index 78aa7e5bc7..ef00a1ce81 100644 --- a/tests/compiler/extends-recursive.optimized.wat +++ b/tests/compiler/extends-recursive.optimized.wat @@ -1389,20 +1389,29 @@ i32.const 0 i32.store8 local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $0 ) (func $extends-recursive/Parent#set:child (param $0 i32) (param $1 i32) diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index 3a2c29d05b..24846d93eb 100644 --- a/tests/compiler/extends-recursive.untouched.wat +++ b/tests/compiler/extends-recursive.untouched.wat @@ -2071,9 +2071,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2091,17 +2090,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2109,17 +2106,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2127,9 +2136,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2143,13 +2158,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2163,19 +2178,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2183,17 +2196,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2201,70 +2226,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 1b8f48cf39..51b2483626 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -1469,11 +1469,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1484,12 +1483,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1497,7 +1503,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1521,14 +1531,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1538,13 +1547,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1560,29 +1576,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index 0676d2cf82..206f92429c 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -2075,9 +2075,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2095,17 +2094,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2113,17 +2110,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2131,9 +2140,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2147,13 +2162,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2167,19 +2182,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2187,17 +2200,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2205,70 +2230,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 261dbdbb5f..418a71ae10 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -2493,9 +2493,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2513,17 +2512,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2531,17 +2528,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2549,9 +2558,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2565,13 +2580,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2585,19 +2600,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2605,17 +2618,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2623,70 +2648,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index 76822492b5..8a081791f0 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -2102,9 +2102,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2122,17 +2121,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2140,17 +2137,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2158,9 +2167,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2174,13 +2189,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2194,19 +2209,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2214,17 +2227,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2232,70 +2257,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index c9b4308cbb..1e5ec2918b 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -1376,6 +1376,7 @@ ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1453,20 +1454,29 @@ i32.const 0 i32.store8 local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $0 ) (func $function-expression/semanticallyAnonymous~fnDecl|0 (param $0 i64) (result i64) diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index e705997d21..1fb6a835ff 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -2258,9 +2258,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2278,17 +2277,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2296,17 +2293,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2314,9 +2323,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2330,13 +2345,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2350,19 +2365,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2370,17 +2383,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2388,70 +2413,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index fcbe9778fc..c7111a0922 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -2070,9 +2070,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2090,17 +2089,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2108,17 +2105,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2126,9 +2135,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2142,13 +2157,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2162,19 +2177,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2182,17 +2195,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2200,70 +2225,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/implicit-getter-setter.optimized.wat b/tests/compiler/implicit-getter-setter.optimized.wat index 36e76ad769..096bddcecb 100644 --- a/tests/compiler/implicit-getter-setter.optimized.wat +++ b/tests/compiler/implicit-getter-setter.optimized.wat @@ -1395,20 +1395,29 @@ i32.const 0 i32.store8 local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $0 ) (func $implicit-getter-setter/Managed#set:foo (param $0 i32) (param $1 i32) diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index 9e3db25658..70c0e3ddd1 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -2076,9 +2076,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2096,17 +2095,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2114,17 +2111,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2132,9 +2141,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2148,13 +2163,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2168,19 +2183,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2188,17 +2201,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2206,70 +2231,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index cfff8e5413..c031285db8 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -1484,11 +1484,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1499,12 +1498,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1512,7 +1518,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1536,14 +1546,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1553,13 +1562,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1575,29 +1591,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 26528f50f9..6775209121 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -2085,9 +2085,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2105,17 +2104,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2123,17 +2120,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2141,9 +2150,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2157,13 +2172,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2177,19 +2192,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2197,17 +2210,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2215,70 +2240,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index d174a8aafe..cb94606409 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -1334,6 +1334,7 @@ ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1411,20 +1412,29 @@ i32.const 0 i32.store8 local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $0 ) (func $infer-generic/test1 (param $0 f32) (result f32) diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 0a5b00296d..146c192b12 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -2156,9 +2156,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2176,17 +2175,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2194,17 +2191,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2212,9 +2221,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2228,13 +2243,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2248,19 +2263,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2268,17 +2281,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2286,70 +2311,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index c32bb3f224..4b6a62ae86 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1460,11 +1460,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1475,12 +1474,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1488,7 +1494,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1512,14 +1522,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1529,13 +1538,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1551,29 +1567,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 32542e66c1..69ec958398 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -2276,9 +2276,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2296,17 +2295,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2314,17 +2311,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2332,9 +2341,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2348,13 +2363,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2368,19 +2383,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2388,17 +2401,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2406,70 +2431,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index 1e83e93d9e..b03dc99cf2 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.untouched.wat @@ -2069,9 +2069,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2089,17 +2088,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2107,17 +2104,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2125,9 +2134,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2141,13 +2156,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2161,19 +2176,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2181,17 +2194,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2199,70 +2224,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/issues/1095.optimized.wat b/tests/compiler/issues/1095.optimized.wat index a4bdf5a994..df7c4f1a0a 100644 --- a/tests/compiler/issues/1095.optimized.wat +++ b/tests/compiler/issues/1095.optimized.wat @@ -1312,6 +1312,7 @@ ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1389,20 +1390,29 @@ i32.const 0 i32.store8 local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $0 ) (func $issues/1095/Foo#set:bar (param $0 i32) (param $1 i32) diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat index 28e3ed47d1..3966559fcd 100644 --- a/tests/compiler/issues/1095.untouched.wat +++ b/tests/compiler/issues/1095.untouched.wat @@ -2069,9 +2069,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2089,17 +2088,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2107,17 +2104,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2125,9 +2134,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2141,13 +2156,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2161,19 +2176,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2181,17 +2194,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2199,70 +2224,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index bdea2c460c..a9033b113f 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1324,28 +1324,37 @@ i32.const 0 i32.store8 local.get $0 - i32.const 8 + i32.const 12 i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=10 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=9 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 + i32.const 4 + i32.sub i32.const 0 - i32.store8 offset=8 + i32.store8 local.get $0 i32.const 0 local.get $0 @@ -1363,14 +1372,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1380,13 +1388,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1402,29 +1417,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat index bd75003b0d..d549104a25 100644 --- a/tests/compiler/issues/1225.untouched.wat +++ b/tests/compiler/issues/1225.untouched.wat @@ -2080,9 +2080,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2100,17 +2099,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2118,17 +2115,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2136,9 +2145,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2152,13 +2167,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2172,19 +2187,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2192,17 +2205,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2210,70 +2235,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index 0f22d6a56c..e373497203 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -1459,11 +1459,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1474,12 +1473,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1487,7 +1493,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1511,14 +1521,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1528,13 +1537,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1550,29 +1566,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/issues/1699.untouched.wat b/tests/compiler/issues/1699.untouched.wat index 9fb98ff516..473015d824 100644 --- a/tests/compiler/issues/1699.untouched.wat +++ b/tests/compiler/issues/1699.untouched.wat @@ -2070,9 +2070,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2090,17 +2089,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2108,17 +2105,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2126,9 +2135,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2142,13 +2157,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2162,19 +2177,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2182,17 +2195,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2200,70 +2225,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index ff384cf84b..70ee8c6098 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -2092,9 +2092,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2112,17 +2111,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2130,17 +2127,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2148,9 +2157,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2164,13 +2179,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2184,19 +2199,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2204,17 +2217,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2222,70 +2247,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat index 72985b6e63..becd4ee121 100644 --- a/tests/compiler/managed-cast.untouched.wat +++ b/tests/compiler/managed-cast.untouched.wat @@ -2069,9 +2069,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2089,17 +2088,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2107,17 +2104,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2125,9 +2134,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2141,13 +2156,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2161,19 +2176,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2181,17 +2194,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2199,70 +2224,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index efb70a1f7a..fef5774d46 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -2072,9 +2072,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2092,17 +2091,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2110,17 +2107,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2128,9 +2137,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2144,13 +2159,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2164,19 +2179,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2184,17 +2197,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2202,70 +2227,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 402a0479de..b4413abd87 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -1534,11 +1534,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1549,12 +1548,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1562,7 +1568,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1586,14 +1596,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1603,13 +1612,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1625,29 +1641,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 20f81edaf4..597f51cd3c 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -2170,9 +2170,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2190,17 +2189,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2208,17 +2205,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2226,9 +2235,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2242,13 +2257,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2262,19 +2277,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2282,17 +2295,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2300,70 +2325,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 526c424157..3fed786e64 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1544,11 +1544,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1559,12 +1558,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1572,7 +1578,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1596,14 +1606,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1613,13 +1622,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1635,29 +1651,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 6f930884e3..94f91d9970 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -2159,9 +2159,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2179,17 +2178,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2197,17 +2194,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2215,9 +2224,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2231,13 +2246,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2251,19 +2266,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2271,17 +2284,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2289,70 +2314,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 5e250f884c..8b2f1eb1fe 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -2075,9 +2075,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2095,17 +2094,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2113,17 +2110,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2131,9 +2140,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2147,13 +2162,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2167,19 +2182,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2187,17 +2200,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2205,70 +2230,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index a991b92d0d..fd5811861a 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -1475,20 +1475,29 @@ i32.const 0 i32.store8 local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $0 ) (func $export/sub (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index 606aa107fe..0e6269cc89 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -2159,9 +2159,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2179,17 +2178,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2197,17 +2194,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2215,9 +2224,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2231,13 +2246,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2251,19 +2266,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2271,17 +2284,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2289,70 +2314,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 149580ad4d..c00ddbdd7e 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -1360,6 +1360,7 @@ ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1437,20 +1438,29 @@ i32.const 0 i32.store8 local.get $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $0 ) (func $export-default/theDefault diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index 06e53c71cf..006e252f42 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -2111,9 +2111,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2131,17 +2130,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2149,17 +2146,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2167,9 +2176,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2183,13 +2198,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2203,19 +2218,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2223,17 +2236,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2241,70 +2266,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 8cb1f9e864..31d56f9179 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -1465,11 +1465,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1480,12 +1479,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1493,7 +1499,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1517,14 +1527,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1534,13 +1543,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1556,29 +1572,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 2b89777621..de47b7afc3 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -2085,9 +2085,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2105,17 +2104,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2123,17 +2120,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2141,9 +2150,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2157,13 +2172,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2177,19 +2192,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2197,17 +2210,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2215,70 +2240,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index c1ac3cb273..7aca59d602 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -1696,11 +1696,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1711,12 +1710,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1724,7 +1730,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1748,14 +1758,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1765,13 +1774,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1787,29 +1803,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index afb5a71f3e..795ad1a397 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -2345,9 +2345,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2365,17 +2364,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2383,17 +2380,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2401,9 +2410,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2417,13 +2432,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2437,19 +2452,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2457,17 +2470,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2475,70 +2500,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 8ae6c33db6..2ed14f5e76 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1516,11 +1516,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1531,12 +1530,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1544,7 +1550,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1568,14 +1578,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1585,13 +1594,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1607,29 +1623,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 313896f16d..4924a8e0fd 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -2108,9 +2108,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2128,17 +2127,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2146,17 +2143,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2164,9 +2173,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2180,13 +2195,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2200,19 +2215,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2220,17 +2233,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2238,70 +2263,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index f73276880e..1b94acd13f 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -1483,11 +1483,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1498,12 +1497,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1511,7 +1517,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1535,14 +1545,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1552,13 +1561,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1574,29 +1590,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 56b6e90d2b..bf14ba0872 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -2153,9 +2153,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2173,17 +2172,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2191,17 +2188,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2209,9 +2218,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2225,13 +2240,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2245,19 +2260,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2265,17 +2278,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2283,70 +2308,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index d02fe50cb8..e2af19114a 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -2091,9 +2091,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2111,17 +2110,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2129,17 +2126,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2147,9 +2156,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2163,13 +2178,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2183,19 +2198,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2203,17 +2216,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2221,70 +2246,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index f333c2c578..6ba3b9615f 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -2067,9 +2067,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2087,17 +2086,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2105,17 +2102,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2123,9 +2132,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2139,13 +2154,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2159,19 +2174,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2179,17 +2192,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2197,70 +2222,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index ae7fef3b2b..3780be7507 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -1483,11 +1483,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1498,12 +1497,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1511,7 +1517,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1535,14 +1545,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1552,13 +1561,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1574,29 +1590,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 21d0298c84..031d2588c5 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -2153,9 +2153,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2173,17 +2172,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2191,17 +2188,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2209,9 +2218,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2225,13 +2240,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2245,19 +2260,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2265,17 +2278,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2283,70 +2308,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 0f8cf28191..9cb685a11e 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1529,11 +1529,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1544,12 +1543,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1557,7 +1563,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1581,14 +1591,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1598,13 +1607,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1620,29 +1636,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 38b120b62a..f8a7607eb9 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -2161,9 +2161,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2181,17 +2180,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2199,17 +2196,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2217,9 +2226,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2233,13 +2248,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2253,19 +2268,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2273,17 +2286,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2291,70 +2316,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index cc227f63c1..c917974ad6 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -1503,11 +1503,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1518,12 +1517,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1531,7 +1537,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1555,14 +1565,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1572,13 +1581,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1594,29 +1610,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index d6283701d4..23b6b9b5a3 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -2150,9 +2150,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2170,17 +2169,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2188,17 +2185,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2206,9 +2215,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2222,13 +2237,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2242,19 +2257,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2262,17 +2275,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2280,70 +2305,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat index 9825ae6c15..7e75cb926e 100644 --- a/tests/compiler/rt/finalize.untouched.wat +++ b/tests/compiler/rt/finalize.untouched.wat @@ -2090,9 +2090,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2110,17 +2109,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2128,17 +2125,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2146,9 +2155,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2162,13 +2177,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2182,19 +2197,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2202,17 +2215,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2220,70 +2245,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index a5356c9353..cceed03e7f 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -2077,9 +2077,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2097,17 +2096,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2115,17 +2112,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2133,9 +2142,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2149,13 +2164,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2169,19 +2184,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2189,17 +2202,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2207,70 +2232,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index ab75059b7f..e57e1f4a64 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -1467,11 +1467,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1482,12 +1481,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1495,7 +1501,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1519,14 +1529,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1536,13 +1545,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1558,29 +1574,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/rt/runtime-incremental-export.untouched.wat b/tests/compiler/rt/runtime-incremental-export.untouched.wat index bd4a300f3d..bb248004f2 100644 --- a/tests/compiler/rt/runtime-incremental-export.untouched.wat +++ b/tests/compiler/rt/runtime-incremental-export.untouched.wat @@ -2073,9 +2073,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2093,17 +2092,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2111,17 +2108,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2129,9 +2138,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2145,13 +2160,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2165,19 +2180,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2185,17 +2198,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2203,70 +2228,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index 1cccf9a240..acaddfceba 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -2601,11 +2601,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -2616,12 +2615,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -2629,7 +2635,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -2653,14 +2663,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2670,13 +2679,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2692,29 +2708,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.untouched.wat index 0c22c4089a..c28ab5b695 100644 --- a/tests/compiler/std-wasi/console.untouched.wat +++ b/tests/compiler/std-wasi/console.untouched.wat @@ -3587,9 +3587,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -3607,17 +3606,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -3625,17 +3622,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -3643,9 +3652,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -3659,13 +3674,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -3679,19 +3694,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -3699,17 +3712,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -3717,70 +3742,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index 8bc98540d0..d39f8b0adc 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -2024,11 +2024,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -2039,12 +2038,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -2052,7 +2058,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -2076,14 +2086,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2093,13 +2102,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2115,29 +2131,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat index 2f4a2b0e81..e9cbeda893 100644 --- a/tests/compiler/std-wasi/crypto.untouched.wat +++ b/tests/compiler/std-wasi/crypto.untouched.wat @@ -2621,9 +2621,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2641,17 +2640,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2659,17 +2656,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2677,9 +2686,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2693,13 +2708,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2713,19 +2728,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2733,17 +2746,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2751,70 +2776,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index 8a27466d87..2b3f703e40 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -2620,11 +2620,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -2635,12 +2634,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -2648,7 +2654,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -2672,14 +2682,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2689,13 +2698,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2711,29 +2727,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.untouched.wat index 980dc7776f..2f0797569d 100644 --- a/tests/compiler/std-wasi/process.untouched.wat +++ b/tests/compiler/std-wasi/process.untouched.wat @@ -3586,9 +3586,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -3606,17 +3605,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -3624,17 +3621,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -3642,9 +3651,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -3658,13 +3673,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -3678,19 +3693,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -3698,17 +3711,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -3716,70 +3741,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index ecebceccea..10394eea03 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -1543,11 +1543,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1558,12 +1557,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1571,7 +1577,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1595,14 +1605,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1612,13 +1621,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1634,29 +1650,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 0cb189f943..446c4f4691 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -2143,9 +2143,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2163,17 +2162,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2181,17 +2178,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2199,9 +2208,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2215,13 +2230,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2235,19 +2250,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2255,17 +2268,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2273,70 +2298,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 381d338b31..1391bdee03 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -2118,11 +2118,10 @@ local.get $0 local.get $2 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $3 local.get $1 - i32.store8 offset=3 + i32.store8 local.get $2 i32.const 2 i32.le_u @@ -2133,12 +2132,19 @@ local.get $0 local.get $1 i32.store8 offset=2 - local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.const 2 + i32.sub local.get $1 - i32.store8 offset=2 + i32.store8 local.get $3 + i32.const 3 + i32.sub local.get $1 - i32.store8 offset=1 + i32.store8 local.get $2 i32.const 6 i32.le_u @@ -2146,7 +2152,11 @@ local.get $0 local.get $1 i32.store8 offset=3 - local.get $3 + local.get $0 + local.get $2 + i32.add + i32.const 4 + i32.sub local.get $1 i32.store8 local.get $2 @@ -2177,11 +2187,10 @@ i32.and local.tee $2 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 local.get $0 - i32.store offset=24 + i32.store local.get $2 i32.const 8 i32.le_u @@ -2192,12 +2201,19 @@ local.get $3 local.get $0 i32.store offset=8 - local.get $1 + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 12 + i32.sub local.get $0 - i32.store offset=16 + i32.store local.get $1 + i32.const 8 + i32.sub local.get $0 - i32.store offset=20 + i32.store local.get $2 i32.const 24 i32.le_u @@ -2214,18 +2230,29 @@ local.get $3 local.get $0 i32.store offset=24 - local.get $1 + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 28 + i32.sub local.get $0 i32.store local.get $1 + i32.const 24 + i32.sub local.get $0 - i32.store offset=4 + i32.store local.get $1 + i32.const 20 + i32.sub local.get $0 - i32.store offset=8 + i32.store local.get $1 + i32.const 16 + i32.sub local.get $0 - i32.store offset=12 + i32.store local.get $3 local.get $3 i32.const 4 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 5738d1e534..f2c644e405 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -2457,9 +2457,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2477,17 +2476,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2495,17 +2492,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2513,9 +2522,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2529,13 +2544,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2549,19 +2564,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2569,17 +2582,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2587,70 +2612,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 4fcd5d091d..9f1910a239 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1460,11 +1460,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1475,12 +1474,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1488,7 +1494,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1512,14 +1522,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1529,13 +1538,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1551,29 +1567,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 1449f6b80c..8f1fcf334d 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -2073,9 +2073,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2093,17 +2092,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2111,17 +2108,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2129,9 +2138,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2145,13 +2160,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2165,19 +2180,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2185,17 +2198,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2203,70 +2228,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 91afc24b3d..02a561fb99 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1467,11 +1467,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1482,12 +1481,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1495,7 +1501,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1519,14 +1529,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1536,13 +1545,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1558,29 +1574,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 48136ef6aa..b30f31cdc4 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -2080,9 +2080,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2100,17 +2099,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2118,17 +2115,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2136,9 +2145,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2152,13 +2167,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2172,19 +2187,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2192,17 +2205,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2210,70 +2235,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index cadec315ca..86710524b8 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -1321,6 +1321,7 @@ ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1398,28 +1399,37 @@ i32.const 0 i32.store8 local.get $0 - i32.const 4 + i32.const 8 i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=6 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=5 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 + i32.const 4 + i32.sub i32.const 0 - i32.store8 offset=4 + i32.store8 local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 5d626f364a..c7471e1305 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -2082,9 +2082,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2102,17 +2101,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2120,17 +2117,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2138,9 +2147,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2154,13 +2169,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2174,19 +2189,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2194,17 +2207,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2212,70 +2237,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 5fd8875b69..2a9a78bd8b 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1483,11 +1483,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1498,12 +1497,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1511,7 +1517,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1535,14 +1545,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1552,13 +1561,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1574,29 +1590,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 2f2a1a6138..d70dbe81b7 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -2093,9 +2093,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2113,17 +2112,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2131,17 +2128,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2149,9 +2158,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2165,13 +2180,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2185,19 +2200,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2205,17 +2218,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2223,70 +2248,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index 88733b3508..059d3b8f67 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -1314,6 +1314,7 @@ ) (func $~lib/rt/itcms/__new (result i32) (local $0 i32) + (local $1 i32) global.get $~lib/rt/itcms/total global.get $~lib/rt/itcms/threshold i32.ge_u @@ -1391,28 +1392,37 @@ i32.const 0 i32.store8 local.get $0 - i32.const 4 + i32.const 8 i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=6 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=5 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 + i32.const 4 + i32.sub i32.const 0 - i32.store8 offset=4 + i32.store8 local.get $0 ) (func $~lib/rt/__visit_members (param $0 i32) diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index bcf3caf17a..3cbf8f321f 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -2080,9 +2080,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2100,17 +2099,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2118,17 +2115,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2136,9 +2145,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2152,13 +2167,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2172,19 +2187,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2192,17 +2205,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2210,70 +2235,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index 8bdf61ac85..c3b8c6bf8e 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -1450,28 +1450,37 @@ i32.const 0 i32.store8 local.get $0 - i32.const 4 + i32.const 8 i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=6 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=5 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 + i32.const 4 + i32.sub i32.const 0 - i32.store8 offset=4 + i32.store8 local.get $0 ) (func $~lib/math/ipow32 (param $0 i32) (param $1 i32) (result i32) diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index 8ef485fe7c..d90d4c9b61 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -2134,9 +2134,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2154,17 +2153,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2172,17 +2169,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2190,9 +2199,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2206,13 +2221,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2226,19 +2241,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2246,17 +2259,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2264,70 +2289,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index df0d3d592d..93c7ec1f66 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -361,28 +361,37 @@ i32.const 0 i32.store8 local.get $0 - i32.const 4 + i32.const 8 i32.add + local.tee $1 + i32.const 1 + i32.sub i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=1 local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 + local.get $1 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=6 - local.get $0 + i32.store8 + local.get $1 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=5 + i32.store8 local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 + local.get $1 + i32.const 4 + i32.sub i32.const 0 - i32.store8 offset=4 + i32.store8 end global.get $std/pointer/one global.get $std/pointer/two diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index abf2467f3a..12c24821b0 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -35,9 +35,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -55,17 +54,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -73,17 +70,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -91,9 +100,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -107,13 +122,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -127,19 +142,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -147,17 +160,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -165,70 +190,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 24 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index dc6b765f06..737ce972d1 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1474,11 +1474,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1489,12 +1488,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1502,7 +1508,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1526,14 +1536,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1543,13 +1552,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1565,29 +1581,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 5c7bee8bb2..657365e051 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -2088,9 +2088,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2108,17 +2107,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2126,17 +2123,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2144,9 +2153,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2160,13 +2175,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2180,19 +2195,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2200,17 +2213,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2218,70 +2243,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index f788031ed0..0feb504767 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1504,11 +1504,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1519,12 +1518,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1532,7 +1538,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1556,14 +1566,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1573,13 +1582,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1595,29 +1611,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index b467e5415e..f215b4a56c 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -2117,9 +2117,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2137,17 +2136,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2155,17 +2152,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2173,9 +2182,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2189,13 +2204,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2209,19 +2224,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2229,17 +2242,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2247,70 +2272,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index a7ca0ec334..52c80e02db 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -1595,11 +1595,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1610,12 +1609,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1623,7 +1629,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1647,14 +1657,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1664,13 +1673,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1686,29 +1702,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index 1973eadef4..219c6c91f3 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -2178,9 +2178,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2198,17 +2197,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2216,17 +2213,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2234,9 +2243,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2250,13 +2265,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2270,19 +2285,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2290,17 +2303,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2308,70 +2333,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index 093242efdc..aa1af73866 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -1894,11 +1894,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1909,12 +1908,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1922,7 +1928,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1946,14 +1956,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1963,13 +1972,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1985,29 +2001,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index a6b1e75463..1c9a704761 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -2255,9 +2255,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2275,17 +2274,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2293,17 +2290,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2311,9 +2320,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2327,13 +2342,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2347,19 +2362,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2367,17 +2380,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2385,70 +2410,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 443bb457ba..b01c1973c1 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1475,11 +1475,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1490,12 +1489,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1503,7 +1509,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1527,14 +1537,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1544,13 +1553,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1566,29 +1582,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 416b9939f1..6b4bec15d8 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -2088,9 +2088,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2108,17 +2107,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2126,17 +2123,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2144,9 +2153,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2160,13 +2175,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2180,19 +2195,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2200,17 +2213,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2218,70 +2243,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 4337cdb1a0..aa59037809 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -2488,11 +2488,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -2503,12 +2502,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -2516,7 +2522,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -2540,14 +2550,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2557,13 +2566,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2579,29 +2595,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index f03080123f..0a91e9d120 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -2791,9 +2791,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2811,17 +2810,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2829,17 +2826,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2847,9 +2856,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2863,13 +2878,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2883,19 +2898,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2903,17 +2916,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2921,70 +2946,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 6c8b9aa8d1..5e2d267d59 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1565,11 +1565,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1580,12 +1579,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1593,7 +1599,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1617,14 +1627,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1634,13 +1643,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1656,29 +1672,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 78ee1c0fce..59216a9575 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -2125,9 +2125,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2145,17 +2144,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2163,17 +2160,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2181,9 +2190,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2197,13 +2212,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2217,19 +2232,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2237,17 +2250,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2255,70 +2280,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index d582f9817b..eb960b077d 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -2085,11 +2085,10 @@ local.get $0 local.get $2 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $3 local.get $1 - i32.store8 offset=3 + i32.store8 local.get $2 i32.const 2 i32.le_u @@ -2100,12 +2099,19 @@ local.get $0 local.get $1 i32.store8 offset=2 - local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.const 2 + i32.sub local.get $1 - i32.store8 offset=2 + i32.store8 local.get $3 + i32.const 3 + i32.sub local.get $1 - i32.store8 offset=1 + i32.store8 local.get $2 i32.const 6 i32.le_u @@ -2113,7 +2119,11 @@ local.get $0 local.get $1 i32.store8 offset=3 - local.get $3 + local.get $0 + local.get $2 + i32.add + i32.const 4 + i32.sub local.get $1 i32.store8 local.get $2 @@ -2144,11 +2154,10 @@ i32.and local.tee $2 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 local.get $0 - i32.store offset=24 + i32.store local.get $2 i32.const 8 i32.le_u @@ -2159,12 +2168,19 @@ local.get $3 local.get $0 i32.store offset=8 - local.get $1 + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 12 + i32.sub local.get $0 - i32.store offset=16 + i32.store local.get $1 + i32.const 8 + i32.sub local.get $0 - i32.store offset=20 + i32.store local.get $2 i32.const 24 i32.le_u @@ -2181,18 +2197,29 @@ local.get $3 local.get $0 i32.store offset=24 - local.get $1 + local.get $2 + local.get $3 + i32.add + local.tee $1 + i32.const 28 + i32.sub local.get $0 i32.store local.get $1 + i32.const 24 + i32.sub local.get $0 - i32.store offset=4 + i32.store local.get $1 + i32.const 20 + i32.sub local.get $0 - i32.store offset=8 + i32.store local.get $1 + i32.const 16 + i32.sub local.get $0 - i32.store offset=12 + i32.store local.get $3 local.get $3 i32.const 4 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 473249329b..94bacaa07d 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -2412,9 +2412,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2432,17 +2431,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2450,17 +2447,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2468,9 +2477,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2484,13 +2499,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2504,19 +2519,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2524,17 +2537,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2542,70 +2567,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index e52852f9e8..e77188d191 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.untouched.wat @@ -2068,9 +2068,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2088,17 +2087,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2106,17 +2103,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2124,9 +2133,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2140,13 +2155,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2160,19 +2175,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2180,17 +2193,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2198,70 +2223,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.optimized.wat index 28c23cc739..9208e546b4 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.optimized.wat @@ -1604,11 +1604,10 @@ local.get $0 local.get $1 i32.add - i32.const 4 + i32.const 1 i32.sub - local.tee $2 i32.const 0 - i32.store8 offset=3 + i32.store8 local.get $1 i32.const 2 i32.le_u @@ -1619,12 +1618,19 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $2 + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.const 2 + i32.sub i32.const 0 - i32.store8 offset=2 + i32.store8 local.get $2 + i32.const 3 + i32.sub i32.const 0 - i32.store8 offset=1 + i32.store8 local.get $1 i32.const 6 i32.le_u @@ -1632,7 +1638,11 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $2 + local.get $0 + local.get $1 + i32.add + i32.const 4 + i32.sub i32.const 0 i32.store8 local.get $1 @@ -1656,14 +1666,13 @@ i32.sub i32.const -4 i32.and - local.tee $2 + local.tee $1 i32.add - i32.const 28 + i32.const 4 i32.sub - local.tee $1 i32.const 0 - i32.store offset=24 - local.get $2 + i32.store + local.get $1 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1673,13 +1682,20 @@ local.get $0 i32.const 0 i32.store offset=8 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 12 + i32.sub i32.const 0 - i32.store offset=16 - local.get $1 - i32.const 0 - i32.store offset=20 + i32.store local.get $2 + i32.const 8 + i32.sub + i32.const 0 + i32.store + local.get $1 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1695,29 +1711,40 @@ local.get $0 i32.const 0 i32.store offset=24 + local.get $0 local.get $1 + i32.add + local.tee $2 + i32.const 28 + i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 + i32.const 24 + i32.sub i32.const 0 - i32.store offset=4 - local.get $1 + i32.store + local.get $2 + i32.const 20 + i32.sub i32.const 0 - i32.store offset=8 - local.get $1 + i32.store + local.get $2 + i32.const 16 + i32.sub i32.const 0 - i32.store offset=12 + i32.store local.get $0 local.get $0 i32.const 4 i32.and i32.const 24 i32.add - local.tee $1 + local.tee $2 i32.add local.set $0 - local.get $2 local.get $1 + local.get $2 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/templateliteral.untouched.wat b/tests/compiler/templateliteral.untouched.wat index f2eb191d5b..963fd830fe 100644 --- a/tests/compiler/templateliteral.untouched.wat +++ b/tests/compiler/templateliteral.untouched.wat @@ -2225,9 +2225,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2245,17 +2244,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2263,17 +2260,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2281,9 +2290,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2297,13 +2312,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2317,19 +2332,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2337,17 +2350,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store + local.get $5 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2355,70 +2380,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 2de06c596a..c2543ec085 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -2247,9 +2247,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2267,17 +2266,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2285,17 +2282,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2303,9 +2312,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2319,13 +2334,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2339,19 +2354,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2359,17 +2372,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2377,70 +2402,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index f609d4b6ba..0f03226ebb 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -2522,9 +2522,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i32) - (local $9 i64) - (local $10 i32) + (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2542,17 +2541,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + local.get $4 + i32.store8 + local.get $5 local.get $3 i32.add - i32.const 4 + i32.const 1 i32.sub - local.set $6 - local.get $5 local.get $4 i32.store8 - local.get $6 - local.get $4 - i32.store8 offset=3 local.get $3 i32.const 2 i32.le_u @@ -2560,17 +2557,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 1 + i32.add local.get $4 - i32.store8 offset=1 + i32.store8 local.get $5 + i32.const 2 + i32.add local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 2 + i32.sub local.get $4 - i32.store8 offset=2 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 3 + i32.sub local.get $4 - i32.store8 offset=1 + i32.store8 local.get $3 i32.const 6 i32.le_u @@ -2578,9 +2587,15 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 + i32.const 3 + i32.add local.get $4 - i32.store8 offset=3 - local.get $6 + i32.store8 + local.get $5 + local.get $3 + i32.add + i32.const 4 + i32.sub local.get $4 i32.store8 local.get $3 @@ -2594,13 +2609,13 @@ i32.sub i32.const 3 i32.and - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 local.get $3 @@ -2614,19 +2629,17 @@ i32.const 255 i32.and i32.mul - local.set $8 + local.set $7 + local.get $5 + local.get $7 + i32.store local.get $5 local.get $3 i32.add - i32.const 28 + i32.const 4 i32.sub - local.set $6 - local.get $5 - local.get $8 + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=24 local.get $3 i32.const 8 i32.le_u @@ -2634,17 +2647,29 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=4 + i32.const 4 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=16 - local.get $6 - local.get $8 - i32.store offset=20 + i32.const 8 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 12 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 8 + i32.sub + local.get $7 + i32.store local.get $3 i32.const 24 i32.le_u @@ -2652,70 +2677,100 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $8 - i32.store offset=12 + i32.const 12 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=16 + i32.const 16 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=20 + i32.const 20 + i32.add + local.get $7 + i32.store local.get $5 - local.get $8 - i32.store offset=24 - local.get $6 - local.get $8 + i32.const 24 + i32.add + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 28 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 24 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 20 + i32.sub + local.get $7 + i32.store + local.get $5 + local.get $3 + i32.add + i32.const 16 + i32.sub + local.get $7 i32.store - local.get $6 - local.get $8 - i32.store offset=4 - local.get $6 - local.get $8 - i32.store offset=8 - local.get $6 - local.get $8 - i32.store offset=12 i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $7 + local.set $6 local.get $5 - local.get $7 + local.get $6 i32.add local.set $5 local.get $3 - local.get $7 + local.get $6 i32.sub local.set $3 - local.get $8 + local.get $7 i64.extend_i32_u - local.get $8 + local.get $7 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $9 + local.set $8 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $10 - local.get $10 + local.set $9 + local.get $9 if local.get $5 - local.get $9 + local.get $8 i64.store local.get $5 - local.get $9 - i64.store offset=8 + i32.const 8 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=16 + i32.const 16 + i32.add + local.get $8 + i64.store local.get $5 - local.get $9 - i64.store offset=24 + i32.const 24 + i32.add + local.get $8 + i64.store local.get $3 i32.const 32 i32.sub From 70b87ba9004bd6fe995d2998ee95932e675ff394 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 6 Apr 2021 16:19:42 +0200 Subject: [PATCH 2/2] handle potentially negative offsets only --- std/assembly/util/memory.ts | 48 +++--- tests/compiler/call-super.optimized.wat | 35 ++-- tests/compiler/call-super.untouched.wat | 163 +++++++----------- tests/compiler/class-implements.untouched.wat | 163 +++++++----------- .../compiler/class-overloading.untouched.wat | 163 +++++++----------- tests/compiler/class.optimized.wat | 35 ++-- tests/compiler/class.untouched.wat | 163 +++++++----------- tests/compiler/constructor.optimized.wat | 35 ++-- tests/compiler/constructor.untouched.wat | 163 +++++++----------- tests/compiler/do.untouched.wat | 163 +++++++----------- .../empty-exportruntime.optimized.wat | 35 ++-- .../empty-exportruntime.untouched.wat | 163 +++++++----------- tests/compiler/empty-new.untouched.wat | 163 +++++++----------- tests/compiler/exports.untouched.wat | 163 +++++++----------- .../exportstar-rereexport.untouched.wat | 163 +++++++----------- .../extends-baseaggregate.optimized.wat | 35 ++-- .../extends-baseaggregate.untouched.wat | 163 +++++++----------- .../compiler/extends-recursive.untouched.wat | 163 +++++++----------- .../field-initialization.optimized.wat | 35 ++-- .../field-initialization.untouched.wat | 163 +++++++----------- tests/compiler/for.untouched.wat | 163 +++++++----------- tests/compiler/function-call.untouched.wat | 163 +++++++----------- .../function-expression.untouched.wat | 163 +++++++----------- tests/compiler/getter-call.untouched.wat | 163 +++++++----------- .../implicit-getter-setter.untouched.wat | 163 +++++++----------- tests/compiler/infer-array.optimized.wat | 35 ++-- tests/compiler/infer-array.untouched.wat | 163 +++++++----------- tests/compiler/infer-generic.untouched.wat | 163 +++++++----------- tests/compiler/inlining.optimized.wat | 35 ++-- tests/compiler/inlining.untouched.wat | 163 +++++++----------- tests/compiler/instanceof-class.untouched.wat | 163 +++++++----------- tests/compiler/issues/1095.untouched.wat | 163 +++++++----------- tests/compiler/issues/1225.optimized.wat | 25 ++- tests/compiler/issues/1225.untouched.wat | 163 +++++++----------- tests/compiler/issues/1699.optimized.wat | 35 ++-- tests/compiler/issues/1699.untouched.wat | 163 +++++++----------- tests/compiler/logical.untouched.wat | 163 +++++++----------- tests/compiler/managed-cast.untouched.wat | 163 +++++++----------- tests/compiler/new.untouched.wat | 163 +++++++----------- tests/compiler/number.optimized.wat | 35 ++-- tests/compiler/number.untouched.wat | 163 +++++++----------- tests/compiler/object-literal.optimized.wat | 35 ++-- tests/compiler/object-literal.untouched.wat | 163 +++++++----------- .../optional-typeparameters.untouched.wat | 163 +++++++----------- tests/compiler/reexport.untouched.wat | 163 +++++++----------- tests/compiler/rereexport.untouched.wat | 163 +++++++----------- tests/compiler/resolve-access.optimized.wat | 35 ++-- tests/compiler/resolve-access.untouched.wat | 163 +++++++----------- tests/compiler/resolve-binary.optimized.wat | 35 ++-- tests/compiler/resolve-binary.untouched.wat | 163 +++++++----------- .../resolve-elementaccess.optimized.wat | 35 ++-- .../resolve-elementaccess.untouched.wat | 163 +++++++----------- .../resolve-function-expression.optimized.wat | 35 ++-- .../resolve-function-expression.untouched.wat | 163 +++++++----------- tests/compiler/resolve-nested.untouched.wat | 163 +++++++----------- tests/compiler/resolve-new.untouched.wat | 163 +++++++----------- .../resolve-propertyaccess.optimized.wat | 35 ++-- .../resolve-propertyaccess.untouched.wat | 163 +++++++----------- tests/compiler/resolve-ternary.optimized.wat | 35 ++-- tests/compiler/resolve-ternary.untouched.wat | 163 +++++++----------- tests/compiler/resolve-unary.optimized.wat | 35 ++-- tests/compiler/resolve-unary.untouched.wat | 163 +++++++----------- tests/compiler/rt/finalize.untouched.wat | 163 +++++++----------- tests/compiler/rt/instanceof.untouched.wat | 163 +++++++----------- .../runtime-incremental-export.optimized.wat | 35 ++-- .../runtime-incremental-export.untouched.wat | 163 +++++++----------- tests/compiler/std-wasi/console.optimized.wat | 35 ++-- tests/compiler/std-wasi/console.untouched.wat | 163 +++++++----------- tests/compiler/std-wasi/crypto.optimized.wat | 35 ++-- tests/compiler/std-wasi/crypto.untouched.wat | 163 +++++++----------- tests/compiler/std-wasi/process.optimized.wat | 35 ++-- tests/compiler/std-wasi/process.untouched.wat | 163 +++++++----------- .../compiler/std/array-literal.optimized.wat | 35 ++-- .../compiler/std/array-literal.untouched.wat | 163 +++++++----------- tests/compiler/std/array.optimized.wat | 21 +-- tests/compiler/std/array.untouched.wat | 163 +++++++----------- tests/compiler/std/arraybuffer.optimized.wat | 35 ++-- tests/compiler/std/arraybuffer.untouched.wat | 163 +++++++----------- tests/compiler/std/dataview.optimized.wat | 35 ++-- tests/compiler/std/dataview.untouched.wat | 163 +++++++----------- tests/compiler/std/date.untouched.wat | 163 +++++++----------- tests/compiler/std/map.optimized.wat | 35 ++-- tests/compiler/std/map.untouched.wat | 163 +++++++----------- tests/compiler/std/new.untouched.wat | 163 +++++++----------- .../std/operator-overloading.untouched.wat | 163 +++++++----------- tests/compiler/std/pointer.untouched.wat | 163 +++++++----------- tests/compiler/std/set.optimized.wat | 35 ++-- tests/compiler/std/set.untouched.wat | 163 +++++++----------- tests/compiler/std/static-array.optimized.wat | 35 ++-- tests/compiler/std/static-array.untouched.wat | 163 +++++++----------- tests/compiler/std/staticarray.optimized.wat | 35 ++-- tests/compiler/std/staticarray.untouched.wat | 163 +++++++----------- .../std/string-casemapping.optimized.wat | 35 ++-- .../std/string-casemapping.untouched.wat | 163 +++++++----------- .../std/string-encoding.optimized.wat | 35 ++-- .../std/string-encoding.untouched.wat | 163 +++++++----------- tests/compiler/std/string.optimized.wat | 35 ++-- tests/compiler/std/string.untouched.wat | 163 +++++++----------- tests/compiler/std/symbol.optimized.wat | 35 ++-- tests/compiler/std/symbol.untouched.wat | 163 +++++++----------- tests/compiler/std/typedarray.optimized.wat | 21 +-- tests/compiler/std/typedarray.untouched.wat | 163 +++++++----------- tests/compiler/super-inline.untouched.wat | 163 +++++++----------- tests/compiler/templateliteral.optimized.wat | 35 ++-- tests/compiler/templateliteral.untouched.wat | 163 +++++++----------- tests/compiler/typeof.untouched.wat | 163 +++++++----------- tests/compiler/while.untouched.wat | 163 +++++++----------- 107 files changed, 4836 insertions(+), 7716 deletions(-) diff --git a/std/assembly/util/memory.ts b/std/assembly/util/memory.ts index a0f7c5d93c..700165b80e 100644 --- a/std/assembly/util/memory.ts +++ b/std/assembly/util/memory.ts @@ -201,16 +201,17 @@ export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/st } else { // fill head and tail with minimal branching if (!n) return; + let dend = dest + n; store(dest, c); - store(dest + n - 1, c); + store(dend - 1, c); if (n <= 2) return; - store(dest + 1, c); - store(dest + 2, c); - store(dest + n - 2, c); - store(dest + n - 3, c); + store(dest, c, 1); + store(dest, c, 2); + store(dend - 2, c); + store(dend - 3, c); if (n <= 6) return; - store(dest + 3, c); - store(dest + n - 4, c); + store(dest, c, 3); + store(dend - 4, c); if (n <= 8) return; // advance pointer to align it at 4-byte boundary @@ -222,22 +223,23 @@ export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/st let c32: u32 = -1 / 255 * c; // fill head/tail up to 28 bytes each in preparation + dend = dest + n; store(dest, c32); - store(dest + n - 4, c32); + store(dend - 4, c32); if (n <= 8) return; - store(dest + 4, c32); - store(dest + 8, c32); - store(dest + n - 12, c32); - store(dest + n - 8, c32); + store(dest, c32, 4); + store(dest, c32, 8); + store(dend - 12, c32); + store(dend - 8, c32); if (n <= 24) return; - store(dest + 12, c32); - store(dest + 16, c32); - store(dest + 20, c32); - store(dest + 24, c32); - store(dest + n - 28, c32); - store(dest + n - 24, c32); - store(dest + n - 20, c32); - store(dest + n - 16, c32); + store(dest, c32, 12); + store(dest, c32, 16); + store(dest, c32, 20); + store(dest, c32, 24); + store(dend - 28, c32); + store(dend - 24, c32); + store(dend - 20, c32); + store(dend - 16, c32); // align to a multiple of 8 k = 24 + (dest & 4); @@ -248,9 +250,9 @@ export function memset(dest: usize, c: u8, n: usize): void { // see: musl/src/st let c64: u64 = c32 | (c32 << 32); while (n >= 32) { store(dest, c64); - store(dest + 8, c64); - store(dest + 16, c64); - store(dest + 24, c64); + store(dest, c64, 8); + store(dest, c64, 16); + store(dest, c64, 24); n -= 32; dest += 32; } diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 4f4a2d1cc1..b83f6f0e31 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -1449,6 +1449,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1463,10 +1464,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1483,9 +1481,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1511,13 +1507,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1527,20 +1524,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1556,25 +1550,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1585,11 +1576,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 22bd0ffe0b..15da4ef2f5 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -2067,8 +2067,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2086,11 +2087,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2102,25 +2105,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2132,13 +2127,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2154,13 +2145,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2174,16 +2165,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2192,28 +2185,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2222,100 +2207,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/class-implements.untouched.wat b/tests/compiler/class-implements.untouched.wat index 305e91fd7d..586cdb6bcf 100644 --- a/tests/compiler/class-implements.untouched.wat +++ b/tests/compiler/class-implements.untouched.wat @@ -2077,8 +2077,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2096,11 +2097,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2112,25 +2115,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2142,13 +2137,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2164,13 +2155,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2184,16 +2175,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2202,28 +2195,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2232,100 +2217,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index 2c0c42c6e2..22fd5dade7 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -2083,8 +2083,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2102,11 +2103,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2118,25 +2121,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2148,13 +2143,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2170,13 +2161,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2190,16 +2181,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2208,28 +2201,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2238,100 +2223,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/class.optimized.wat b/tests/compiler/class.optimized.wat index 1e57e453dd..d421ead41a 100644 --- a/tests/compiler/class.optimized.wat +++ b/tests/compiler/class.optimized.wat @@ -1456,6 +1456,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1470,10 +1471,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1490,9 +1488,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1518,13 +1514,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1534,20 +1531,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1563,25 +1557,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1592,11 +1583,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index 654be940d4..822f047774 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -2179,8 +2179,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2198,11 +2199,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2214,25 +2217,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2244,13 +2239,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2266,13 +2257,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2286,16 +2277,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2304,28 +2297,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2334,100 +2319,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index 4f17444d0a..5d2e052376 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -1517,6 +1517,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1531,10 +1532,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1551,9 +1549,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1579,13 +1575,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1595,20 +1592,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1624,25 +1618,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1653,11 +1644,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index c0e6e98f72..6407c37541 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -2077,8 +2077,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2096,11 +2097,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2112,25 +2115,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2142,13 +2137,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2164,13 +2155,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2184,16 +2175,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2202,28 +2195,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2232,100 +2217,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 87eb6c1fd5..9bc2f58537 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -2480,8 +2480,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2499,11 +2500,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2515,25 +2518,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2545,13 +2540,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2567,13 +2558,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2587,16 +2578,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2605,28 +2598,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2635,100 +2620,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/empty-exportruntime.optimized.wat b/tests/compiler/empty-exportruntime.optimized.wat index e57e1f4a64..ab3009da3f 100644 --- a/tests/compiler/empty-exportruntime.optimized.wat +++ b/tests/compiler/empty-exportruntime.optimized.wat @@ -1467,6 +1467,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1481,10 +1482,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1501,9 +1499,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1529,13 +1525,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1545,20 +1542,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1574,25 +1568,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1603,11 +1594,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/empty-exportruntime.untouched.wat b/tests/compiler/empty-exportruntime.untouched.wat index bb248004f2..401fd899da 100644 --- a/tests/compiler/empty-exportruntime.untouched.wat +++ b/tests/compiler/empty-exportruntime.untouched.wat @@ -2073,8 +2073,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2092,11 +2093,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2108,25 +2111,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2138,13 +2133,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2160,13 +2151,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2180,16 +2171,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2198,28 +2191,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2228,100 +2213,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/empty-new.untouched.wat b/tests/compiler/empty-new.untouched.wat index 9655726134..e4ffed7d77 100644 --- a/tests/compiler/empty-new.untouched.wat +++ b/tests/compiler/empty-new.untouched.wat @@ -2066,8 +2066,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2085,11 +2086,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2101,25 +2104,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2131,13 +2126,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2153,13 +2144,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2173,16 +2164,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2191,28 +2184,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2221,100 +2206,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 90a072d0d3..1e8e2c6965 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -2130,8 +2130,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2149,11 +2150,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2165,25 +2168,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2195,13 +2190,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2217,13 +2208,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2237,16 +2228,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2255,28 +2248,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2285,100 +2270,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/exportstar-rereexport.untouched.wat b/tests/compiler/exportstar-rereexport.untouched.wat index bfc2ab0ed2..7ba43f5324 100644 --- a/tests/compiler/exportstar-rereexport.untouched.wat +++ b/tests/compiler/exportstar-rereexport.untouched.wat @@ -2111,8 +2111,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2130,11 +2131,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2146,25 +2149,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2176,13 +2171,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2198,13 +2189,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2218,16 +2209,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2236,28 +2229,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2266,100 +2251,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 80bce1970c..65b5d79cf3 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1463,6 +1463,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1477,10 +1478,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1497,9 +1495,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1525,13 +1521,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1541,20 +1538,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1570,25 +1564,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1599,11 +1590,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 031af5d90e..4a073a122e 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -2075,8 +2075,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2094,11 +2095,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2110,25 +2113,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2140,13 +2135,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2162,13 +2153,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2182,16 +2173,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2200,28 +2193,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2230,100 +2215,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/extends-recursive.untouched.wat b/tests/compiler/extends-recursive.untouched.wat index 24846d93eb..6ed8686728 100644 --- a/tests/compiler/extends-recursive.untouched.wat +++ b/tests/compiler/extends-recursive.untouched.wat @@ -2071,8 +2071,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2090,11 +2091,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2106,25 +2109,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2136,13 +2131,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2158,13 +2149,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2178,16 +2169,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2196,28 +2189,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2226,100 +2211,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/field-initialization.optimized.wat b/tests/compiler/field-initialization.optimized.wat index 51b2483626..3c8a65addf 100644 --- a/tests/compiler/field-initialization.optimized.wat +++ b/tests/compiler/field-initialization.optimized.wat @@ -1469,6 +1469,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1483,10 +1484,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1503,9 +1501,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1531,13 +1527,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1547,20 +1544,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1576,25 +1570,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1605,11 +1596,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/field-initialization.untouched.wat b/tests/compiler/field-initialization.untouched.wat index 206f92429c..1ca720a8fe 100644 --- a/tests/compiler/field-initialization.untouched.wat +++ b/tests/compiler/field-initialization.untouched.wat @@ -2075,8 +2075,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2094,11 +2095,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2110,25 +2113,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2140,13 +2135,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2162,13 +2153,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2182,16 +2173,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2200,28 +2193,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2230,100 +2215,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 418a71ae10..c02b1ef468 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -2493,8 +2493,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2512,11 +2513,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2528,25 +2531,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2558,13 +2553,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2580,13 +2571,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2600,16 +2591,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2618,28 +2611,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2648,100 +2633,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/function-call.untouched.wat b/tests/compiler/function-call.untouched.wat index 8a081791f0..a4677ff2e5 100644 --- a/tests/compiler/function-call.untouched.wat +++ b/tests/compiler/function-call.untouched.wat @@ -2102,8 +2102,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2121,11 +2122,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2137,25 +2140,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2167,13 +2162,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2189,13 +2180,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2209,16 +2200,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2227,28 +2220,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2257,100 +2242,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index 1fb6a835ff..413449b21d 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -2258,8 +2258,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2277,11 +2278,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2293,25 +2296,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2323,13 +2318,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2345,13 +2336,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2365,16 +2356,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2383,28 +2376,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2413,100 +2398,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index c7111a0922..201c5bce18 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -2070,8 +2070,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2089,11 +2090,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2105,25 +2108,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2135,13 +2130,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2157,13 +2148,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2177,16 +2168,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2195,28 +2188,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2225,100 +2210,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/implicit-getter-setter.untouched.wat b/tests/compiler/implicit-getter-setter.untouched.wat index 70c0e3ddd1..2ece763c59 100644 --- a/tests/compiler/implicit-getter-setter.untouched.wat +++ b/tests/compiler/implicit-getter-setter.untouched.wat @@ -2076,8 +2076,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2095,11 +2096,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2111,25 +2114,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2141,13 +2136,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2163,13 +2154,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2183,16 +2174,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2201,28 +2194,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2231,100 +2216,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index c031285db8..0b860d05b6 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -1484,6 +1484,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1498,10 +1499,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1518,9 +1516,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1546,13 +1542,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1562,20 +1559,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1591,25 +1585,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1620,11 +1611,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 6775209121..1ddc2f0587 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -2085,8 +2085,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2104,11 +2105,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2120,25 +2123,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2150,13 +2145,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2172,13 +2163,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2192,16 +2183,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2210,28 +2203,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2240,100 +2225,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 146c192b12..033e8f023c 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -2156,8 +2156,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2175,11 +2176,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2191,25 +2194,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2221,13 +2216,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2243,13 +2234,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2263,16 +2254,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2281,28 +2274,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2311,100 +2296,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 4b6a62ae86..274e303657 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -1460,6 +1460,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1474,10 +1475,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1494,9 +1492,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1522,13 +1518,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1538,20 +1535,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1567,25 +1561,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1596,11 +1587,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 69ec958398..1d5ff6d108 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -2276,8 +2276,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2295,11 +2296,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2311,25 +2314,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2341,13 +2336,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2363,13 +2354,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2383,16 +2374,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2401,28 +2394,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2431,100 +2416,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/instanceof-class.untouched.wat b/tests/compiler/instanceof-class.untouched.wat index b03dc99cf2..4c8faf7a93 100644 --- a/tests/compiler/instanceof-class.untouched.wat +++ b/tests/compiler/instanceof-class.untouched.wat @@ -2069,8 +2069,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2088,11 +2089,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2104,25 +2107,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2134,13 +2129,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2156,13 +2147,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2176,16 +2167,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2194,28 +2187,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2224,100 +2209,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/issues/1095.untouched.wat b/tests/compiler/issues/1095.untouched.wat index 3966559fcd..08414320a1 100644 --- a/tests/compiler/issues/1095.untouched.wat +++ b/tests/compiler/issues/1095.untouched.wat @@ -2069,8 +2069,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2088,11 +2089,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2104,25 +2107,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2134,13 +2129,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2156,13 +2147,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2176,16 +2167,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2194,28 +2187,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2224,100 +2209,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/issues/1225.optimized.wat b/tests/compiler/issues/1225.optimized.wat index a9033b113f..46c10f4394 100644 --- a/tests/compiler/issues/1225.optimized.wat +++ b/tests/compiler/issues/1225.optimized.wat @@ -1372,13 +1372,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1388,20 +1389,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1417,25 +1415,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1446,11 +1441,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/issues/1225.untouched.wat b/tests/compiler/issues/1225.untouched.wat index d549104a25..1bab662488 100644 --- a/tests/compiler/issues/1225.untouched.wat +++ b/tests/compiler/issues/1225.untouched.wat @@ -2080,8 +2080,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2099,11 +2100,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2115,25 +2118,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2145,13 +2140,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2167,13 +2158,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2187,16 +2178,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2205,28 +2198,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2235,100 +2220,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/issues/1699.optimized.wat b/tests/compiler/issues/1699.optimized.wat index e373497203..e5d9a3a0cc 100644 --- a/tests/compiler/issues/1699.optimized.wat +++ b/tests/compiler/issues/1699.optimized.wat @@ -1459,6 +1459,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1473,10 +1474,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1493,9 +1491,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1521,13 +1517,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1537,20 +1534,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1566,25 +1560,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1595,11 +1586,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/issues/1699.untouched.wat b/tests/compiler/issues/1699.untouched.wat index 473015d824..2aaf90c376 100644 --- a/tests/compiler/issues/1699.untouched.wat +++ b/tests/compiler/issues/1699.untouched.wat @@ -2070,8 +2070,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2089,11 +2090,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2105,25 +2108,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2135,13 +2130,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2157,13 +2148,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2177,16 +2168,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2195,28 +2188,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2225,100 +2210,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index 70ee8c6098..e049c23b78 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -2092,8 +2092,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2111,11 +2112,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2127,25 +2130,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2157,13 +2152,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2179,13 +2170,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2199,16 +2190,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2217,28 +2210,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2247,100 +2232,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/managed-cast.untouched.wat b/tests/compiler/managed-cast.untouched.wat index becd4ee121..474be0d65c 100644 --- a/tests/compiler/managed-cast.untouched.wat +++ b/tests/compiler/managed-cast.untouched.wat @@ -2069,8 +2069,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2088,11 +2089,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2104,25 +2107,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2134,13 +2129,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2156,13 +2147,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2176,16 +2167,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2194,28 +2187,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2224,100 +2209,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index fef5774d46..9d5e8c7f96 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -2072,8 +2072,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2091,11 +2092,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2107,25 +2110,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2137,13 +2132,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2159,13 +2150,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2179,16 +2170,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2197,28 +2190,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2227,100 +2212,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index b4413abd87..5d7a18799d 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -1534,6 +1534,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1548,10 +1549,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1568,9 +1566,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1596,13 +1592,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1612,20 +1609,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1641,25 +1635,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1670,11 +1661,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 597f51cd3c..d1b6f4b2c7 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -2170,8 +2170,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2189,11 +2190,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2205,25 +2208,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2235,13 +2230,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2257,13 +2248,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2277,16 +2268,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2295,28 +2288,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2325,100 +2310,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/object-literal.optimized.wat b/tests/compiler/object-literal.optimized.wat index 3fed786e64..77be92f63c 100644 --- a/tests/compiler/object-literal.optimized.wat +++ b/tests/compiler/object-literal.optimized.wat @@ -1544,6 +1544,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1558,10 +1559,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1578,9 +1576,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1606,13 +1602,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1622,20 +1619,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1651,25 +1645,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1680,11 +1671,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/object-literal.untouched.wat b/tests/compiler/object-literal.untouched.wat index 94f91d9970..a874fe982e 100644 --- a/tests/compiler/object-literal.untouched.wat +++ b/tests/compiler/object-literal.untouched.wat @@ -2159,8 +2159,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2178,11 +2179,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2194,25 +2197,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2224,13 +2219,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2246,13 +2237,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2266,16 +2257,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2284,28 +2277,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2314,100 +2299,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 8b2f1eb1fe..a61ea351a2 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -2075,8 +2075,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2094,11 +2095,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2110,25 +2113,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2140,13 +2135,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2162,13 +2153,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2182,16 +2173,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2200,28 +2193,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2230,100 +2215,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index 0e6269cc89..ac4118dd92 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -2159,8 +2159,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2178,11 +2179,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2194,25 +2197,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2224,13 +2219,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2246,13 +2237,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2266,16 +2257,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2284,28 +2277,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2314,100 +2299,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index 006e252f42..a8867cd1c2 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -2111,8 +2111,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2130,11 +2131,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2146,25 +2149,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2176,13 +2171,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2198,13 +2189,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2218,16 +2209,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2236,28 +2229,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2266,100 +2251,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 31d56f9179..f1707f6a09 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -1465,6 +1465,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1479,10 +1480,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1499,9 +1497,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1527,13 +1523,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1543,20 +1540,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1572,25 +1566,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1601,11 +1592,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index de47b7afc3..52ab0b7763 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -2085,8 +2085,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2104,11 +2105,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2120,25 +2123,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2150,13 +2145,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2172,13 +2163,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2192,16 +2183,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2210,28 +2203,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2240,100 +2225,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 7aca59d602..fa7017ca14 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -1696,6 +1696,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1710,10 +1711,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1730,9 +1728,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1758,13 +1754,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1774,20 +1771,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1803,25 +1797,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1832,11 +1823,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index 795ad1a397..5801548b46 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -2345,8 +2345,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2364,11 +2365,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2380,25 +2383,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2410,13 +2405,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2432,13 +2423,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2452,16 +2443,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2470,28 +2463,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2500,100 +2485,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 2ed14f5e76..8a36638a7a 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -1516,6 +1516,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1530,10 +1531,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1550,9 +1548,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1578,13 +1574,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1594,20 +1591,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1623,25 +1617,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1652,11 +1643,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 4924a8e0fd..5394aef3fd 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -2108,8 +2108,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2127,11 +2128,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2143,25 +2146,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2173,13 +2168,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2195,13 +2186,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2215,16 +2206,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2233,28 +2226,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2263,100 +2248,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 1b94acd13f..6aee7b4986 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -1483,6 +1483,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1497,10 +1498,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1517,9 +1515,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1545,13 +1541,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1561,20 +1558,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1590,25 +1584,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1619,11 +1610,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index bf14ba0872..bdff76d4b4 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -2153,8 +2153,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2172,11 +2173,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2188,25 +2191,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2218,13 +2213,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2240,13 +2231,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2260,16 +2251,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2278,28 +2271,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2308,100 +2293,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-nested.untouched.wat b/tests/compiler/resolve-nested.untouched.wat index e2af19114a..1b8611c0ad 100644 --- a/tests/compiler/resolve-nested.untouched.wat +++ b/tests/compiler/resolve-nested.untouched.wat @@ -2091,8 +2091,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2110,11 +2111,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2126,25 +2129,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2156,13 +2151,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2178,13 +2169,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2198,16 +2189,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2216,28 +2209,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2246,100 +2231,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index 6ba3b9615f..a4d64a10c6 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -2067,8 +2067,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2086,11 +2087,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2102,25 +2105,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2132,13 +2127,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2154,13 +2145,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2174,16 +2165,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2192,28 +2185,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2222,100 +2207,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index 3780be7507..4ff405819e 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -1483,6 +1483,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1497,10 +1498,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1517,9 +1515,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1545,13 +1541,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1561,20 +1558,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1590,25 +1584,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1619,11 +1610,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 031d2588c5..333e3afea5 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -2153,8 +2153,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2172,11 +2173,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2188,25 +2191,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2218,13 +2213,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2240,13 +2231,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2260,16 +2251,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2278,28 +2271,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2308,100 +2293,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 9cb685a11e..4c617d7b58 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1529,6 +1529,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1543,10 +1544,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1563,9 +1561,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1591,13 +1587,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1607,20 +1604,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1636,25 +1630,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1665,11 +1656,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index f8a7607eb9..b388281c93 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -2161,8 +2161,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2180,11 +2181,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2196,25 +2199,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2226,13 +2221,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2248,13 +2239,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2268,16 +2259,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2286,28 +2279,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2316,100 +2301,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index c917974ad6..927c39c239 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -1503,6 +1503,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1517,10 +1518,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1537,9 +1535,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1565,13 +1561,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1581,20 +1578,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1610,25 +1604,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1639,11 +1630,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 23b6b9b5a3..31ae3791e5 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -2150,8 +2150,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2169,11 +2170,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2185,25 +2188,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2215,13 +2210,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2237,13 +2228,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2257,16 +2248,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2275,28 +2268,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2305,100 +2290,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/rt/finalize.untouched.wat b/tests/compiler/rt/finalize.untouched.wat index 7e75cb926e..d7913da99e 100644 --- a/tests/compiler/rt/finalize.untouched.wat +++ b/tests/compiler/rt/finalize.untouched.wat @@ -2090,8 +2090,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2109,11 +2110,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2125,25 +2128,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2155,13 +2150,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2177,13 +2168,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2197,16 +2188,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2215,28 +2208,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2245,100 +2230,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index cceed03e7f..e0f5894134 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -2077,8 +2077,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2096,11 +2097,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2112,25 +2115,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2142,13 +2137,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2164,13 +2155,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2184,16 +2175,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2202,28 +2195,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2232,100 +2217,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/rt/runtime-incremental-export.optimized.wat b/tests/compiler/rt/runtime-incremental-export.optimized.wat index e57e1f4a64..ab3009da3f 100644 --- a/tests/compiler/rt/runtime-incremental-export.optimized.wat +++ b/tests/compiler/rt/runtime-incremental-export.optimized.wat @@ -1467,6 +1467,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1481,10 +1482,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1501,9 +1499,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1529,13 +1525,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1545,20 +1542,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1574,25 +1568,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1603,11 +1594,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/rt/runtime-incremental-export.untouched.wat b/tests/compiler/rt/runtime-incremental-export.untouched.wat index bb248004f2..401fd899da 100644 --- a/tests/compiler/rt/runtime-incremental-export.untouched.wat +++ b/tests/compiler/rt/runtime-incremental-export.untouched.wat @@ -2073,8 +2073,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2092,11 +2093,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2108,25 +2111,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2138,13 +2133,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2160,13 +2151,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2180,16 +2171,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2198,28 +2191,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2228,100 +2213,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std-wasi/console.optimized.wat b/tests/compiler/std-wasi/console.optimized.wat index acaddfceba..f270b118fe 100644 --- a/tests/compiler/std-wasi/console.optimized.wat +++ b/tests/compiler/std-wasi/console.optimized.wat @@ -2601,6 +2601,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -2615,10 +2616,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -2635,9 +2633,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -2663,13 +2659,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2679,20 +2676,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2708,25 +2702,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -2737,11 +2728,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std-wasi/console.untouched.wat b/tests/compiler/std-wasi/console.untouched.wat index c28ab5b695..8bff060e63 100644 --- a/tests/compiler/std-wasi/console.untouched.wat +++ b/tests/compiler/std-wasi/console.untouched.wat @@ -3587,8 +3587,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -3606,11 +3607,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -3622,25 +3625,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -3652,13 +3647,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -3674,13 +3665,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -3694,16 +3685,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -3712,28 +3705,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -3742,100 +3727,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std-wasi/crypto.optimized.wat b/tests/compiler/std-wasi/crypto.optimized.wat index d39f8b0adc..2e9efd220c 100644 --- a/tests/compiler/std-wasi/crypto.optimized.wat +++ b/tests/compiler/std-wasi/crypto.optimized.wat @@ -2024,6 +2024,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -2038,10 +2039,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -2058,9 +2056,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -2086,13 +2082,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2102,20 +2099,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2131,25 +2125,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -2160,11 +2151,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std-wasi/crypto.untouched.wat b/tests/compiler/std-wasi/crypto.untouched.wat index e9cbeda893..c4ee28c9af 100644 --- a/tests/compiler/std-wasi/crypto.untouched.wat +++ b/tests/compiler/std-wasi/crypto.untouched.wat @@ -2621,8 +2621,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2640,11 +2641,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2656,25 +2659,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2686,13 +2681,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2708,13 +2699,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2728,16 +2719,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2746,28 +2739,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2776,100 +2761,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std-wasi/process.optimized.wat b/tests/compiler/std-wasi/process.optimized.wat index 2b3f703e40..787ffcd72c 100644 --- a/tests/compiler/std-wasi/process.optimized.wat +++ b/tests/compiler/std-wasi/process.optimized.wat @@ -2620,6 +2620,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -2634,10 +2635,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -2654,9 +2652,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -2682,13 +2678,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2698,20 +2695,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2727,25 +2721,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -2756,11 +2747,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std-wasi/process.untouched.wat b/tests/compiler/std-wasi/process.untouched.wat index 2f0797569d..871c8ddbc7 100644 --- a/tests/compiler/std-wasi/process.untouched.wat +++ b/tests/compiler/std-wasi/process.untouched.wat @@ -3586,8 +3586,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -3605,11 +3606,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -3621,25 +3624,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -3651,13 +3646,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -3673,13 +3664,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -3693,16 +3684,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -3711,28 +3704,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -3741,100 +3726,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 10394eea03..30cdc60d35 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -1543,6 +1543,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1557,10 +1558,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1577,9 +1575,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1605,13 +1601,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1621,20 +1618,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1650,25 +1644,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1679,11 +1670,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 446c4f4691..53b69b78d9 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -2143,8 +2143,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2162,11 +2163,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2178,25 +2181,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2208,13 +2203,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2230,13 +2221,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2250,16 +2241,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2268,28 +2261,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2298,100 +2283,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 1391bdee03..26055ed3c4 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -2118,6 +2118,7 @@ local.get $0 local.get $2 i32.add + local.tee $3 i32.const 1 i32.sub local.get $1 @@ -2132,10 +2133,7 @@ local.get $0 local.get $1 i32.store8 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $3 + local.get $3 i32.const 2 i32.sub local.get $1 @@ -2152,9 +2150,7 @@ local.get $0 local.get $1 i32.store8 offset=3 - local.get $0 - local.get $2 - i32.add + local.get $3 i32.const 4 i32.sub local.get $1 @@ -2187,6 +2183,7 @@ i32.and local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub local.get $0 @@ -2201,10 +2198,7 @@ local.get $3 local.get $0 i32.store offset=8 - local.get $2 - local.get $3 - i32.add - local.tee $1 + local.get $1 i32.const 12 i32.sub local.get $0 @@ -2230,10 +2224,7 @@ local.get $3 local.get $0 i32.store offset=24 - local.get $2 - local.get $3 - i32.add - local.tee $1 + local.get $1 i32.const 28 i32.sub local.get $0 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index f2c644e405..02755bc6c6 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -2457,8 +2457,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2476,11 +2477,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2492,25 +2495,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2522,13 +2517,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2544,13 +2535,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2564,16 +2555,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2582,28 +2575,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2612,100 +2597,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 9f1910a239..d9f7ab9644 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1460,6 +1460,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1474,10 +1475,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1494,9 +1492,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1522,13 +1518,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1538,20 +1535,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1567,25 +1561,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1596,11 +1587,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 8f1fcf334d..b5b164cbf1 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -2073,8 +2073,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2092,11 +2093,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2108,25 +2111,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2138,13 +2133,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2160,13 +2151,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2180,16 +2171,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2198,28 +2191,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2228,100 +2213,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 02a561fb99..1823ab78f0 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1467,6 +1467,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1481,10 +1482,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1501,9 +1499,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1529,13 +1525,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1545,20 +1542,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1574,25 +1568,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1603,11 +1594,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index b30f31cdc4..a731b9480c 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -2080,8 +2080,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2099,11 +2100,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2115,25 +2118,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2145,13 +2140,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2167,13 +2158,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2187,16 +2178,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2205,28 +2198,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2235,100 +2220,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index c7471e1305..0558d6d621 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -2082,8 +2082,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2101,11 +2102,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2117,25 +2120,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2147,13 +2142,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2169,13 +2160,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2189,16 +2180,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2207,28 +2200,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2237,100 +2222,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 2a9a78bd8b..22fb9dfa79 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1483,6 +1483,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1497,10 +1498,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1517,9 +1515,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1545,13 +1541,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1561,20 +1558,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1590,25 +1584,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1619,11 +1610,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index d70dbe81b7..414e311323 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -2093,8 +2093,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2112,11 +2113,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2128,25 +2131,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2158,13 +2153,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2180,13 +2171,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2200,16 +2191,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2218,28 +2211,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2248,100 +2233,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index 3cbf8f321f..cae89f6437 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -2080,8 +2080,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2099,11 +2100,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2115,25 +2118,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2145,13 +2140,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2167,13 +2158,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2187,16 +2178,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2205,28 +2198,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2235,100 +2220,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index d90d4c9b61..09a369f4ee 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -2134,8 +2134,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2153,11 +2154,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2169,25 +2172,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2199,13 +2194,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2221,13 +2212,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2241,16 +2232,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2259,28 +2252,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2289,100 +2274,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index 12c24821b0..29a02615c2 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -35,8 +35,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -54,11 +55,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -70,25 +73,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -100,13 +95,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -122,13 +113,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -142,16 +133,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -160,28 +153,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -190,100 +175,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 737ce972d1..7047ab6f6a 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1474,6 +1474,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1488,10 +1489,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1508,9 +1506,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1536,13 +1532,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1552,20 +1549,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1581,25 +1575,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1610,11 +1601,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 657365e051..ab55eeebb9 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -2088,8 +2088,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2107,11 +2108,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2123,25 +2126,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2153,13 +2148,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2175,13 +2166,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2195,16 +2186,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2213,28 +2206,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2243,100 +2228,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 0feb504767..034d70273a 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -1504,6 +1504,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1518,10 +1519,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1538,9 +1536,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1566,13 +1562,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1582,20 +1579,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1611,25 +1605,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1640,11 +1631,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index f215b4a56c..4cd40f5ca4 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -2117,8 +2117,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2136,11 +2137,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2152,25 +2155,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2182,13 +2177,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2204,13 +2195,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2224,16 +2215,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2242,28 +2235,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2272,100 +2257,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/staticarray.optimized.wat b/tests/compiler/std/staticarray.optimized.wat index 52c80e02db..5bf2159abb 100644 --- a/tests/compiler/std/staticarray.optimized.wat +++ b/tests/compiler/std/staticarray.optimized.wat @@ -1595,6 +1595,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1609,10 +1610,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1629,9 +1627,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1657,13 +1653,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1673,20 +1670,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1702,25 +1696,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1731,11 +1722,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/staticarray.untouched.wat b/tests/compiler/std/staticarray.untouched.wat index 219c6c91f3..90f1c36dcb 100644 --- a/tests/compiler/std/staticarray.untouched.wat +++ b/tests/compiler/std/staticarray.untouched.wat @@ -2178,8 +2178,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2197,11 +2198,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2213,25 +2216,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2243,13 +2238,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2265,13 +2256,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2285,16 +2276,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2303,28 +2296,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2333,100 +2318,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/string-casemapping.optimized.wat b/tests/compiler/std/string-casemapping.optimized.wat index aa1af73866..77072f9ce3 100644 --- a/tests/compiler/std/string-casemapping.optimized.wat +++ b/tests/compiler/std/string-casemapping.optimized.wat @@ -1894,6 +1894,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1908,10 +1909,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1928,9 +1926,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1956,13 +1952,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1972,20 +1969,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2001,25 +1995,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -2030,11 +2021,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/string-casemapping.untouched.wat b/tests/compiler/std/string-casemapping.untouched.wat index 1c9a704761..7b0ad0a465 100644 --- a/tests/compiler/std/string-casemapping.untouched.wat +++ b/tests/compiler/std/string-casemapping.untouched.wat @@ -2255,8 +2255,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2274,11 +2275,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2290,25 +2293,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2320,13 +2315,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2342,13 +2333,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2362,16 +2353,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2380,28 +2373,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2410,100 +2395,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index b01c1973c1..c865ecbc0e 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1475,6 +1475,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1489,10 +1490,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1509,9 +1507,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1537,13 +1533,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1553,20 +1550,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1582,25 +1576,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1611,11 +1602,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 6b4bec15d8..9419de0426 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -2088,8 +2088,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2107,11 +2108,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2123,25 +2126,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2153,13 +2148,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2175,13 +2166,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2195,16 +2186,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2213,28 +2206,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2243,100 +2228,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index aa59037809..e0b17f7619 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -2488,6 +2488,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -2502,10 +2503,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -2522,9 +2520,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -2550,13 +2546,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2566,20 +2563,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -2595,25 +2589,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -2624,11 +2615,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 0a91e9d120..60a9317503 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -2791,8 +2791,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2810,11 +2811,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2826,25 +2829,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2856,13 +2851,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2878,13 +2869,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2898,16 +2889,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2916,28 +2909,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2946,100 +2931,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 5e2d267d59..35846a4d88 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -1565,6 +1565,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1579,10 +1580,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1599,9 +1597,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1627,13 +1623,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1643,20 +1640,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1672,25 +1666,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1701,11 +1692,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 59216a9575..f885cf6213 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -2125,8 +2125,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2144,11 +2145,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2160,25 +2163,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2190,13 +2185,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2212,13 +2203,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2232,16 +2223,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2250,28 +2243,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2280,100 +2265,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index eb960b077d..93086f1cf5 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -2085,6 +2085,7 @@ local.get $0 local.get $2 i32.add + local.tee $3 i32.const 1 i32.sub local.get $1 @@ -2099,10 +2100,7 @@ local.get $0 local.get $1 i32.store8 offset=2 - local.get $0 - local.get $2 - i32.add - local.tee $3 + local.get $3 i32.const 2 i32.sub local.get $1 @@ -2119,9 +2117,7 @@ local.get $0 local.get $1 i32.store8 offset=3 - local.get $0 - local.get $2 - i32.add + local.get $3 i32.const 4 i32.sub local.get $1 @@ -2154,6 +2150,7 @@ i32.and local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub local.get $0 @@ -2168,10 +2165,7 @@ local.get $3 local.get $0 i32.store offset=8 - local.get $2 - local.get $3 - i32.add - local.tee $1 + local.get $1 i32.const 12 i32.sub local.get $0 @@ -2197,10 +2191,7 @@ local.get $3 local.get $0 i32.store offset=24 - local.get $2 - local.get $3 - i32.add - local.tee $1 + local.get $1 i32.const 28 i32.sub local.get $0 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 94bacaa07d..d972216e77 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -2412,8 +2412,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2431,11 +2432,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2447,25 +2450,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2477,13 +2472,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2499,13 +2490,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2519,16 +2510,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2537,28 +2530,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2567,100 +2552,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/super-inline.untouched.wat b/tests/compiler/super-inline.untouched.wat index e77188d191..5505971f16 100644 --- a/tests/compiler/super-inline.untouched.wat +++ b/tests/compiler/super-inline.untouched.wat @@ -2068,8 +2068,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2087,11 +2088,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2103,25 +2106,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2133,13 +2128,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2155,13 +2146,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2175,16 +2166,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2193,28 +2186,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2223,100 +2208,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/templateliteral.optimized.wat b/tests/compiler/templateliteral.optimized.wat index 9208e546b4..31f73ba8d5 100644 --- a/tests/compiler/templateliteral.optimized.wat +++ b/tests/compiler/templateliteral.optimized.wat @@ -1604,6 +1604,7 @@ local.get $0 local.get $1 i32.add + local.tee $2 i32.const 1 i32.sub i32.const 0 @@ -1618,10 +1619,7 @@ local.get $0 i32.const 0 i32.store8 offset=2 - local.get $0 - local.get $1 - i32.add - local.tee $2 + local.get $2 i32.const 2 i32.sub i32.const 0 @@ -1638,9 +1636,7 @@ local.get $0 i32.const 0 i32.store8 offset=3 - local.get $0 - local.get $1 - i32.add + local.get $2 i32.const 4 i32.sub i32.const 0 @@ -1666,13 +1662,14 @@ i32.sub i32.const -4 i32.and - local.tee $1 + local.tee $2 i32.add + local.tee $1 i32.const 4 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 8 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1682,20 +1679,17 @@ local.get $0 i32.const 0 i32.store offset=8 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 12 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 8 i32.sub i32.const 0 i32.store - local.get $1 + local.get $2 i32.const 24 i32.le_u br_if $~lib/util/memory/memset|inlined.0 @@ -1711,25 +1705,22 @@ local.get $0 i32.const 0 i32.store offset=24 - local.get $0 local.get $1 - i32.add - local.tee $2 i32.const 28 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 24 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 20 i32.sub i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 16 i32.sub i32.const 0 @@ -1740,11 +1731,11 @@ i32.and i32.const 24 i32.add - local.tee $2 + local.tee $1 i32.add local.set $0 - local.get $1 local.get $2 + local.get $1 i32.sub local.set $1 loop $while-continue|0 diff --git a/tests/compiler/templateliteral.untouched.wat b/tests/compiler/templateliteral.untouched.wat index 963fd830fe..eb2e9764a6 100644 --- a/tests/compiler/templateliteral.untouched.wat +++ b/tests/compiler/templateliteral.untouched.wat @@ -2225,8 +2225,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2244,11 +2245,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2260,25 +2263,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2290,13 +2285,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2312,13 +2303,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2332,16 +2323,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2350,28 +2343,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2380,100 +2365,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index c2543ec085..25cb9d7525 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -2247,8 +2247,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2266,11 +2267,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2282,25 +2285,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2312,13 +2307,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2334,13 +2325,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2354,16 +2345,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2372,28 +2365,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2402,100 +2387,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index 0f03226ebb..404c0bbf9b 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -2522,8 +2522,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) - (local $9 i32) + (local $8 i32) + (local $9 i64) + (local $10 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -2541,11 +2542,13 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - local.get $4 - i32.store8 - local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $4 + i32.store8 + local.get $6 i32.const 1 i32.sub local.get $4 @@ -2557,25 +2560,17 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 1 - i32.add local.get $4 - i32.store8 + i32.store8 offset=1 local.get $5 - i32.const 2 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=2 + local.get $6 i32.const 2 i32.sub local.get $4 i32.store8 - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 3 i32.sub local.get $4 @@ -2587,13 +2582,9 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 3 - i32.add local.get $4 - i32.store8 - local.get $5 - local.get $3 - i32.add + i32.store8 offset=3 + local.get $6 i32.const 4 i32.sub local.get $4 @@ -2609,13 +2600,13 @@ i32.sub i32.const 3 i32.and - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 local.get $3 @@ -2629,16 +2620,18 @@ i32.const 255 i32.and i32.mul - local.set $7 - local.get $5 - local.get $7 - i32.store + local.set $8 local.get $5 local.get $3 i32.add + local.set $6 + local.get $5 + local.get $8 + i32.store + local.get $6 i32.const 4 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 8 @@ -2647,28 +2640,20 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 4 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 8 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=4 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=8 + local.get $6 i32.const 12 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 8 i32.sub - local.get $7 + local.get $8 i32.store local.get $3 i32.const 24 @@ -2677,100 +2662,78 @@ br $~lib/util/memory/memset|inlined.0 end local.get $5 - i32.const 12 - i32.add - local.get $7 - i32.store - local.get $5 - i32.const 16 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=12 local.get $5 - i32.const 20 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $7 - i32.store + local.get $8 + i32.store offset=20 local.get $5 - local.get $3 - i32.add + local.get $8 + i32.store offset=24 + local.get $6 i32.const 28 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 24 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.store - local.get $5 - local.get $3 - i32.add + local.get $6 i32.const 16 i32.sub - local.get $7 + local.get $8 i32.store i32.const 24 local.get $5 i32.const 4 i32.and i32.add - local.set $6 + local.set $7 local.get $5 - local.get $6 + local.get $7 i32.add local.set $5 local.get $3 - local.get $6 + local.get $7 i32.sub local.set $3 - local.get $7 + local.get $8 i64.extend_i32_u - local.get $7 + local.get $8 i64.extend_i32_u i64.const 32 i64.shl i64.or - local.set $8 + local.set $9 loop $while-continue|0 local.get $3 i32.const 32 i32.ge_u - local.set $9 - local.get $9 + local.set $10 + local.get $10 if local.get $5 - local.get $8 + local.get $9 i64.store local.get $5 - i32.const 8 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=8 local.get $5 - i32.const 16 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=16 local.get $5 - i32.const 24 - i32.add - local.get $8 - i64.store + local.get $9 + i64.store offset=24 local.get $3 i32.const 32 i32.sub