From 0008174cd8a729167764a6f74c578afe1b9ae3ac Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Tue, 25 May 2021 22:17:29 +0300 Subject: [PATCH 1/4] enable sign extensions by default --- src/compiler.ts | 2 +- tests/compiler/abi.untouched.wat | 42 +- tests/compiler/asc-constants.untouched.wat | 4 +- tests/compiler/builtins.untouched.wat | 55 +- tests/compiler/features/simd.untouched.wat | 20 +- tests/compiler/many-locals.optimized.wat | 5 +- tests/compiler/many-locals.untouched.wat | 6 +- tests/compiler/overflow.untouched.wat | 90 +- .../portable-conversions.untouched.wat | 40 +- tests/compiler/retain-i32.optimized.wat | 230 ++++- tests/compiler/retain-i32.untouched.wat | 105 +- tests/compiler/std/array.optimized.wat | 33 +- tests/compiler/std/array.untouched.wat | 25 +- tests/compiler/std/dataview.optimized.wat | 64 +- tests/compiler/std/dataview.untouched.wat | 80 +- tests/compiler/std/map.optimized.wat | 244 ++--- tests/compiler/std/map.untouched.wat | 140 +-- tests/compiler/std/math.optimized.wat | 8 +- tests/compiler/std/math.untouched.wat | 10 +- tests/compiler/std/polyfills.untouched.wat | 50 +- tests/compiler/std/set.optimized.wat | 160 ++-- tests/compiler/std/set.untouched.wat | 60 +- tests/compiler/std/typedarray.optimized.wat | 898 ++++++++++++------ tests/compiler/std/typedarray.untouched.wat | 322 ++----- 24 files changed, 1326 insertions(+), 1367 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 0a91a5246d..2039f1ee68 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -240,7 +240,7 @@ export class Options { /** Global aliases, mapping alias names as the key to internal names to be aliased as the value. */ globalAliases: Map | null = null; /** Features to activate by default. These are the finished proposals. */ - features: Feature = Feature.MUTABLE_GLOBALS; + features: Feature = Feature.MUTABLE_GLOBALS | Feature.SIGN_EXTENSION; /** If true, disallows unsafe features in user code. */ noUnsafe: bool = false; /** If true, enables pedantic diagnostics. */ diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat index 7fc1dbbd14..9319c08c04 100644 --- a/tests/compiler/abi.untouched.wat +++ b/tests/compiler/abi.untouched.wat @@ -30,10 +30,7 @@ i32.const 256 local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz i32.eqz if @@ -49,28 +46,19 @@ global.get $abi/condition if local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.div_s local.set $0 else local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.div_s local.set $0 end local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz i32.eqz if @@ -86,10 +74,7 @@ global.get $abi/condition if local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 24 i32.const 7 i32.and @@ -102,6 +87,7 @@ local.set $0 end local.get $0 + i32.extend8_s i32.eqz i32.eqz if @@ -113,10 +99,7 @@ unreachable end i32.const 256 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $abi/y global.get $abi/y i32.eqz @@ -188,20 +171,15 @@ ) (func $abi/exported (result i32) i32.const 128 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $abi/exportedExported (result i32) call $abi/exported + i32.extend8_s ) (func $abi/exportedInternal (result i32) call $abi/internal - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $~start call $start:abi diff --git a/tests/compiler/asc-constants.untouched.wat b/tests/compiler/asc-constants.untouched.wat index 84c9b96c7b..564d8f86e9 100644 --- a/tests/compiler/asc-constants.untouched.wat +++ b/tests/compiler/asc-constants.untouched.wat @@ -5,7 +5,7 @@ (global $~lib/ASC_MEMORY_BASE i32 (i32.const 0)) (global $~lib/ASC_OPTIMIZE_LEVEL i32 (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/ASC_FEATURE_SIGN_EXTENSION i32 (i32.const 0)) + (global $~lib/ASC_FEATURE_SIGN_EXTENSION i32 (i32.const 1)) (global $~lib/ASC_FEATURE_MUTABLE_GLOBALS i32 (i32.const 1)) (global $~lib/ASC_FEATURE_NONTRAPPING_F2I i32 (i32.const 0)) (global $~lib/ASC_FEATURE_BULK_MEMORY i32 (i32.const 0)) @@ -35,7 +35,7 @@ drop i32.const 0 drop - i32.const 0 + i32.const 1 drop i32.const 1 drop diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 0a159788a5..1cef95840e 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -333,16 +333,10 @@ (local $4 i32) (local $5 i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $5 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $3 local.get $2 local.tee $4 @@ -369,26 +363,17 @@ i32.and i32.shr_u i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $builtins/rotr3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $5 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.tee $3 local.get $2 local.tee $4 @@ -415,10 +400,7 @@ i32.and i32.shl i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $builtins/test nop @@ -556,10 +538,7 @@ i32.const 1 i32.const 2 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $builtins/l global.get $builtins/l i32.const 3 @@ -576,10 +555,7 @@ i32.const 2 i32.const 1 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $builtins/l global.get $builtins/l i32.const 1 @@ -612,10 +588,7 @@ i32.const 6 i32.const 2 i32.div_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $builtins/l global.get $builtins/l i32.const 3 @@ -2058,10 +2031,7 @@ drop global.get $~lib/builtins/i8.MIN_VALUE i32.const 128 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq drop global.get $~lib/builtins/i8.MAX_VALUE @@ -2070,10 +2040,7 @@ drop global.get $~lib/builtins/i16.MIN_VALUE i32.const 32768 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq drop global.get $~lib/builtins/i16.MAX_VALUE diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index dc3cbaac59..41e17e0d32 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -1768,10 +1768,7 @@ end local.get $2 i8x16.extract_lane_s 0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.eq i32.eqz @@ -1785,10 +1782,7 @@ end local.get $2 i8x16.extract_lane_s 15 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -2367,10 +2361,7 @@ end local.get $2 i16x8.extract_lane_s 0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.eq i32.eqz @@ -2384,10 +2375,7 @@ end local.get $2 i16x8.extract_lane_s 7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz diff --git a/tests/compiler/many-locals.optimized.wat b/tests/compiler/many-locals.optimized.wat index 814d3325d7..680aa964bc 100644 --- a/tests/compiler/many-locals.optimized.wat +++ b/tests/compiler/many-locals.optimized.wat @@ -11,9 +11,6 @@ ) (func $many-locals/testI8 (param $0 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) ) diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.untouched.wat index 8b7ecf2f6e..4788ffba0b 100644 --- a/tests/compiler/many-locals.untouched.wat +++ b/tests/compiler/many-locals.untouched.wat @@ -786,10 +786,7 @@ local.get $127 local.set $128 local.get $128 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s ) (func $start:many-locals i32.const 42 @@ -807,6 +804,7 @@ end i32.const 42 call $many-locals/testI8 + i32.extend8_s i32.const 42 i32.eq i32.eqz diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index ce1ce07f19..b7d2046208 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -21,10 +21,7 @@ i32.add local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -41,10 +38,7 @@ i32.sub local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 127 i32.eq i32.eqz @@ -64,10 +58,7 @@ local.get $2 local.set $1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -87,10 +78,7 @@ local.get $2 local.set $1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 127 i32.eq i32.eqz @@ -107,10 +95,7 @@ i32.add local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -127,10 +112,7 @@ i32.sub local.set $0 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 127 i32.eq i32.eqz @@ -148,10 +130,7 @@ local.tee $0 local.set $1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -169,10 +148,7 @@ local.tee $0 local.set $1 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 127 i32.eq i32.eqz @@ -187,10 +163,7 @@ local.get $0 i32.const 1 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -128 i32.eq i32.eqz @@ -209,10 +182,7 @@ i32.add local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz @@ -229,10 +199,7 @@ i32.sub local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 32767 i32.eq i32.eqz @@ -252,10 +219,7 @@ local.get $2 local.set $0 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz @@ -275,10 +239,7 @@ local.get $2 local.set $0 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 32767 i32.eq i32.eqz @@ -295,10 +256,7 @@ i32.add local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz @@ -315,10 +273,7 @@ i32.sub local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 32767 i32.eq i32.eqz @@ -336,10 +291,7 @@ local.tee $1 local.set $0 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz @@ -357,10 +309,7 @@ local.tee $1 local.set $0 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 32767 i32.eq i32.eqz @@ -375,10 +324,7 @@ local.get $1 i32.const 1 i32.add - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32768 i32.eq i32.eqz diff --git a/tests/compiler/portable-conversions.untouched.wat b/tests/compiler/portable-conversions.untouched.wat index ccf5c1051d..61c3488b3b 100644 --- a/tests/compiler/portable-conversions.untouched.wat +++ b/tests/compiler/portable-conversions.untouched.wat @@ -16,10 +16,7 @@ (start $~start) (func $start:portable-conversions global.get $portable-conversions/i - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz if i32.const 0 @@ -31,10 +28,7 @@ end global.get $portable-conversions/I i32.wrap_i64 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz if i32.const 0 @@ -46,10 +40,7 @@ end global.get $portable-conversions/f i32.trunc_f32_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz if i32.const 0 @@ -61,10 +52,7 @@ end global.get $portable-conversions/F i32.trunc_f64_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eqz if i32.const 0 @@ -75,10 +63,7 @@ unreachable end global.get $portable-conversions/i - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eqz if i32.const 0 @@ -90,10 +75,7 @@ end global.get $portable-conversions/I i32.wrap_i64 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eqz if i32.const 0 @@ -105,10 +87,7 @@ end global.get $portable-conversions/f i32.trunc_f32_s - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eqz if i32.const 0 @@ -120,10 +99,7 @@ end global.get $portable-conversions/F i32.trunc_f64_s - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eqz if i32.const 0 diff --git a/tests/compiler/retain-i32.optimized.wat b/tests/compiler/retain-i32.optimized.wat index 19b101878c..9b14c7cce8 100644 --- a/tests/compiler/retain-i32.optimized.wat +++ b/tests/compiler/retain-i32.optimized.wat @@ -1,12 +1,201 @@ (module (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 1036) ",") (data (i32.const 1048) "\01\00\00\00\1a\00\00\00r\00e\00t\00a\00i\00n\00-\00i\003\002\00.\00t\00s") (export "memory" (memory $0)) (start $~start) - (func $~start + (func $retain-i32/test (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + i32.add + local.tee $2 + i32.extend8_s + local.get $2 + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 4 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.sub + local.tee $2 + i32.extend8_s + local.get $2 + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 5 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.mul + local.tee $2 + i32.extend8_s + local.get $2 + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 6 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.and + local.tee $2 + i32.extend8_s + local.get $2 + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 7 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.or + local.tee $2 + i32.extend8_s + local.get $2 + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 8 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.xor + local.tee $2 + i32.extend8_s + local.get $2 + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 9 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 7 + i32.and + i32.shl + local.tee $0 + i32.extend8_s + local.get $0 + i32.extend8_s + i32.ne + if + i32.const 0 + i32.const 1056 + i32.const 10 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + ) + (func $start:retain-i32 (local $0 i32) + i32.const 0 + i32.const 127 + call $retain-i32/test + i32.const 127 + i32.const 0 + call $retain-i32/test + i32.const 1 + i32.const 127 + call $retain-i32/test + i32.const 127 + i32.const 1 + call $retain-i32/test + i32.const -1 + i32.const 127 + call $retain-i32/test + i32.const 127 + i32.const -1 + call $retain-i32/test + i32.const 0 + i32.const -128 + call $retain-i32/test + i32.const -128 + i32.const 0 + call $retain-i32/test + i32.const 1 + i32.const -128 + call $retain-i32/test + i32.const -128 + i32.const 1 + call $retain-i32/test + i32.const -1 + i32.const -128 + call $retain-i32/test + i32.const -128 + i32.const -1 + call $retain-i32/test + i32.const 127 + i32.const 127 + call $retain-i32/test + i32.const -128 + i32.const -128 + call $retain-i32/test + i32.const 127 + i32.const -128 + call $retain-i32/test + i32.const -128 + i32.const 127 + call $retain-i32/test + i32.const 0 + i32.const 255 + call $retain-i32/test + i32.const 255 + i32.const 0 + call $retain-i32/test + i32.const 1 + i32.const 255 + call $retain-i32/test + i32.const 255 + i32.const 1 + call $retain-i32/test + i32.const -1 + i32.const 255 + call $retain-i32/test + i32.const 255 + i32.const -1 + call $retain-i32/test + i32.const 255 + i32.const 255 + call $retain-i32/test i32.const -128 local.set $0 loop $for-loop|0 @@ -14,6 +203,42 @@ i32.const 255 i32.le_s if + i32.const 0 + local.get $0 + call $retain-i32/test + i32.const 1 + local.get $0 + call $retain-i32/test + i32.const -1 + local.get $0 + call $retain-i32/test + i32.const -128 + local.get $0 + call $retain-i32/test + i32.const 127 + local.get $0 + call $retain-i32/test + i32.const 255 + local.get $0 + call $retain-i32/test + i32.const -32768 + local.get $0 + call $retain-i32/test + i32.const 32767 + local.get $0 + call $retain-i32/test + i32.const 65535 + local.get $0 + call $retain-i32/test + i32.const 2147483647 + local.get $0 + call $retain-i32/test + i32.const -2147483648 + local.get $0 + call $retain-i32/test + i32.const -1 + local.get $0 + call $retain-i32/test local.get $0 i32.const 1 i32.add @@ -28,4 +253,7 @@ i32.load8_s drop ) + (func $~start + call $start:retain-i32 + ) ) diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index 683be3e1cf..d9f39ee703 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.wat @@ -27,17 +27,11 @@ local.get $0 local.get $1 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -51,17 +45,11 @@ local.get $0 local.get $1 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -75,17 +63,11 @@ local.get $0 local.get $1 i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -99,17 +81,11 @@ local.get $0 local.get $1 i32.and - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.and - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -123,17 +99,11 @@ local.get $0 local.get $1 i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.or - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -147,17 +117,11 @@ local.get $0 local.get $1 i32.xor - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.xor - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -173,19 +137,13 @@ i32.const 7 i32.and i32.shl - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 local.get $1 i32.const 7 i32.and i32.shl - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -478,10 +436,7 @@ i32.add i32.const 1 i32.add - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -1 @@ -500,10 +455,7 @@ i32.sub i32.const 127 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -1 @@ -520,10 +472,7 @@ i32.const 127 i32.const 2 i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -2 @@ -540,10 +489,7 @@ i32.const 0 i32.const -128 i32.sub - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -128 @@ -560,10 +506,7 @@ i32.const -128 i32.const -1 i32.mul - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -128 @@ -580,10 +523,7 @@ i32.const 127 i32.const -1 i32.div_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -127 @@ -600,10 +540,7 @@ i32.const -128 i32.const -1 i32.div_s - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s global.set $retain-i32/si global.get $retain-i32/si i32.const -128 diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index f3ebf3f399..96c04ec43b 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -7554,10 +7554,7 @@ (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.lt_s local.tee $2 @@ -7571,10 +7568,7 @@ local.set $1 end local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.lt_u if @@ -7584,10 +7578,7 @@ i32.shl i32.add local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 48 i32.or i32.store16 @@ -7596,21 +7587,17 @@ i32.add return end - local.get $2 + local.get $0 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $2 + i32.extend8_s + local.get $1 + i32.extend8_s call $~lib/util/number/decimalCount32 - i32.add - local.set $1 - local.get $0 local.get $2 - local.get $1 + i32.add + local.tee $0 call $~lib/util/number/utoa_dec_simple - local.get $1 + local.get $0 ) (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 838c828d16..5e8a1ff554 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -12002,10 +12002,7 @@ i32.const 1 drop local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.lt_s local.set $2 @@ -12030,10 +12027,7 @@ i32.le_u drop local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.lt_u if @@ -12043,10 +12037,7 @@ i32.shl i32.add local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 48 i32.or i32.store16 @@ -12063,20 +12054,14 @@ drop local.get $3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/util/number/decimalCount32 i32.add local.set $3 local.get $0 local.set $6 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.set $5 local.get $3 local.set $4 diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 370a93e170..9b51e172fd 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -2820,9 +2820,8 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57590 + i32.extend16_s + i32.const -7946 i32.ne if i32.const 0 @@ -2836,8 +2835,7 @@ i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 22752 i32.ne if @@ -2852,9 +2850,8 @@ i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40792 + i32.extend16_s + i32.const -24744 i32.ne if i32.const 0 @@ -2868,9 +2865,8 @@ i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33439 + i32.extend16_s + i32.const -32097 i32.ne if i32.const 0 @@ -2884,8 +2880,7 @@ i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 25986 i32.ne if @@ -2900,8 +2895,7 @@ i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 17253 i32.ne if @@ -2916,8 +2910,7 @@ i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 24387 i32.ne if @@ -2932,9 +2925,8 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 63200 + i32.extend16_s + i32.const -2336 i32.ne if i32.const 0 @@ -2948,9 +2940,8 @@ i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 57432 + i32.extend16_s + i32.const -8104 i32.ne if i32.const 0 @@ -2964,8 +2955,7 @@ i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 22687 i32.ne if @@ -2980,9 +2970,8 @@ i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 40834 + i32.extend16_s + i32.const -24702 i32.ne if i32.const 0 @@ -2996,9 +2985,8 @@ i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 33381 + i32.extend16_s + i32.const -32155 i32.ne if i32.const 0 @@ -3012,8 +3000,7 @@ i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 25923 i32.ne if @@ -3028,8 +3015,7 @@ i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 17247 i32.ne if @@ -3806,9 +3792,8 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and - i32.const 52176 + i32.extend16_s + i32.const -13360 i32.ne if i32.const 0 @@ -3826,8 +3811,7 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 65535 - i32.and + i32.extend16_s i32.const 14689 i32.ne if diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index f9ce2ba689..75add628d2 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -3777,10 +3777,7 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -7946 i32.eq i32.eqz @@ -3796,10 +3793,7 @@ i32.const 1 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 22752 i32.eq i32.eqz @@ -3815,10 +3809,7 @@ i32.const 2 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -24744 i32.eq i32.eqz @@ -3834,10 +3825,7 @@ i32.const 3 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32097 i32.eq i32.eqz @@ -3853,10 +3841,7 @@ i32.const 4 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 25986 i32.eq i32.eqz @@ -3872,10 +3857,7 @@ i32.const 5 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 17253 i32.eq i32.eqz @@ -3891,10 +3873,7 @@ i32.const 6 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 24387 i32.eq i32.eqz @@ -3910,10 +3889,7 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -2336 i32.eq i32.eqz @@ -3929,10 +3905,7 @@ i32.const 1 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -8104 i32.eq i32.eqz @@ -3948,10 +3921,7 @@ i32.const 2 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 22687 i32.eq i32.eqz @@ -3967,10 +3937,7 @@ i32.const 3 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -24702 i32.eq i32.eqz @@ -3986,10 +3953,7 @@ i32.const 4 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -32155 i32.eq i32.eqz @@ -4005,10 +3969,7 @@ i32.const 5 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 25923 i32.eq i32.eqz @@ -4024,10 +3985,7 @@ i32.const 6 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 17247 i32.eq i32.eqz @@ -4856,10 +4814,7 @@ i32.const 0 i32.const 1 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -13360 i32.eq i32.eqz @@ -4880,10 +4835,7 @@ i32.const 0 i32.const 0 call $~lib/dataview/DataView#getInt16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 14689 i32.eq i32.eqz diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 7bf4b42b96..cc56cb6e3b 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -4,8 +4,8 @@ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $none_=>_none (func)) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) (type $i32_i64_=>_i32 (func (param i32 i64) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_=>_none (func (param i32 i64))) @@ -1819,10 +1819,7 @@ ) (func $~lib/util/hash/HASH (param $0 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -1875,10 +1872,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end if @@ -2906,10 +2902,7 @@ i32.store loop $for-loop|1 local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s if @@ -2927,10 +2920,7 @@ local.get $1 local.get $2 local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.add call $~lib/map/Map#set @@ -2950,10 +2940,7 @@ local.get $2 call $~lib/map/Map#get local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.add i32.ne @@ -2988,10 +2975,7 @@ local.set $2 loop $for-loop|3 local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s if @@ -3011,10 +2995,7 @@ local.get $2 call $~lib/map/Map#get local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.add i32.ne @@ -3029,10 +3010,7 @@ local.get $1 local.get $2 local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 20 i32.add call $~lib/map/Map#set @@ -3052,10 +3030,7 @@ local.get $2 call $~lib/map/Map#get local.get $2 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 20 i32.add i32.ne @@ -3364,10 +3339,7 @@ local.set $3 loop $for-loop|6 local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s if @@ -3387,10 +3359,7 @@ local.get $3 call $~lib/map/Map#get local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 20 i32.add i32.ne @@ -3439,10 +3408,7 @@ local.set $3 loop $for-loop|8 local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s if @@ -3460,10 +3426,7 @@ local.get $1 local.get $3 local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.add call $~lib/map/Map#set @@ -3561,12 +3524,55 @@ i32.shr_u i32.xor ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/map/Map#find + call $~lib/map/Map#find i32.const 0 i32.ne ) @@ -3692,7 +3698,7 @@ local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $0 i32.eqz if @@ -3829,7 +3835,7 @@ local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $1 i32.eqz if @@ -4554,10 +4560,7 @@ ) (func $~lib/util/hash/HASH (param $0 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -4610,10 +4613,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end if @@ -5068,10 +5070,7 @@ i32.store loop $for-loop|1 local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s if @@ -5089,10 +5088,7 @@ local.get $1 local.get $2 local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.add call $~lib/map/Map#set @@ -5112,10 +5108,7 @@ local.get $2 call $~lib/map/Map#get local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.add i32.ne @@ -5150,10 +5143,7 @@ local.set $2 loop $for-loop|3 local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s if @@ -5173,10 +5163,7 @@ local.get $2 call $~lib/map/Map#get local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.add i32.ne @@ -5191,10 +5178,7 @@ local.get $1 local.get $2 local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 20 i32.add call $~lib/map/Map#set @@ -5214,10 +5198,7 @@ local.get $2 call $~lib/map/Map#get local.get $2 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 20 i32.add i32.ne @@ -5530,10 +5511,7 @@ local.set $3 loop $for-loop|6 local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s if @@ -5553,10 +5531,7 @@ local.get $3 call $~lib/map/Map#get local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 20 i32.add i32.ne @@ -5605,10 +5580,7 @@ local.set $3 loop $for-loop|8 local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s if @@ -5626,10 +5598,7 @@ local.get $1 local.get $3 local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.add call $~lib/map/Map#set @@ -5727,12 +5696,55 @@ i32.shr_u i32.xor ) + (func $~lib/map/Map#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) (func $~lib/map/Map#has (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/map/Map#find + call $~lib/map/Map#find i32.const 0 i32.ne ) @@ -5858,7 +5870,7 @@ local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $0 i32.eqz if @@ -5995,7 +6007,7 @@ local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $1 i32.eqz if @@ -13157,10 +13169,9 @@ i32.const 0 else local.get $1 - i32.load8_u + i32.load8_s local.get $3 - i32.const 255 - i32.and + i32.extend8_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -13381,7 +13392,7 @@ local.get $1 call $~lib/util/hash/HASH local.tee $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $3 if local.get $3 @@ -13755,10 +13766,9 @@ i32.const 0 else local.get $1 - i32.load16_u + i32.load16_s local.get $3 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end br_if $__inlined_func$~lib/map/Map#find @@ -13875,7 +13885,7 @@ local.get $1 call $~lib/util/hash/HASH local.tee $4 - call $~lib/map/Map#find + call $~lib/map/Map#find local.tee $3 if local.get $3 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 7e909ed4d4..4a43797f69 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -2491,10 +2491,7 @@ i32.le_u drop local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.set $2 i32.const 1 local.set $1 @@ -2576,10 +2573,7 @@ local.get $3 i32.load8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq else i32.const 0 @@ -4504,10 +4498,7 @@ local.get $3 i32.load8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq else i32.const 0 @@ -5088,10 +5079,7 @@ local.set $1 loop $for-loop|1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s local.set $3 @@ -5114,10 +5102,7 @@ local.get $1 i32.const 10 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add call $~lib/map/Map#set drop @@ -5138,10 +5123,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add i32.eq i32.eqz @@ -5177,10 +5159,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s local.set $4 @@ -5203,10 +5182,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add i32.eq i32.eqz @@ -5222,10 +5198,7 @@ local.get $1 i32.const 20 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add call $~lib/map/Map#set drop @@ -5246,10 +5219,7 @@ call $~lib/map/Map#get i32.const 20 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add i32.eq i32.eqz @@ -5396,10 +5366,7 @@ local.set $7 loop $for-loop|6 local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s local.set $10 @@ -5422,10 +5389,7 @@ call $~lib/map/Map#get i32.const 20 local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add i32.eq i32.eqz @@ -5478,10 +5442,7 @@ local.set $7 loop $for-loop|8 local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s local.set $9 @@ -5504,10 +5465,7 @@ local.get $7 i32.const 10 local.get $7 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.add call $~lib/map/Map#set drop @@ -6937,10 +6895,7 @@ i32.le_u drop local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.set $2 i32.const 2 local.set $1 @@ -7022,10 +6977,7 @@ local.get $3 i32.load16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq else i32.const 0 @@ -7412,10 +7364,7 @@ local.get $3 i32.load16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq else i32.const 0 @@ -7724,10 +7673,7 @@ local.set $1 loop $for-loop|1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s local.set $3 @@ -7750,10 +7696,7 @@ local.get $1 i32.const 10 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add call $~lib/map/Map#set drop @@ -7774,10 +7717,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add i32.eq i32.eqz @@ -7813,10 +7753,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s local.set $4 @@ -7839,10 +7776,7 @@ call $~lib/map/Map#get i32.const 10 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add i32.eq i32.eqz @@ -7858,10 +7792,7 @@ local.get $1 i32.const 20 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add call $~lib/map/Map#set drop @@ -7882,10 +7813,7 @@ call $~lib/map/Map#get i32.const 20 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add i32.eq i32.eqz @@ -8032,10 +7960,7 @@ local.set $7 loop $for-loop|6 local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s local.set $10 @@ -8058,10 +7983,7 @@ call $~lib/map/Map#get i32.const 20 local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add i32.eq i32.eqz @@ -8114,10 +8036,7 @@ local.set $7 loop $for-loop|8 local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s local.set $9 @@ -8140,10 +8059,7 @@ local.get $7 i32.const 10 local.get $7 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.add call $~lib/map/Map#set drop diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index c0aa080103..2d0f032acb 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -49565,8 +49565,7 @@ i32.const 1 i32.const 3 call $~lib/math/ipow32 - i32.const 255 - i32.and + i32.extend8_s i32.const 1 i32.ne if @@ -49580,9 +49579,8 @@ i32.const -2 i32.const 3 call $~lib/math/ipow32 - i32.const 255 - i32.and - i32.const 248 + i32.extend8_s + i32.const -8 i32.ne if i32.const 0 diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 85f4da0c19..5b62b7264e 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -59156,10 +59156,7 @@ i32.const 1 i32.const 3 call $~lib/math/ipow32 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 1 i32.eq i32.eqz @@ -59174,10 +59171,7 @@ i32.const -2 i32.const 3 call $~lib/math/ipow32 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -8 i32.eq i32.eqz diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat index 7483f68698..35ff491b8d 100644 --- a/tests/compiler/std/polyfills.untouched.wat +++ b/tests/compiler/std/polyfills.untouched.wat @@ -85,10 +85,7 @@ i32.and i32.shl local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 8 i32.const 15 i32.and @@ -393,10 +390,7 @@ i32.and i32.shl local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 8 i32.const 15 i32.and @@ -494,15 +488,9 @@ end i32.const 170 call $~lib/polyfills/bswap - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 170 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -530,15 +518,9 @@ end i32.const 43707 call $~lib/polyfills/bswap - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 48042 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq i32.eqz if @@ -644,15 +626,9 @@ end i32.const 170 call $~lib/polyfills/bswap16 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 170 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -680,15 +656,9 @@ end i32.const 43707 call $~lib/polyfills/bswap16 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 48042 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq i32.eqz if diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index fdda9b61c5..cbbbae59b3 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -5,9 +5,9 @@ (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) (type $i32_i64_=>_none (func (param i32 i64))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_f32_=>_none (func (param i32 f32))) (type $i32_f64_=>_none (func (param i32 f64))) @@ -1810,10 +1810,7 @@ ) (func $~lib/util/hash/HASH (param $0 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const -1028477379 i32.mul i32.const 374761394 @@ -1866,10 +1863,9 @@ i32.const 0 else local.get $0 - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq end if @@ -2560,10 +2556,7 @@ i32.store loop $for-loop|1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s if @@ -2616,10 +2609,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s if @@ -2851,10 +2841,7 @@ local.set $3 loop $for-loop|6 local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s if @@ -2907,10 +2894,7 @@ local.set $3 loop $for-loop|8 local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s if @@ -3022,12 +3006,55 @@ i32.shr_u i32.xor ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/set/Set#find + call $~lib/set/Set#find i32.const 0 i32.ne ) @@ -3153,7 +3180,7 @@ local.get $1 call $~lib/util/hash/HASH local.tee $3 - call $~lib/set/Set#find + call $~lib/set/Set#find i32.eqz if local.get $0 @@ -3250,7 +3277,7 @@ local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/set/Set#find + call $~lib/set/Set#find local.tee $1 i32.eqz if @@ -3757,10 +3784,7 @@ ) (func $~lib/util/hash/HASH (param $0 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const -1028477379 i32.mul i32.const 374761395 @@ -3813,10 +3837,9 @@ i32.const 0 else local.get $0 - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq end if @@ -4194,10 +4217,7 @@ i32.store loop $for-loop|1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s if @@ -4250,10 +4270,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s if @@ -4487,10 +4504,7 @@ local.set $3 loop $for-loop|6 local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s if @@ -4543,10 +4557,7 @@ local.set $3 loop $for-loop|8 local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s if @@ -4658,12 +4669,55 @@ i32.shr_u i32.xor ) + (func $~lib/set/Set#find (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.load + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $0 + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + end + if + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + i32.const 0 + ) (func $~lib/set/Set#has (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/set/Set#find + call $~lib/set/Set#find i32.const 0 i32.ne ) @@ -4789,7 +4843,7 @@ local.get $1 call $~lib/util/hash/HASH local.tee $3 - call $~lib/set/Set#find + call $~lib/set/Set#find i32.eqz if local.get $0 @@ -4888,7 +4942,7 @@ local.get $1 local.get $1 call $~lib/util/hash/HASH - call $~lib/set/Set#find + call $~lib/set/Set#find local.tee $1 i32.eqz if diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 3b37151db9..c502a5c8e7 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -2486,10 +2486,7 @@ i32.le_u drop local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.set $2 i32.const 1 local.set $1 @@ -2571,10 +2568,7 @@ local.get $3 i32.load8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq else i32.const 0 @@ -4471,10 +4465,7 @@ local.set $1 loop $for-loop|1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s local.set $3 @@ -4533,10 +4524,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 100 i32.lt_s local.set $4 @@ -4655,10 +4643,7 @@ local.set $5 loop $for-loop|6 local.get $5 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s local.set $7 @@ -4717,10 +4702,7 @@ local.set $5 loop $for-loop|8 local.get $5 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 50 i32.lt_s local.set $8 @@ -5839,10 +5821,7 @@ i32.le_u drop local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.set $2 i32.const 2 local.set $1 @@ -5924,10 +5903,7 @@ local.get $3 i32.load16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq else i32.const 0 @@ -6431,10 +6407,7 @@ local.set $1 loop $for-loop|1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s local.set $3 @@ -6493,10 +6466,7 @@ local.set $1 loop $for-loop|3 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 100 i32.lt_s local.set $4 @@ -6615,10 +6585,7 @@ local.set $5 loop $for-loop|6 local.get $5 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s local.set $7 @@ -6677,10 +6644,7 @@ local.set $5 loop $for-loop|8 local.get $5 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 50 i32.lt_s local.set $8 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 918aeccd9a..7b25d4258d 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -630,7 +630,7 @@ (data (i32.const 13964) "B\08\00\00\00\00\00\00\02\t") (data (i32.const 14332) "\02\19\00\00\00\00\00\00\02\1a\00\00\00\00\00\00B\00\00\00\00\00\00\00\82\08\00\00\00\00\00\00\82\00\00\00\00\00\00\00\02\01\00\00\00\00\00\00\02\n\00\00\00\00\00\00\02\02") (table $0 144 funcref) - (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0) + (elem $0 (i32.const 1) $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>~anonymous|1 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>~anonymous|1 $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int8Array,i8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int32Array,i32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Int64Array,i64>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArrayForEach<~lib/typedarray/Float64Array,f64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint8Array,u8>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint16Array,u16>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int32Array,i32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint32Array,u32>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Int64Array,i64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Uint64Array,u64>~anonymous|0 $~lib/util/sort/COMPARATOR~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float32Array,f32>~anonymous|0 $std/typedarray/testArraySort<~lib/typedarray/Float64Array,f64>~anonymous|0) (export "memory" (memory $0)) (start $~start) (func $~lib/rt/itcms/initLazy (param $0 i32) (result i32) @@ -4886,10 +4886,7 @@ ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.gt_s ) @@ -4940,10 +4937,7 @@ ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.gt_s ) @@ -4986,8 +4980,7 @@ ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 255 - i32.and + i32.extend8_s i32.const 2 i32.eq ) @@ -5035,10 +5028,16 @@ end ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend8_s + i32.eqz + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 255 i32.and - i32.eqz + i32.const 2 + i32.eq ) (func $~lib/typedarray/Uint8Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -5083,10 +5082,15 @@ i32.const 0 end ) - (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 65535 + i32.const 255 i32.and + i32.eqz + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s i32.const 2 i32.eq ) @@ -5138,10 +5142,16 @@ end ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.extend16_s + i32.eqz + ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 65535 i32.and - i32.eqz + i32.const 2 + i32.eq ) (func $~lib/typedarray/Uint16Array#some (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -5190,6 +5200,12 @@ i32.const 0 end ) + (func $std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.eqz + ) (func $std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 i32.const 2 @@ -5553,8 +5569,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 255 - i32.and + i32.extend8_s i32.const 4 i32.eq ) @@ -5599,6 +5614,13 @@ end local.get $2 ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 255 + i32.and + i32.const 4 + i32.eq + ) (func $~lib/typedarray/Int16Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -5646,8 +5668,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 65535 - i32.and + i32.extend16_s i32.const 4 i32.eq ) @@ -5696,6 +5717,13 @@ end local.get $2 ) + (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + local.get $0 + i32.const 65535 + i32.and + i32.const 4 + i32.eq + ) (func $~lib/typedarray/Int32Array#findIndex (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) @@ -5988,12 +6016,10 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - i32.const 1 - i32.and + i32.extend8_s + i32.const 2 + i32.rem_s + i32.extend8_s i32.eqz ) (func $~lib/typedarray/Int8Array#every (param $0 i32) (param $1 i32) (result i32) @@ -6092,12 +6118,10 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - i32.const 1 - i32.and + i32.extend16_s + i32.const 2 + i32.rem_s + i32.extend16_s i32.eqz ) (func $~lib/typedarray/Int16Array#every (param $0 i32) (param $1 i32) (result i32) @@ -7410,10 +7434,9 @@ local.tee $3 local.get $0 i32.add - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $3 @@ -7467,10 +7490,9 @@ local.tee $3 local.get $0 i32.add - i32.load8_u + i32.load8_s local.get $1 - i32.const 255 - i32.and + i32.extend8_s i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 local.get $3 @@ -7543,10 +7565,7 @@ i32.const 7024 local.get $1 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $1 i32.const 1 @@ -7943,6 +7962,144 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/typedarray/Uint8Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + i32.const -1 + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $4 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $2 + local.tee $3 + local.get $0 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $3 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $3 + end + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $0 + i32.load offset=8 + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $2 + local.get $4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $4 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $2 + local.tee $3 + local.get $0 + i32.add + i32.load8_u + local.get $1 + i32.const 255 + i32.and + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $3 + end + local.get $3 + ) + (func $~lib/typedarray/Uint8Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + i32.load offset=8 + local.set $2 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint8Array#lastIndexOf + ) (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint8Array,u8> (local $0 i32) (local $1 i32) @@ -7993,7 +8150,7 @@ local.get $0 i32.const 0 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf if i32.const 0 i32.const 1568 @@ -8005,7 +8162,7 @@ local.get $0 i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8019,7 +8176,7 @@ local.get $0 i32.const -1 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8033,7 +8190,7 @@ local.get $0 i32.const 3 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 3 i32.ne if @@ -8047,7 +8204,7 @@ local.get $0 i32.const 3 i32.const 2 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 3 i32.ne if @@ -8061,7 +8218,7 @@ local.get $0 i32.const 3 i32.const 3 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 3 i32.ne if @@ -8075,7 +8232,7 @@ local.get $0 i32.const 3 i32.const 4 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8089,7 +8246,7 @@ local.get $0 i32.const 1 i32.const 10 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8103,7 +8260,7 @@ local.get $0 i32.const 1 i32.const -100 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 1 i32.ne if @@ -8118,7 +8275,7 @@ global.set $~argumentsLength local.get $0 i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs if i32.const 0 i32.const 1568 @@ -8131,7 +8288,7 @@ global.set $~argumentsLength local.get $0 i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -8146,7 +8303,7 @@ global.set $~argumentsLength local.get $0 i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -8161,7 +8318,7 @@ global.set $~argumentsLength local.get $0 i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs i32.const 3 i32.ne if @@ -8175,7 +8332,7 @@ local.get $0 i32.const 3 i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const 3 i32.ne if @@ -8189,7 +8346,7 @@ local.get $0 i32.const 3 i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const 3 i32.ne if @@ -8203,7 +8360,7 @@ local.get $0 i32.const 3 i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const -1 i32.ne if @@ -8217,7 +8374,7 @@ local.get $0 i32.const 1 i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const 1 i32.ne if @@ -8231,7 +8388,7 @@ local.get $0 i32.const 1 i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const 1 i32.ne if @@ -8245,7 +8402,7 @@ local.get $0 i32.const 1 i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const -1 i32.ne if @@ -8265,7 +8422,7 @@ local.get $0 i32.const 3 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8279,7 +8436,7 @@ local.get $0 i32.const 4 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf if i32.const 0 i32.const 1568 @@ -8291,7 +8448,7 @@ local.get $0 i32.const 5 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 1 i32.ne if @@ -8305,7 +8462,7 @@ local.get $0 i32.const 9 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8319,7 +8476,7 @@ local.get $0 i32.const 10 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8333,7 +8490,7 @@ local.get $0 i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8347,7 +8504,7 @@ local.get $0 i32.const 5 i32.const 1 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 1 i32.ne if @@ -8361,7 +8518,7 @@ local.get $0 i32.const 5 i32.const 2 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8427,7 +8584,7 @@ local.get $0 i32.const 0 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf if i32.const 0 i32.const 1568 @@ -8439,7 +8596,7 @@ local.get $0 i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8453,7 +8610,7 @@ local.get $0 i32.const -1 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8467,7 +8624,7 @@ local.get $0 i32.const 3 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 3 i32.ne if @@ -8481,7 +8638,7 @@ local.get $0 i32.const 3 i32.const 2 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 3 i32.ne if @@ -8495,7 +8652,7 @@ local.get $0 i32.const 3 i32.const 3 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 3 i32.ne if @@ -8509,7 +8666,7 @@ local.get $0 i32.const 3 i32.const 4 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8523,7 +8680,7 @@ local.get $0 i32.const 1 i32.const 10 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8537,7 +8694,7 @@ local.get $0 i32.const 1 i32.const -100 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 1 i32.ne if @@ -8552,7 +8709,7 @@ global.set $~argumentsLength local.get $0 i32.const 0 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs if i32.const 0 i32.const 1568 @@ -8565,7 +8722,7 @@ global.set $~argumentsLength local.get $0 i32.const 11 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -8580,7 +8737,7 @@ global.set $~argumentsLength local.get $0 i32.const -1 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -8595,7 +8752,7 @@ global.set $~argumentsLength local.get $0 i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf@varargs + call $~lib/typedarray/Uint8Array#lastIndexOf@varargs i32.const 3 i32.ne if @@ -8609,7 +8766,7 @@ local.get $0 i32.const 3 i32.const 4 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const 3 i32.ne if @@ -8623,7 +8780,7 @@ local.get $0 i32.const 3 i32.const 3 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const 3 i32.ne if @@ -8637,7 +8794,7 @@ local.get $0 i32.const 3 i32.const 2 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const -1 i32.ne if @@ -8651,7 +8808,7 @@ local.get $0 i32.const 1 i32.const 100 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const 1 i32.ne if @@ -8665,7 +8822,7 @@ local.get $0 i32.const 1 i32.const -10 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const 1 i32.ne if @@ -8679,7 +8836,7 @@ local.get $0 i32.const 1 i32.const -11 - call $~lib/typedarray/Int8Array#lastIndexOf + call $~lib/typedarray/Uint8Array#lastIndexOf i32.const -1 i32.ne if @@ -8699,7 +8856,7 @@ local.get $0 i32.const 3 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8713,7 +8870,7 @@ local.get $0 i32.const 4 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf if i32.const 0 i32.const 1568 @@ -8725,7 +8882,7 @@ local.get $0 i32.const 5 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 1 i32.ne if @@ -8739,7 +8896,7 @@ local.get $0 i32.const 9 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8753,7 +8910,7 @@ local.get $0 i32.const 10 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8767,7 +8924,7 @@ local.get $0 i32.const 11 i32.const 0 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8781,7 +8938,7 @@ local.get $0 i32.const 5 i32.const 1 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const 1 i32.ne if @@ -8795,7 +8952,7 @@ local.get $0 i32.const 5 i32.const 2 - call $~lib/typedarray/Int8Array#indexOf + call $~lib/typedarray/Uint8Array#indexOf i32.const -1 i32.ne if @@ -8857,10 +9014,9 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $3 @@ -8918,10 +9074,9 @@ i32.const 1 i32.shl i32.add - i32.load16_u + i32.load16_s local.get $1 - i32.const 65535 - i32.and + i32.extend16_s i32.eq br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 local.get $3 @@ -8996,10 +9151,7 @@ i32.const 7024 local.get $1 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $1 i32.const 1 @@ -9395,6 +9547,154 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/typedarray/Uint16Array#indexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + i32.const -1 + local.set $3 + block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $2 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.ge_s + i32.const 1 + local.get $4 + select + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $2 + i32.const 0 + i32.lt_s + if + local.get $2 + local.get $4 + i32.add + local.tee $2 + i32.const 0 + local.get $2 + i32.const 0 + i32.gt_s + select + local.set $2 + end + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + local.get $4 + i32.lt_s + if + local.get $0 + local.get $2 + local.tee $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + br_if $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $3 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $3 + end + local.get $3 + ) + (func $~lib/typedarray/Uint16Array#lastIndexOf (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + i32.const -1 + local.set $3 + block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.tee $4 + i32.eqz + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $2 + local.get $4 + i32.add + local.get $4 + i32.const 1 + i32.sub + local.get $2 + local.get $2 + local.get $4 + i32.ge_s + select + local.get $2 + i32.const 0 + i32.lt_s + select + local.set $2 + local.get $0 + i32.load offset=4 + local.set $0 + loop $while-continue|0 + local.get $2 + i32.const 0 + i32.ge_s + if + local.get $0 + local.get $2 + local.tee $3 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $1 + i32.const 65535 + i32.and + i32.eq + br_if $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + i32.const -1 + local.set $3 + end + local.get $3 + ) + (func $~lib/typedarray/Uint16Array#lastIndexOf@varargs (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + block $1of1 + block $0of1 + block $outOfRange + global.get $~argumentsLength + i32.const 1 + i32.sub + br_table $0of1 $1of1 $outOfRange + end + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 1 + i32.shr_u + local.set $2 + end + local.get $0 + local.get $1 + local.get $2 + call $~lib/typedarray/Uint16Array#lastIndexOf + ) (func $std/typedarray/testArrayIndexOfAndLastIndexOf<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) @@ -9445,7 +9745,7 @@ local.get $0 i32.const 0 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf if i32.const 0 i32.const 1568 @@ -9457,7 +9757,7 @@ local.get $0 i32.const 11 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const -1 i32.ne if @@ -9471,7 +9771,7 @@ local.get $0 i32.const -1 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const -1 i32.ne if @@ -9485,7 +9785,7 @@ local.get $0 i32.const 3 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const 3 i32.ne if @@ -9499,7 +9799,7 @@ local.get $0 i32.const 3 i32.const 2 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const 3 i32.ne if @@ -9513,7 +9813,7 @@ local.get $0 i32.const 3 i32.const 3 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const 3 i32.ne if @@ -9527,7 +9827,7 @@ local.get $0 i32.const 3 i32.const 4 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const -1 i32.ne if @@ -9541,7 +9841,7 @@ local.get $0 i32.const 1 i32.const 10 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const -1 i32.ne if @@ -9555,7 +9855,7 @@ local.get $0 i32.const 1 i32.const -100 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const 1 i32.ne if @@ -9570,7 +9870,7 @@ global.set $~argumentsLength local.get $0 i32.const 0 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs if i32.const 0 i32.const 1568 @@ -9583,7 +9883,7 @@ global.set $~argumentsLength local.get $0 i32.const 11 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -9598,7 +9898,7 @@ global.set $~argumentsLength local.get $0 i32.const -1 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs i32.const -1 i32.ne if @@ -9613,7 +9913,7 @@ global.set $~argumentsLength local.get $0 i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf@varargs + call $~lib/typedarray/Uint16Array#lastIndexOf@varargs i32.const 3 i32.ne if @@ -9627,7 +9927,7 @@ local.get $0 i32.const 3 i32.const 4 - call $~lib/typedarray/Int16Array#lastIndexOf + call $~lib/typedarray/Uint16Array#lastIndexOf i32.const 3 i32.ne if @@ -9641,7 +9941,7 @@ local.get $0 i32.const 3 i32.const 3 - call $~lib/typedarray/Int16Array#lastIndexOf + call $~lib/typedarray/Uint16Array#lastIndexOf i32.const 3 i32.ne if @@ -9655,7 +9955,7 @@ local.get $0 i32.const 3 i32.const 2 - call $~lib/typedarray/Int16Array#lastIndexOf + call $~lib/typedarray/Uint16Array#lastIndexOf i32.const -1 i32.ne if @@ -9669,7 +9969,7 @@ local.get $0 i32.const 1 i32.const 100 - call $~lib/typedarray/Int16Array#lastIndexOf + call $~lib/typedarray/Uint16Array#lastIndexOf i32.const 1 i32.ne if @@ -9683,7 +9983,7 @@ local.get $0 i32.const 1 i32.const -10 - call $~lib/typedarray/Int16Array#lastIndexOf + call $~lib/typedarray/Uint16Array#lastIndexOf i32.const 1 i32.ne if @@ -9697,7 +9997,7 @@ local.get $0 i32.const 1 i32.const -11 - call $~lib/typedarray/Int16Array#lastIndexOf + call $~lib/typedarray/Uint16Array#lastIndexOf i32.const -1 i32.ne if @@ -9717,7 +10017,7 @@ local.get $0 i32.const 3 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const -1 i32.ne if @@ -9731,7 +10031,7 @@ local.get $0 i32.const 4 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf if i32.const 0 i32.const 1568 @@ -9743,7 +10043,7 @@ local.get $0 i32.const 5 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const 1 i32.ne if @@ -9757,7 +10057,7 @@ local.get $0 i32.const 9 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const -1 i32.ne if @@ -9771,7 +10071,7 @@ local.get $0 i32.const 10 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const -1 i32.ne if @@ -9785,7 +10085,7 @@ local.get $0 i32.const 11 i32.const 0 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const -1 i32.ne if @@ -9799,7 +10099,7 @@ local.get $0 i32.const 5 i32.const 1 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const 1 i32.ne if @@ -9813,7 +10113,7 @@ local.get $0 i32.const 5 i32.const 2 - call $~lib/typedarray/Int16Array#indexOf + call $~lib/typedarray/Uint16Array#indexOf i32.const -1 i32.ne if @@ -13359,10 +13659,7 @@ (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.lt_s local.tee $2 @@ -13376,10 +13673,7 @@ local.set $1 end local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.lt_u if @@ -13389,10 +13683,7 @@ i32.shl i32.add local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 48 i32.or i32.store16 @@ -13401,21 +13692,17 @@ i32.add return end - local.get $2 + local.get $0 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $2 + i32.extend8_s + local.get $1 + i32.extend8_s call $~lib/util/number/decimalCount32 - i32.add - local.set $1 - local.get $0 local.get $2 - local.get $1 + i32.add + local.tee $0 call $~lib/util/number/utoa_dec_simple - local.get $1 + local.get $0 ) (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -13566,10 +13853,7 @@ (func $~lib/util/number/itoa_buffered (param $0 i32) (param $1 i32) (result i32) (local $2 i32) local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 0 i32.lt_s local.tee $2 @@ -13583,10 +13867,7 @@ local.set $1 end local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.lt_u if @@ -13596,10 +13877,7 @@ i32.shl i32.add local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 48 i32.or i32.store16 @@ -13608,21 +13886,17 @@ i32.add return end - local.get $2 + local.get $0 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $2 + i32.extend16_s + local.get $1 + i32.extend16_s call $~lib/util/number/decimalCount32 - i32.add - local.set $1 - local.get $0 local.get $2 - local.get $1 + i32.add + local.tee $0 call $~lib/util/number/utoa_dec_simple - local.get $1 + local.get $0 ) (func $~lib/typedarray/Int16Array#join (param $0 i32) (result i32) local.get $0 @@ -16523,34 +16797,22 @@ ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.sub ) (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $1 + i32.extend8_s local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s - local.tee $0 + i32.extend8_s i32.gt_s - local.get $0 local.get $1 - i32.gt_s + i32.extend8_s + local.get $0 + i32.extend8_s + i32.lt_s i32.sub ) (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) @@ -17345,34 +17607,22 @@ ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.sub ) (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $1 + i32.extend16_s local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s - local.tee $0 + i32.extend16_s i32.gt_s - local.get $0 local.get $1 - i32.gt_s + i32.extend16_s + local.get $0 + i32.extend16_s + i32.lt_s i32.sub ) (func $~lib/util/sort/weakHeapSort (param $0 i32) (param $1 i32) (param $2 i32) @@ -23031,13 +23281,11 @@ i32.const 6448 i32.store local.get $0 - i32.const 255 - i32.and + i32.extend8_s i32.const 6448 local.get $1 call $~lib/array/Array#__get - i32.const 255 - i32.and + i32.extend8_s i32.ne if i32.const 0 @@ -23112,10 +23360,7 @@ i32.const 6448 i32.const 0 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 6448 @@ -23125,10 +23370,7 @@ i32.const 6448 i32.const 1 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 6448 @@ -23138,10 +23380,7 @@ i32.const 6448 i32.const 2 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set global.get $~lib/memory/__stack_pointer i32.const 6496 @@ -23191,7 +23430,7 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint8Array,u8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -23204,12 +23443,12 @@ i32.const 6448 i32.store local.get $0 - i32.const 65535 + i32.const 255 i32.and i32.const 6448 local.get $1 call $~lib/array/Array#__get - i32.const 65535 + i32.const 255 i32.and i32.ne if @@ -23251,6 +23490,64 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store + local.get $0 + i32.extend16_s + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i32.extend16_s + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $std/typedarray/testArrayForEach<~lib/typedarray/Int16Array,i16> (local $0 i32) (local $1 i32) @@ -23285,10 +23582,7 @@ i32.const 6448 i32.const 0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 6448 @@ -23298,10 +23592,7 @@ i32.const 6448 i32.const 1 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 6448 @@ -23311,10 +23602,7 @@ i32.const 6448 i32.const 2 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set global.get $~lib/memory/__stack_pointer i32.const 6592 @@ -23368,6 +23656,66 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6448 + i32.store + local.get $0 + i32.const 65535 + i32.and + i32.const 6448 + local.get $1 + call $~lib/array/Array#__get + i32.const 65535 + i32.and + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 513 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.get $std/typedarray/forEachCallCount + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 514 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + local.get $2 + global.get $std/typedarray/forEachSelf + i32.ne + if + i32.const 0 + i32.const 1568 + i32.const 515 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + global.get $std/typedarray/forEachCallCount + i32.const 1 + i32.add + global.set $std/typedarray/forEachCallCount + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $std/typedarray/testArrayForEach<~lib/typedarray/Uint16Array,u16> (local $0 i32) (local $1 i32) @@ -24392,20 +24740,14 @@ i32.const 6912 local.get $0 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $3 local.get $0 i32.const 6912 local.get $0 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 1 @@ -24434,10 +24776,7 @@ local.get $0 i32.sub call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.ne if i32.const 0 @@ -24906,20 +25245,14 @@ i32.const 6912 local.get $0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $3 local.get $0 i32.const 6912 local.get $0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 @@ -24948,10 +25281,7 @@ local.get $0 i32.sub call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.ne if i32.const 0 @@ -27387,10 +27717,7 @@ i32.const 8768 local.get $0 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 1 @@ -27799,10 +28126,7 @@ i32.const 8768 local.get $0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 @@ -37127,8 +37451,7 @@ block $folding-inner1 block $folding-inner0 local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.const 6 i32.ne br_if $folding-inner0 @@ -37286,8 +37609,7 @@ end end local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.const 6 i32.ne br_if $folding-inner0 @@ -38413,8 +38735,7 @@ end end local.get $2 - i32.const 255 - i32.and + i32.extend8_s i32.const 6 i32.ne br_if $folding-inner4 @@ -38572,8 +38893,7 @@ end end local.get $2 - i32.const 65535 - i32.and + i32.extend16_s i32.const 6 i32.ne br_if $folding-inner4 diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 213bf716ee..54283d324f 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -8671,10 +8671,7 @@ ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.gt_s ) @@ -8739,10 +8736,7 @@ ) (func $std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.gt_s ) @@ -8785,10 +8779,7 @@ ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.eq ) @@ -8848,10 +8839,7 @@ ) (func $std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.eq ) @@ -8993,10 +8981,7 @@ ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.eq ) @@ -9056,10 +9041,7 @@ ) (func $std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 0 i32.eq ) @@ -9517,10 +9499,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.eq ) @@ -9580,10 +9559,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 4 i32.eq ) @@ -9725,10 +9701,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.eq ) @@ -9788,10 +9761,7 @@ ) (func $std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 4 i32.eq ) @@ -10249,12 +10219,10 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.rem_s + i32.extend8_s i32.const 0 i32.eq ) @@ -10317,10 +10285,7 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 2 i32.eq ) @@ -10472,12 +10437,10 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.rem_s + i32.extend16_s i32.const 0 i32.eq ) @@ -10540,10 +10503,7 @@ ) (func $std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>~anonymous|1 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 2 i32.eq ) @@ -12819,10 +12779,7 @@ i32.add i32.load8_s local.get $4 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq if local.get $6 @@ -12901,10 +12858,7 @@ i32.add i32.load8_s local.get $4 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq if local.get $6 @@ -12985,10 +12939,7 @@ local.get $0 local.get $3 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $3 i32.const 1 @@ -14835,10 +14786,7 @@ i32.add i32.load16_s local.get $4 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq if local.get $6 @@ -14917,10 +14865,7 @@ i32.add i32.load16_s local.get $4 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq if local.get $6 @@ -15001,10 +14946,7 @@ local.get $0 local.get $3 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $3 i32.const 1 @@ -20736,10 +20678,7 @@ i32.const 1 drop local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 0 i32.lt_s local.set $2 @@ -20764,10 +20703,7 @@ i32.le_u drop local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 10 i32.lt_u if @@ -20777,10 +20713,7 @@ i32.shl i32.add local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 48 i32.or i32.store16 @@ -20797,20 +20730,14 @@ drop local.get $3 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/util/number/decimalCount32 i32.add local.set $3 local.get $0 local.set $6 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.set $5 local.get $3 local.set $4 @@ -21071,10 +20998,7 @@ i32.const 1 drop local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 0 i32.lt_s local.set $2 @@ -21099,10 +21023,7 @@ i32.le_u drop local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 10 i32.lt_u if @@ -21112,10 +21033,7 @@ i32.shl i32.add local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 48 i32.or i32.store16 @@ -21132,20 +21050,14 @@ drop local.get $3 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/util/number/decimalCount32 i32.add local.set $3 local.get $0 local.set $6 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.set $5 local.get $3 local.set $4 @@ -33318,39 +33230,21 @@ ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.sub ) (func $std/typedarray/testArraySort<~lib/typedarray/Int8Array,i8>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.gt_s local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.lt_s i32.sub ) @@ -34429,39 +34323,21 @@ ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.sub ) (func $std/typedarray/testArraySort<~lib/typedarray/Int16Array,i16>~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.gt_s local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.lt_s i32.sub ) @@ -38844,10 +38720,7 @@ call $~lib/typedarray/Int8Array#reduce local.set $1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 6 i32.eq i32.eqz @@ -39023,10 +38896,7 @@ call $~lib/typedarray/Int16Array#reduce local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 6 i32.eq i32.eqz @@ -39485,10 +39355,7 @@ call $~lib/typedarray/Int8Array#reduceRight local.set $1 local.get $1 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.const 6 i32.eq i32.eqz @@ -39664,10 +39531,7 @@ call $~lib/typedarray/Int16Array#reduceRight local.set $1 local.get $1 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.const 6 i32.eq i32.eqz @@ -45034,15 +44898,9 @@ call $~lib/array/Array#__get local.set $3 local.get $0 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s local.get $3 - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -45120,10 +44978,7 @@ local.get $1 i32.const 0 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 1 @@ -45135,10 +44990,7 @@ local.get $1 i32.const 1 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 2 @@ -45150,10 +45002,7 @@ local.get $1 i32.const 2 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $0 i32.const 5472 @@ -45515,15 +45364,9 @@ call $~lib/array/Array#__get local.set $3 local.get $0 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s local.get $3 - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq i32.eqz if @@ -45601,10 +45444,7 @@ local.get $1 i32.const 0 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 1 @@ -45616,10 +45456,7 @@ local.get $1 i32.const 1 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 2 @@ -45631,10 +45468,7 @@ local.get $1 i32.const 2 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $0 i32.const 5568 @@ -46772,20 +46606,14 @@ local.get $0 local.get $4 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $3 local.get $4 local.get $0 local.get $4 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $4 i32.const 1 @@ -46816,10 +46644,7 @@ local.get $4 i32.sub call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s i32.eq i32.eqz if @@ -47345,20 +47170,14 @@ local.get $0 local.get $4 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $3 local.get $4 local.get $0 local.get $4 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $4 i32.const 1 @@ -47389,10 +47208,7 @@ local.get $4 i32.sub call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s i32.eq i32.eqz if @@ -50197,10 +50013,7 @@ local.get $0 local.get $3 call $~lib/array/Array#__get - i32.const 24 - i32.shl - i32.const 24 - i32.shr_s + i32.extend8_s call $~lib/typedarray/Int8Array#__set local.get $3 i32.const 1 @@ -50583,10 +50396,7 @@ local.get $0 local.get $3 call $~lib/array/Array#__get - i32.const 16 - i32.shl - i32.const 16 - i32.shr_s + i32.extend16_s call $~lib/typedarray/Int16Array#__set local.get $3 i32.const 1 From 9438876e11d99eb46d283aeef435cc035506837d Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Tue, 25 May 2021 22:49:39 +0300 Subject: [PATCH 2/4] update asc.json --- cli/asc.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/asc.json b/cli/asc.json index 68ed4aed4b..52b86546bb 100644 --- a/cli/asc.json +++ b/cli/asc.json @@ -209,7 +209,6 @@ "description": [ "Enables WebAssembly features being disabled by default.", "", - " sign-extension Sign-extension operations", " nontrapping-f2i Non-trapping float to integer ops.", " bulk-memory Bulk memory operations.", " simd SIMD types and operations.", @@ -233,6 +232,7 @@ "Disables WebAssembly features being enabled by default.", "", " mutable-globals Mutable global imports and exports.", + " sign-extension Sign-extension operations", "" ], "type": "S", @@ -376,7 +376,7 @@ " ...": { "description": "Specifies node.js options (CLI only). See: node --help" }, - + "-Os": { "value": { "optimize": true, "shrinkLevel": 1 } }, "-Oz": { "value": { "optimize": true, "shrinkLevel": 2 } }, "-O0": { "value": { "optimizeLevel": 0, "shrinkLevel": 0 } }, From 3c1c3f4bcba9c9203fc887c38cb537031cf0d741 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 27 May 2021 10:51:44 +0300 Subject: [PATCH 3/4] upd --- tests/compiler/std/set.optimized.wat | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 1294271955..7485ebeaee 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -7,7 +7,6 @@ (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_=>_none (func (param i32))) - (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (type $i32_i64_=>_none (func (param i32 i64))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (type $i32_i64_i32_=>_i32 (func (param i32 i64 i32) (result i32))) From eea492b0cde1e08a5d32d189e372a2d398b13892 Mon Sep 17 00:00:00 2001 From: MaxGraey Date: Thu, 27 May 2021 11:03:49 +0300 Subject: [PATCH 4/4] remove nl --- cli/asc.json | 1 - 1 file changed, 1 deletion(-) diff --git a/cli/asc.json b/cli/asc.json index 2cc3e35edc..6e97f32ff3 100644 --- a/cli/asc.json +++ b/cli/asc.json @@ -376,7 +376,6 @@ " ...": { "description": "Specifies node.js options (CLI only). See: node --help" }, - "-Os": { "value": { "optimizeLevel": 0, "shrinkLevel": 1 } }, "-Oz": { "value": { "optimizeLevel": 0, "shrinkLevel": 2 } }, "-O0": { "value": { "optimizeLevel": 0, "shrinkLevel": 0 } },